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