summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Pitt <martin.pitt@ubuntu.com>2011-03-18 14:45:42 +0100
committerMartin Pitt <martin.pitt@ubuntu.com>2011-03-18 14:45:42 +0100
commit792479aca54d266430c900f90557ea8d0da2c125 (patch)
tree827be31c842a32602bf09bd0b5f2c15b489f81b9
parent88149f668ea7ac23c61f6d1982db4f4517da763c (diff)
input_id: Cover key devices which only have KEY_* > 255
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).
-rw-r--r--extras/input_id/input_id.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/extras/input_id/input_id.c b/extras/input_id/input_id.c
index b2d4a6770a..588ff8992a 100644
--- a/extras/input_id/input_id.c
+++ b/extras/input_id/input_id.c
@@ -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");