blob: c72c38d04908bf171559b690eb9b23a64920d656 [file] [log] [blame]
/*
* call: getkeycodes
*
* aeb, 941108
*/
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include "getfd.h"
#include "nls.h"
#include "version.h"
static void
usage(void) {
fprintf(stderr, _("usage: getkeycodes\n"));
exit(1);
}
int
main(int argc, char **argv) {
int fd, sc;
struct kbkeycode a;
set_progname(argv[0]);
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
if (argc == 2 && !strcmp(argv[1], "-V"))
print_version_and_exit();
if (argc != 1)
usage();
fd = getfd(NULL);
printf(_("Plain scancodes xx (hex) versus keycodes (dec)\n"));
printf(_("0 is an error; for 1-88 (0x01-0x58) scancode equals keycode\n"));
for(sc=88; sc<256; sc++) {
if (sc == 128)
printf(_("\n\nEscaped scancodes e0 xx (hex)\n"));
if (sc % 8 == 0) {
if (sc < 128)
printf("\n 0x%02x: ", sc);
else
printf("\ne0 %02x: ", sc-128);
}
if (sc <= 88) {
printf(" %3d", sc);
continue;
}
a.scancode = sc;
a.keycode = 0;
if (ioctl(fd,KDGETKEYCODE,&a)) {
if (errno == EINVAL)
printf(" -");
else {
perror("KDGETKEYCODE");
fprintf(stderr, _("failed to get keycode for scancode 0x%x\n"),
sc);
exit(1);
}
} else
printf(" %3d", a.keycode);
}
printf("\n");
return 0;
}