X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Fkeymap%2Fkeymap.c;h=3f01d1953ea4c0cb09d2f4ed1cc21b43d4308574;hb=ff0e1f4e5d897a0ddbf365e920c0e28a6657abaa;hp=18e577a3a44cd209becb9531de3f4d19d1bdca7d;hpb=d03a6f20df9037b060ed28bac7b7e6b1c94b1be8;p=elogind.git diff --git a/extras/keymap/keymap.c b/extras/keymap/keymap.c index 18e577a3a..3f01d1953 100644 --- a/extras/keymap/keymap.c +++ b/extras/keymap/keymap.c @@ -32,6 +32,7 @@ #include #include #include +#include #include const struct key* lookup_key (const char *str, unsigned int len); @@ -247,7 +248,7 @@ static const char* default_keymap_path(const char* path) { static char result[PATH_MAX]; - /* If keymap file is given without a path, assume udev diretory; must end with '/' * */ + /* If keymap file is given without a path, assume udev directory; must end with '/' * */ if (!strchr(path, '/')) { snprintf(result, sizeof(result), "%s%s", LIBEXECDIR "/keymaps/", path); return result; @@ -258,15 +259,22 @@ static const char* default_keymap_path(const char* path) static void print_key(struct input_event *event) { static int cur_scancode = 0; + const char *keyname; /* save scan code for next EV_KEY event */ if (event->type == EV_MSC && event->code == MSC_SCAN) cur_scancode = event->value; /* key press */ - if (event->type == EV_KEY && event->value) - printf("scan code: 0x%02X key code: %s\n", cur_scancode, - format_keyname(key_names[event->code])); + if (event->type == EV_KEY && event->value) { + keyname = key_names[event->code]; + if (keyname != NULL) + printf("scan code: 0x%02X key code: %s\n", cur_scancode, + format_keyname(key_names[event->code])); + else + printf("scan code: 0x%02X key code: %03X\n", cur_scancode, + event->code); + } } static void interactive(int fd)