loadkmap.c revision 1.6
11.6Stsutsui/* $NetBSD: loadkmap.c,v 1.6 2006/06/27 10:55:16 tsutsui Exp $ */ 21.2Schopps 31.1Smw#include <sys/types.h> 41.1Smw#include <sys/stat.h> 51.1Smw#include <sys/ioctl.h> 61.1Smw#include "../../dev/iteioctl.h" 71.1Smw#include "../../dev/kbdmap.h" 81.1Smw#include <stdio.h> 91.6Stsutsui#include <stdlib.h> 101.1Smw 111.1Smw 121.5Saymericvoid load_kmap(const char *); 131.5Saymericvoid dump_kmap(void); 141.1Smw 151.1Smwint 161.5Saymericmain(int argc, char *argv[]) 171.1Smw{ 181.1Smw if (argc > 2) 191.1Smw { 201.1Smw fprintf (stderr, "%s keymap\n", argv[0]); 211.1Smw exit (1); 221.1Smw } 231.1Smw 241.1Smw if (argc == 1) 251.1Smw dump_kmap (); 261.1Smw else 271.1Smw load_kmap (argv[1]); 281.1Smw 291.1Smw exit (0); 301.1Smw} 311.1Smw 321.1Smw 331.1Smwvoid 341.5Saymericload_kmap(const char *file) 351.1Smw{ 361.1Smw int fd; 371.1Smw char buf[sizeof (struct kbdmap)]; 381.1Smw 391.1Smw if ((fd = open (file, 0)) >= 0) 401.1Smw { 411.1Smw if (read (fd, buf, sizeof (buf)) == sizeof (buf)) 421.1Smw { 431.3Schopps if (ioctl (0, ITEIOCSKMAP, buf) == 0) 441.1Smw return; 451.1Smw else 461.3Schopps perror ("ITEIOCSKMAP"); 471.1Smw } 481.1Smw else 491.1Smw perror ("read kmap"); 501.1Smw 511.1Smw close (fd); 521.1Smw } 531.1Smw else 541.1Smw perror ("open kmap"); 551.1Smw} 561.1Smw 571.1Smwvoid 581.5Saymericdump_kmap(void) 591.1Smw{ 601.1Smw char buf[sizeof (struct kbdmap)]; 611.3Schopps if (ioctl (0, ITEIOCGKMAP, buf) == 0) 621.1Smw write (1, buf, sizeof (buf)); 631.1Smw else 641.3Schopps perror ("ITEIOCGKMAP"); 651.1Smw} 66