Home | History | Annotate | Line # | Download | only in loadkmap
loadkmap.c revision 1.9
      1  1.9   mhitch /*	$NetBSD: loadkmap.c,v 1.9 2006/08/04 02:30:00 mhitch 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   mhitch __RCSID("$NetBSD: loadkmap.c,v 1.9 2006/08/04 02:30:00 mhitch Exp $");
     10  1.1      oki 
     11  1.1      oki #include <stdio.h>
     12  1.9   mhitch #include <stdlib.h>
     13  1.4  minoura #include <sys/types.h>
     14  1.1      oki #include <sys/ioctl.h>
     15  1.7  minoura #include <machine/kbdmap.h>
     16  1.3  minoura #include <machine/iteioctl.h>
     17  1.1      oki 
     18  1.5    isaki void load_kmap(const char *);
     19  1.1      oki 
     20  1.1      oki int
     21  1.1      oki main(int argc, char *argv[])
     22  1.1      oki {
     23  1.1      oki 
     24  1.5    isaki 	if (argc != 2) {
     25  1.5    isaki 		fprintf(stderr, "Usage: %s kmapfile\n", argv[0]);
     26  1.5    isaki 		exit (1);
     27  1.5    isaki 	}
     28  1.5    isaki 
     29  1.5    isaki 	load_kmap(argv[1]);
     30  1.5    isaki 	exit(0);
     31  1.1      oki }
     32  1.1      oki 
     33  1.1      oki void
     34  1.5    isaki load_kmap(const char *file)
     35  1.1      oki {
     36  1.5    isaki 	unsigned char buf[sizeof(struct kbdmap)];
     37  1.5    isaki 	int fd;
     38  1.1      oki 
     39  1.5    isaki 	if ((fd = open(file, 0)) >= 0) {
     40  1.5    isaki 		if (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
     41  1.5    isaki 			if (ioctl(0, ITEIOCSKMAP, buf) == 0)
     42  1.5    isaki 				return;
     43  1.5    isaki 			else
     44  1.5    isaki 				perror("ITEIOCSKMAP");
     45  1.5    isaki 		} else {
     46  1.5    isaki 			perror("read kbdmap");
     47  1.5    isaki 		}
     48  1.5    isaki 
     49  1.5    isaki 		close (fd);
     50  1.5    isaki 	} else {
     51  1.5    isaki 	    perror("open kbdmap");
     52  1.1      oki 	}
     53  1.1      oki }
     54