loadkmap.c revision 1.3
11.2Schopps/*
21.3Schopps *	$Id: loadkmap.c,v 1.3 1994/05/11 19:09:29 chopps Exp $
31.2Schopps */
41.2Schopps
51.1Smw#include <sys/types.h>
61.1Smw#include <sys/stat.h>
71.1Smw#include <sys/ioctl.h>
81.1Smw#include "../../dev/iteioctl.h"
91.1Smw#include "../../dev/kbdmap.h"
101.1Smw#include <stdio.h>
111.1Smw
121.1Smw
131.1Smwvoid load_kmap __P((const char *));
141.1Smwvoid dump_kmap();
151.1Smw
161.1Smwint
171.1Smwmain(argc, argv)
181.1Smw     int argc;
191.1Smw     char *argv[];
201.1Smw{
211.1Smw  if (argc > 2)
221.1Smw    {
231.1Smw      fprintf (stderr, "%s keymap\n", argv[0]);
241.1Smw      exit (1);
251.1Smw    }
261.1Smw
271.1Smw  if (argc == 1)
281.1Smw    dump_kmap ();
291.1Smw  else
301.1Smw    load_kmap (argv[1]);
311.1Smw
321.1Smw  exit (0);
331.1Smw}
341.1Smw
351.1Smw
361.1Smwvoid
371.1Smwload_kmap (file)
381.1Smw     const char *file;
391.1Smw{
401.1Smw  int fd;
411.1Smw  char buf[sizeof (struct kbdmap)];
421.1Smw
431.1Smw  if ((fd = open (file, 0)) >= 0)
441.1Smw    {
451.1Smw      if (read (fd, buf, sizeof (buf)) == sizeof (buf))
461.1Smw	{
471.3Schopps	  if (ioctl (0, ITEIOCSKMAP, buf) == 0)
481.1Smw	    return;
491.1Smw	  else
501.3Schopps	    perror ("ITEIOCSKMAP");
511.1Smw	}
521.1Smw      else
531.1Smw	perror ("read kmap");
541.1Smw
551.1Smw      close (fd);
561.1Smw    }
571.1Smw  else
581.1Smw    perror ("open kmap");
591.1Smw}
601.1Smw
611.1Smwvoid
621.1Smwdump_kmap()
631.1Smw{
641.1Smw  char buf[sizeof (struct kbdmap)];
651.3Schopps  if (ioctl (0, ITEIOCGKMAP, buf) == 0)
661.1Smw    write (1, buf, sizeof (buf));
671.1Smw  else
681.3Schopps    perror ("ITEIOCGKMAP");
691.1Smw}
70