--- net/bluetooth/hidp/core.c.old 2005-01-20 00:08:05.000000000 +0200 +++ net/bluetooth/hidp/core.c 2005-01-20 00:32:18.000000000 +0200 @@ -175,6 +175,15 @@ for (i = 0; i < 8; i++) input_report_key(dev, hidp_keycode[i + 224], (udata[0] >> i) & 1); + /* If all the key codes have been set to 0x01, it means + * too many keys were pressed at the same time */ + for (i = 2; i < 8; i++) { + if (udata[i] != 0x01) + break; + } + if (i == 8) + break; + for (i = 2; i < 8; i++) { if (keys[i] > 3 && memscan(udata + 2, keys[i], 6) == udata + 8) { if (hidp_keycode[keys[i]])