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