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