--- linux/drivers/hid/hid-core.c.old 2009-02-07 14:17:49.000000000 +0200 +++ linux/drivers/hid/hid-core.c 2009-02-07 14:22:45.000000000 +0200 @@ -142,6 +142,12 @@ parser->collection_stack[parser->collection_stack_ptr++] = parser->device->maxcollection; + /* Report collections (0x03), Named Array collections (0x04) and Usage + * Switch collections (0x05) are subtypes of logical collections + * according to the HID specification */ + if (type >= 0x03 && type <= 0x05) + type = HID_COLLECTION_LOGICAL; + collection = parser->device->collection + parser->device->maxcollection++; collection->type = type;