1 /*        $NetBSD: loadkmap.c,v 1.11 2024/01/07 07:58:34 isaki 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.11 2024/01/07 07:58:34 isaki Exp $");
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <unistd.h>
14 #include <fcntl.h>
15 #include <sys/types.h>
16 #include <sys/ioctl.h>
17 #include <machine/kbdmap.h>
18 #include <machine/iteioctl.h>
19 
20 void load_kmap(const char *);
21 
22 int
main(int argc,char * argv[])23 main(int argc, char *argv[])
24 {
25 
26           if (argc != 2) {
27                     fprintf(stderr, "Usage: %s kmapfile\n", argv[0]);
28                     exit (1);
29           }
30 
31           load_kmap(argv[1]);
32           exit(0);
33 }
34 
35 void
load_kmap(const char * file)36 load_kmap(const char *file)
37 {
38           unsigned char buf[sizeof(struct kbdmap)];
39           int fd;
40 
41           if ((fd = open(file, 0)) >= 0) {
42                     if (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
43                               if (ioctl(0, ITEIOCSKMAP, buf) == 0)
44                                         return;
45                               else
46                                         perror("ITEIOCSKMAP");
47                     } else {
48                               perror("read kbdmap");
49                     }
50 
51                     close (fd);
52           } else {
53                     perror("open kbdmap");
54           }
55 }
56