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