loadkmap.c revision 1.4
11.4Smhitch/* $NetBSD: loadkmap.c,v 1.4 2006/08/04 01:51:31 mhitch Exp $ */ 21.1Sleo 31.1Sleo#include <sys/types.h> 41.1Sleo#include <sys/stat.h> 51.1Sleo#include <sys/ioctl.h> 61.1Sleo#include "../../dev/iteioctl.h" 71.1Sleo#include "../../dev/kbdmap.h" 81.1Sleo#include <stdio.h> 91.4Smhitch#include <stdlib.h> 101.1Sleo 111.1Sleo 121.3Sleoint load_kmap __P((const char *, int)); 131.3Sleoint dump_kmap(); 141.1Sleo 151.1Sleoint 161.1Sleomain(argc, argv) 171.1Sleo int argc; 181.1Sleo char *argv[]; 191.1Sleo{ 201.2Sleo int set_sysmap = 0; 211.2Sleo char *mapfile; 221.3Sleo int rc = 0; 231.1Sleo 241.2Sleo if (argc > 2) { 251.2Sleo if ((argc == 3) && !strcmp(argv[1], "-f")) { 261.2Sleo mapfile = argv[2]; 271.2Sleo set_sysmap = 1; 281.2Sleo } 291.2Sleo else { 301.2Sleo fprintf(stderr, "%s [-f] keymap\n", argv[0]); 311.2Sleo exit(1); 321.2Sleo } 331.2Sleo } 341.2Sleo else mapfile = argv[1]; 351.2Sleo 361.2Sleo if (argc == 1) 371.3Sleo rc = dump_kmap(); 381.3Sleo else rc = load_kmap(mapfile, set_sysmap); 391.2Sleo 401.3Sleo exit (rc); 411.1Sleo} 421.1Sleo 431.1Sleo 441.3Sleoint 451.2Sleoload_kmap(file, set_sysmap) 461.2Sleoconst char *file; 471.2Sleoint set_sysmap; 481.1Sleo{ 491.2Sleo int fd; 501.2Sleo char buf[sizeof (struct kbdmap)]; 511.2Sleo int ioc; 521.2Sleo 531.2Sleo ioc = set_sysmap ? ITEIOCSSKMAP : ITEIOCSKMAP; 541.2Sleo 551.2Sleo if ((fd = open (file, 0)) >= 0) { 561.2Sleo if (read (fd, buf, sizeof (buf)) == sizeof (buf)) { 571.3Sleo if (ioctl (0, ioc, buf) == 0) { 581.3Sleo close(fd); 591.3Sleo return 0; 601.3Sleo } 611.2Sleo else perror("ITEIOCSKMAP"); 621.2Sleo } 631.2Sleo else perror("read kmap"); 641.1Sleo 651.2Sleo close(fd); 661.1Sleo } 671.2Sleo else perror("open kmap"); 681.3Sleo return 1; 691.1Sleo} 701.1Sleo 711.3Sleoint 721.1Sleodump_kmap() 731.1Sleo{ 741.2Sleo char buf[sizeof (struct kbdmap)]; 751.2Sleo 761.3Sleo if (ioctl (0, ITEIOCGKMAP, buf) == 0) { 771.2Sleo write (1, buf, sizeof (buf)); 781.3Sleo return 0; 791.3Sleo } 801.3Sleo perror ("ITEIOCGKMAP"); 811.3Sleo return 1; 821.1Sleo} 83