10 #include <sys/ioctl.h>
16 static void attr_noreturn
18 fprintf(stderr, _("usage: getkeycodes\n"));
23 main(int argc, char **argv) {
29 set_progname(argv[0]);
31 setlocale(LC_ALL, "");
32 bindtextdomain(PACKAGE_NAME, LOCALEDIR);
33 textdomain(PACKAGE_NAME);
36 if (argc == 2 && !strcmp(argv[1], "-V"))
37 print_version_and_exit();
43 /* Old kernels don't support changing scancodes below SC_LIM. */
46 if (ioctl(fd, KDGETKEYCODE, &a)) {
50 for (sc0 = 1; sc0 <= 88; sc0++) {
53 if (ioctl(fd, KDGETKEYCODE, &a) || a.keycode != sc0)
57 printf(_("Plain scancodes xx (hex) versus keycodes (dec)\n"));
60 printf(_("0 is an error; "
61 "for 1-88 (0x01-0x58) scancode equals keycode\n"));
63 printf(_("for 1-%d (0x01-0x%02x) scancode equals keycode\n"),
67 for (sc = (sc0 & ~7); sc < 256; sc++) {
69 printf(_("\n\nEscaped scancodes e0 xx (hex)\n"));
72 printf("\n 0x%02x: ", sc);
74 printf("\ne0 %02x: ", sc-128);
84 if (ioctl(fd, KDGETKEYCODE, &a) == 0) {
85 printf(" %3d", a.keycode);
88 if (errno == EINVAL) {
92 perror("KDGETKEYCODE");
94 _("failed to get keycode for scancode 0x%x\n"), sc);