loadkmap.c revision 1.5
1/*	$NetBSD: loadkmap.c,v 1.5 2002/01/26 13:21:12 aymeric Exp $	*/
2
3#include <sys/types.h>
4#include <sys/stat.h>
5#include <sys/ioctl.h>
6#include "../../dev/iteioctl.h"
7#include "../../dev/kbdmap.h"
8#include <stdio.h>
9
10
11void load_kmap(const char *);
12void dump_kmap(void);
13
14int
15main(int argc, 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(const char *file)
34{
35  int fd;
36  char buf[sizeof (struct kbdmap)];
37
38  if ((fd = open (file, 0)) >= 0)
39    {
40      if (read (fd, buf, sizeof (buf)) == sizeof (buf))
41	{
42	  if (ioctl (0, ITEIOCSKMAP, buf) == 0)
43	    return;
44	  else
45	    perror ("ITEIOCSKMAP");
46	}
47      else
48	perror ("read kmap");
49
50      close (fd);
51    }
52  else
53    perror ("open kmap");
54}
55
56void
57dump_kmap(void)
58{
59  char buf[sizeof (struct kbdmap)];
60  if (ioctl (0, ITEIOCGKMAP, buf) == 0)
61    write (1, buf, sizeof (buf));
62  else
63    perror ("ITEIOCGKMAP");
64}
65