loadkmap.c revision 1.1
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
9void load_kmap __P((const char *));
10void dump_kmap();
11
12int
13main(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
32void
33load_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
57void
58dump_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