Input: sparse-keymap - report scancodes with key events
authorSeth Forshee <seth.forshee@canonical.com>
Sun, 27 Mar 2011 05:53:34 +0000 (22:53 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 29 Mar 2011 06:34:48 +0000 (23:34 -0700)
Scancodes are useful debugging aids when incorrect keycodes
are being sent, as is common with laptop hotkeys.

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/sparse-keymap.c

index 337bf51bc984253abf9a77b558eb36c8c10deb53..74bca5d2f6dc85fdb7f47e1b9a86b5a00162f022 100644 (file)
@@ -208,6 +208,11 @@ int sparse_keymap_setup(struct input_dev *dev,
                }
        }
 
+       if (test_bit(EV_KEY, dev->evbit)) {
+               __set_bit(EV_MSC, dev->evbit);
+               __set_bit(MSC_SCAN, dev->mscbit);
+       }
+
        dev->keycode = map;
        dev->keycodemax = map_size;
        dev->getkeycode = sparse_keymap_getkeycode;
@@ -268,6 +273,7 @@ void sparse_keymap_report_entry(struct input_dev *dev, const struct key_entry *k
 {
        switch (ke->type) {
        case KE_KEY:
+               input_event(dev, EV_MSC, MSC_SCAN, ke->code);
                input_report_key(dev, ke->keycode, value);
                input_sync(dev);
                if (value && autorelease) {