summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Forshee <seth.forshee@canonical.com>2011-03-24 16:33:54 +0100
committerMartin Pitt <martin.pitt@ubuntu.com>2011-03-24 16:33:54 +0100
commit641842bce295ec17cca52d34cfaa6765e097bb18 (patch)
tree108cf11b5dbfd5fae24fc95c8cc848ef54198bad
parent864fde8a087c0edbc0ee3aca83f9289fc32cfcee (diff)
keymap: continue reading keymap after invalid scancodes
Reading of keymaps is aborted when EINVAL is returned from EVIOCGETKEYCODE. Scan codes are not always continuous ranges of values starting at 0, so this can result in not getting the full keymap for a device. Instead, continue processing if EINVAL is returned.
-rw-r--r--extras/keymap/keymap.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/extras/keymap/keymap.c b/extras/keymap/keymap.c
index 719c30e600..eabd1e44d8 100644
--- a/extras/keymap/keymap.c
+++ b/extras/keymap/keymap.c
@@ -141,8 +141,9 @@ static int dump_table(int fd) {
int keycode;
if ((keycode = evdev_get_keycode(fd, scancode, 1)) < 0) {
- if (keycode != -2)
- r = -1;
+ if (keycode == -2)
+ continue;
+ r = -1;
break;
}