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