]> err.no Git - systemd/commitdiff
input_id: Cover key devices which only have KEY_* > 255
authorMartin Pitt <martin.pitt@ubuntu.com>
Fri, 18 Mar 2011 13:45:42 +0000 (14:45 +0100)
committerMartin Pitt <martin.pitt@ubuntu.com>
Fri, 18 Mar 2011 13:45:42 +0000 (14:45 +0100)
We previously only tested the "key" capabilities for keys between 0 and 255 to
determine ID_INPUT_KEY. If there are none, also check for keys in the upper
block (KEY_OK/0x160 to KEY_TOUCHPAD_OFF/0x214).

extras/input_id/input_id.c

index b2d4a6770af5be860de1ce0f1c5b87a97a08e1ce..588ff8992aa6a5522b3067460358d02f8e215be8 100644 (file)
@@ -148,6 +148,17 @@ static void test_key (const unsigned long* bitmask_ev,
                found |= bitmask_key[i];
                DBG("test_key: checking bit block %lu for any keys; found=%i\n", i*BITS_PER_LONG, found > 0);
        }
+       /* If there are no keys in the lower block, check the higher block */
+       if (!found) {
+               for (i = KEY_OK; i < BTN_TRIGGER_HAPPY; ++i) {
+                       if (test_bit (i, bitmask_key)) {
+                               DBG("test_key: Found key %x in high block\n", i);
+                               found = 1;
+                               break;
+                       }
+               }
+       }
+
        if (found > 0)
                puts("ID_INPUT_KEY=1");