diff options
author | Seth Forshee <seth.forshee@canonical.com> | 2011-03-24 16:33:54 +0100 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2011-03-24 16:33:54 +0100 |
commit | 641842bce295ec17cca52d34cfaa6765e097bb18 (patch) | |
tree | 108cf11b5dbfd5fae24fc95c8cc848ef54198bad | |
parent | 864fde8a087c0edbc0ee3aca83f9289fc32cfcee (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.c | 5 |
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; } |