Changes between Initial Version and Version 9 of Ticket #16647
- Timestamp:
- Dec 9, 2020, 5:13:22 PM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #16647
- Property Cc added
- Property Component Drivers/USB → Drivers/Input/USB-HID
- Property Keywords usb_hid removed
- Property Owner changed from to
-
Ticket #16647 – Description
initial v9 1 1 So it seems that some usb keyboards are not working on Haiku because they send keystroke reports using a bitmap instead of the more common way of using arrays. Perhaps, I should have opened a bug ticket with this... Instead, I have ended trying to fix myself, and I almost done, but I am blocked by a bug. 2 2 3 The report descriptor, from what I understand, defines a 8 bit constant padding and a 112 bit with current keystroke status. Whenever I press key ''A'', with usage 0x04, I get an ''I'', with usage 0x0C, and so on with ''B,C,D,...'' So it seems that padding is not being honored. 3 ~~The report descriptor, from what I understand, defines a 8 bit constant padding and a 112 bit with current keystroke status. Whenever I press key ''A'', with usage 0x04, I get an ''I'', with usage 0x0C, and so on with ''B,C,D,...'' So it seems that padding is not being honored.~~ 4 4 5 5 **disclaimer:** I am not a usb hid guru and I may have done some wrong assumptions 6 7 **Correct explanation** 8 9 The report defines two successive usage pages (E0 to E7 and then 00 to 67). The HID spec says these should each consume the corresponding number of bits from the report, but our parser instead erases the values from the first usage page with the values from the second one. 10 11 This results in all key sending incorrect key codes. The key that should be E0 is now 00, E1 is 01, ... E7 is 07, and then 00 becomes 08. 12 13 Our HID parser must be adjusted to handle multiple usage ranges and correctly assign the keycodes.