Home | History | Annotate | Line # | Download | only in loadkmap
loadkmap.c revision 1.9.90.1
      1  1.9.90.1   jruoho /*	$NetBSD: loadkmap.c,v 1.9.90.1 2011/06/06 09:07:04 jruoho Exp $	*/
      2       1.1      oki /*
      3       1.1      oki  * loadkmap - load keyboard map (for NetBSD/X680x0)
      4       1.1      oki  * from: amiga/stand/loadkmap/loadkmap.c
      5       1.1      oki  * Copyright 1994 by Masaru Oki
      6       1.1      oki  */
      7       1.6    lukem 
      8       1.6    lukem #include <sys/cdefs.h>
      9  1.9.90.1   jruoho __RCSID("$NetBSD: loadkmap.c,v 1.9.90.1 2011/06/06 09:07:04 jruoho Exp $");
     10       1.1      oki 
     11       1.1      oki #include <stdio.h>
     12       1.9   mhitch #include <stdlib.h>
     13  1.9.90.1   jruoho #include <unistd.h>
     14  1.9.90.1   jruoho #include <fcntl.h>
     15       1.4  minoura #include <sys/types.h>
     16       1.1      oki #include <sys/ioctl.h>
     17       1.7  minoura #include <machine/kbdmap.h>
     18       1.3  minoura #include <machine/iteioctl.h>
     19       1.1      oki 
     20       1.5    isaki void load_kmap(const char *);
     21       1.1      oki 
     22       1.1      oki int
     23       1.1      oki main(int argc, char *argv[])
     24       1.1      oki {
     25       1.1      oki 
     26       1.5    isaki 	if (argc != 2) {
     27       1.5    isaki 		fprintf(stderr, "Usage: %s kmapfile\n", argv[0]);
     28       1.5    isaki 		exit (1);
     29       1.5    isaki 	}
     30       1.5    isaki 
     31       1.5    isaki 	load_kmap(argv[1]);
     32       1.5    isaki 	exit(0);
     33       1.1      oki }
     34       1.1      oki 
     35       1.1      oki void
     36       1.5    isaki load_kmap(const char *file)
     37       1.1      oki {
     38       1.5    isaki 	unsigned char buf[sizeof(struct kbdmap)];
     39       1.5    isaki 	int fd;
     40       1.1      oki 
     41       1.5    isaki 	if ((fd = open(file, 0)) >= 0) {
     42       1.5    isaki 		if (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
     43       1.5    isaki 			if (ioctl(0, ITEIOCSKMAP, buf) == 0)
     44       1.5    isaki 				return;
     45       1.5    isaki 			else
     46       1.5    isaki 				perror("ITEIOCSKMAP");
     47       1.5    isaki 		} else {
     48       1.5    isaki 			perror("read kbdmap");
     49       1.5    isaki 		}
     50       1.5    isaki 
     51       1.5    isaki 		close (fd);
     52       1.5    isaki 	} else {
     53       1.5    isaki 	    perror("open kbdmap");
     54       1.1      oki 	}
     55       1.1      oki }
     56