1 #include <sys/types.h> 2 #include <sys/stat.h> 3 #include <sys/ioctl.h> 4 #include "../../dev/iteioctl.h" 5 #include "../../dev/kbdmap.h" 6 #include <stdio.h> 7 8 9 void load_kmap __P((const char *)); 10 void dump_kmap(); 11 12 int 13 main(argc, argv) 14 int argc; 15 char *argv[]; 16 { 17 if (argc > 2) 18 { 19 fprintf (stderr, "%s keymap\n", argv[0]); 20 exit (1); 21 } 22 23 if (argc == 1) 24 dump_kmap (); 25 else 26 load_kmap (argv[1]); 27 28 exit (0); 29 } 30 31 32 void 33 load_kmap (file) 34 const char *file; 35 { 36 int fd; 37 char buf[sizeof (struct kbdmap)]; 38 39 if ((fd = open (file, 0)) >= 0) 40 { 41 if (read (fd, buf, sizeof (buf)) == sizeof (buf)) 42 { 43 if (ioctl (0, ITELOADKMAP, buf) == 0) 44 return; 45 else 46 perror ("ITELOADKMAP"); 47 } 48 else 49 perror ("read kmap"); 50 51 close (fd); 52 } 53 else 54 perror ("open kmap"); 55 } 56 57 void 58 dump_kmap() 59 { 60 char buf[sizeof (struct kbdmap)]; 61 if (ioctl (0, ITEGETKMAP, buf) == 0) 62 write (1, buf, sizeof (buf)); 63 else 64 perror ("ITEGETKMAP"); 65 } 66