]> err.no Git - systemd/commitdiff
extras/keymap: Fix crash for unknown keys
authorMartin Pitt <martin.pitt@ubuntu.com>
Thu, 23 Jul 2009 17:00:38 +0000 (19:00 +0200)
committerMartin Pitt <martin.pitt@ubuntu.com>
Thu, 23 Jul 2009 17:00:38 +0000 (19:00 +0200)
The keymap table has some holes in it, which caused the interactive mode to
crash for unknown keys. In these cases, print the numeric key code instead.

extras/keymap/keymap.c

index 18e577a3a44cd209becb9531de3f4d19d1bdca7d..117a41dbae594b81ad24051d7e71c94a4c4dbb36 100644 (file)
@@ -258,15 +258,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)