Jiri Kosina schrieb: > On Mon, 13 Apr 2009, Alan Stern wrote: > >>> Item(Global): Usage Page, data= [ 0x0c ] 12 >>> Consumer >>> Item(Local ): Usage, data= [ 0x01 ] 1 >>> Consumer Control >>> Item(Main ): Collection, data= [ 0x01 ] 1 >>> Application >>> Item(Global): Usage Page, data= [ 0x0c ] 12 >>> Consumer >>> Item(Local ): Usage, data= [ 0xe9 ] 233 >>> Volume Increment >>> Item(Global): Usage Page, data= [ 0x0c ] 12 >>> Consumer >>> Item(Local ): Usage, data= [ 0xea ] 234 >>> Volume Decrement >>> Item(Global): Logical Minimum, data= [ 0x00 ] 0 >>> Item(Global): Logical Maximum, data= [ 0x01 ] 1 >>> Item(Global): Report Count, data= [ 0x02 ] 2 >>> Item(Global): Report Size, data= [ 0x01 ] 1 >>> Item(Main ): Input, data= [ 0x42 ] 66 >>> Data Variable Absolute No_Wrap Linear >>> Preferred_State Null_State Non_Volatile Bitfield >>> Item(Global): Report Count, data= [ 0x01 ] 1 >>> Item(Global): Report Size, data= [ 0x06 ] 6 >>> Item(Main ): Input, data= [ 0x01 ] 1 >>> Constant Array Absolute No_Wrap Linear >>> Preferred_State No_Null_Position Non_Volatile Bitfield >>> Item(Main ): End Collection, data=none >> I'm not an expert at HID, but this seems clear enough. The report >> contains two 1-bit items, representing a Volume Increment and a Volume >> Decrement button, plus a 6-bit item which has no meaning and is always >> constant (i.e., padding to bring the total size up to 8 bits). >> That explains why you only see two buttons in the event listing. >> If you want, you can trace the actual operation of the device by using >> usbmon. Instructions are in the kernel source file >> Documentation/usb/usbmon.txt. > > Yes, probably the report descriptor of the device doens't really reflect > what the device is actually sedning in its reports, and this causes events > to be lost. > We already have support for such devices in kernel, sometimes just > run-time patching of the report descriptor before it enters the HID parser > is sufficient. > > You could also try to recompile your kernel with CONFIG_HID_DEBUG (if not > already done), modprobe the 'hid' module with 'debug=2' parameter, and > show me the output that appears in dmesg when you press the non-working > keys. I did that and uploaded the results at http://philipp.wagner.name/temp/speechmike-debug/ The messages-button* files are the dmesg output for one of the keys each. The messages-plug-in.txt is the output when plugging the device in. Is there anything you can see from that data? Philipp -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html