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