[haiku-development] Re: magic keyboard driver

  • From: Jérôme Duval <korli@xxxxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Fri, 20 Aug 2010 11:25:13 +0200

2010/8/19 Michael Lüftenegger <mlueft@xxxxxxxxx>:
>> Could you put online the hid reports for these devices you'll find in
>> /tmp/ (in a bug report in Trac for instance) ? A developer might have
>> a look to them then and check if they are badly handled or if they
>> need a quirk.
>
>
> Thanks for the offer. you can download the file with the link below:
>
> www.lueftenegger.at/files/haiku_hid.zip
>
> There are three files because the keyboard has a usb-hub integrated too.
>

Please find below their parsed forms. You can find more information in
HID1_11.pdf and Hut1_12.pdf
Did you have a look at the usb_hid implementation in Haiku ? In
src/add-ons/kernel/drivers/input/usb_hid/KeyboardDevice.cpp you'll
find what is done with such reports.

Anyway I suggest you open a bug report on Trac.

Bye,
Jérôme

for c221_0 (the standard keyboard)

Usage Page (Desktop),               ; Generic desktop controls (01h)
Usage (Keyboard),                   ; Keyboard (06h, application collection)
Collection (Application),
    Usage Page (Keyboard),          ; Keyboard/keypad (07h)
    Usage Minimum (KB Leftcontrol), ; Keyboard left control (E0h, dynamic value)
    Usage Maximum (KB Right GUI),   ; Keyboard right GUI (E7h, dynamic value)
    Logical Minimum (0),
    Logical Maximum (1),
    Report Size (1),
    Report Count (8),
    Input (Variable),
    Report Count (1),
    Report Size (8),
    Input (Constant),
    Report Count (5),
    Report Size (1),
    Usage Page (LED),               ; LEDs (08h)
    Usage Minimum (01h),
    Usage Maximum (05h),
    Output (Variable),
    Report Count (1),
    Report Size (3),
    Output (Constant),
    Report Count (6),
    Report Size (8),
    Logical Minimum (0),
    Logical Maximum (151),
    Usage Page (Keyboard),          ; Keyboard/keypad (07h)
    Usage Minimum (None),           ; No event (00h, selector)
    Usage Maximum (KB LANG8),       ; Keyboard LANG8 (97h, selector)
    Input,
End Collection

for c221_1 (Report ID1 : one byte size, 7 bits used media keys, other
are vendor defined)

Usage Page (Consumer),              ; Consumer (0Ch)
Usage (Consumer Control),           ; Consumer control (01h,
application collection)
Collection (Application),
    Report ID (1),
    Usage Page (Consumer),          ; Consumer (0Ch)
    Logical Minimum (0),
    Logical Maximum (1),
    Report Size (1),
    Report Count (7),
    Usage (Scan Next Track),        ; Scan next track (B5h, one-shot control)
    Usage (Scan Previous Track),    ; Scan previous track (B6h,
one-shot control)
    Usage (Stop),                   ; Stop (B7h, one-shot control)
    Usage (Play Pause),             ; Play/pause (CDh, one-shot control)
    Usage (Mute),                   ; Mute (E2h, on/off control)
    Usage (Volume Inc),             ; Volume increment (E9h, re-trigger control)
    Usage (Volume Dec),             ; Volume decrement (EAh, re-trigger control)
    Input (Variable),
    Report Count (1),
    Input (Constant),
End Collection,
Usage Page (FF00h),                 ; FF00h, vendor-defined
Usage (01h),
Collection (Application),
    Usage Page (FF00h),             ; FF00h, vendor-defined
    Usage (01h),
    Logical Maximum (255),
    Report Size (8),
    Report Count (7),
    Report ID (2),
    Input (Variable),
    Report Count (1),
    Usage (02h),
    Report ID (3),
    Input (Variable),
    Usage (03h),
    Feature (Variable),
    Usage (0Fh),
    Report Count (20),
    Output (Variable),
End Collection

for c225_0 (Report ID1: 8 bytes, note the usage keypad which denotes
an additional pad).

Usage Page (Desktop),               ; Generic desktop controls (01h)
Usage (Keypad),                     ; Keypad (07h, application collection)
Collection (Application),
    Usage Page (Keyboard),          ; Keyboard/keypad (07h)
    Usage Minimum (None),           ; No event (00h, selector)
    Usage Maximum (KB Right GUI),   ; Keyboard right GUI (E7h, dynamic value)
    Logical Minimum (0),
    Logical Maximum (231),
    Report Size (8),
    Report Count (8),
    Report ID (1),
    Input,
End Collection,
Usage Page (FF00h),                 ; FF00h, vendor-defined
Usage (00h),
Collection (Application),
    Usage Page (FF00h),             ; FF00h, vendor-defined
    Usage (02h),
    Report ID (2),
    Usage Page (FF00h),             ; FF00h, vendor-defined
    Usage (03h),
    Logical Maximum (255),
    Input (Variable),
    Usage (04h),
    Report Count (3),
    Feature (Variable),
    Usage (05h),
    Report Count (18),
    Output (Variable),
End Collection

Other related posts: