Home | History | Annotate | Line # | Download | only in loadkmap
      1  1.11    isaki /*	$NetBSD: loadkmap.c,v 1.11 2024/01/07 07:58:34 isaki 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.6    lukem 
      8   1.6    lukem #include <sys/cdefs.h>
      9  1.11    isaki __RCSID("$NetBSD: loadkmap.c,v 1.11 2024/01/07 07:58:34 isaki Exp $");
     10   1.1      oki 
     11   1.1      oki #include <stdio.h>
     12   1.9   mhitch #include <stdlib.h>
     13  1.10  tsutsui #include <unistd.h>
     14  1.10  tsutsui #include <fcntl.h>
     15   1.4  minoura #include <sys/types.h>
     16   1.1      oki #include <sys/ioctl.h>
     17   1.7  minoura #include <machine/kbdmap.h>
     18   1.3  minoura #include <machine/iteioctl.h>
     19   1.1      oki 
     20   1.5    isaki void load_kmap(const char *);
     21   1.1      oki 
     22   1.1      oki int
     23   1.1      oki main(int argc, char *argv[])
     24   1.1      oki {
     25   1.1      oki 
     26   1.5    isaki 	if (argc != 2) {
     27   1.5    isaki 		fprintf(stderr, "Usage: %s kmapfile\n", argv[0]);
     28   1.5    isaki 		exit (1);
     29   1.5    isaki 	}
     30   1.5    isaki 
     31   1.5    isaki 	load_kmap(argv[1]);
     32   1.5    isaki 	exit(0);
     33   1.1      oki }
     34   1.1      oki 
     35   1.1      oki void
     36   1.5    isaki load_kmap(const char *file)
     37   1.1      oki {
     38   1.5    isaki 	unsigned char buf[sizeof(struct kbdmap)];
     39   1.5    isaki 	int fd;
     40   1.1      oki 
     41   1.5    isaki 	if ((fd = open(file, 0)) >= 0) {
     42   1.5    isaki 		if (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
     43   1.5    isaki 			if (ioctl(0, ITEIOCSKMAP, buf) == 0)
     44   1.5    isaki 				return;
     45   1.5    isaki 			else
     46   1.5    isaki 				perror("ITEIOCSKMAP");
     47   1.5    isaki 		} else {
     48   1.5    isaki 			perror("read kbdmap");
     49   1.5    isaki 		}
     50   1.5    isaki 
     51   1.5    isaki 		close (fd);
     52   1.5    isaki 	} else {
     53  1.11    isaki 		perror("open kbdmap");
     54   1.1      oki 	}
     55   1.1      oki }
     56