diff options
author | Martin Pitt <martin.pitt@ubuntu.com> | 2011-03-18 14:45:42 +0100 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2011-03-18 14:45:42 +0100 |
commit | 792479aca54d266430c900f90557ea8d0da2c125 (patch) | |
tree | 827be31c842a32602bf09bd0b5f2c15b489f81b9 /extras/input_id/input_id.c | |
parent | 88149f668ea7ac23c61f6d1982db4f4517da763c (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).
Diffstat (limited to 'extras/input_id/input_id.c')
-rw-r--r-- | extras/input_id/input_id.c | 11 |
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"); |