Date: Thu, 05 Mar 2020 01:24:53 +0000 From: bugzilla-noreply@freebsd.org To: usb@FreeBSD.org Subject: [Bug 244602] Media key support for WASD keyboard Message-ID: <bug-244602-19105@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D244602 Bug ID: 244602 Summary: Media key support for WASD keyboard Product: Base System Version: 12.1-STABLE Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: usb Assignee: usb@FreeBSD.org Reporter: henry.hu.sh@gmail.com There are media keys on the WASD keyboard (https://www.wasdkeyboards.com/). However, they are not recognized by FreeBSD. Pressing them does not result = in any keyboard event in X. The keyboard shows 2 interfaces: Configuration index 0 bLength =3D 0x0009=20 bDescriptorType =3D 0x0002=20 wTotalLength =3D 0x003b=20 bNumInterfaces =3D 0x0002=20 bConfigurationValue =3D 0x0001=20 iConfiguration =3D 0x0000 <no string> bmAttributes =3D 0x00a0=20 bMaxPower =3D 0x0032=20 Interface 0 bLength =3D 0x0009=20 bDescriptorType =3D 0x0004=20 bInterfaceNumber =3D 0x0000=20 bAlternateSetting =3D 0x0000=20 bNumEndpoints =3D 0x0001=20 bInterfaceClass =3D 0x0003 <HID device> bInterfaceSubClass =3D 0x0001=20 bInterfaceProtocol =3D 0x0001=20 iInterface =3D 0x0000 <no string> Additional Descriptor bLength =3D 0x09 bDescriptorType =3D 0x21 bDescriptorSubType =3D 0x10 RAW dump:=20 0x00 | 0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, 0x3e,=20 0x08 | 0x00 Endpoint 0 bLength =3D 0x0007=20 bDescriptorType =3D 0x0005=20 bEndpointAddress =3D 0x0081 <IN> bmAttributes =3D 0x0003 <INTERRUPT> wMaxPacketSize =3D 0x0008=20 bInterval =3D 0x000a=20 bRefresh =3D 0x0000=20 bSynchAddress =3D 0x0000=20 Interface 1 bLength =3D 0x0009=20 bDescriptorType =3D 0x0004=20 bInterfaceNumber =3D 0x0001=20 bAlternateSetting =3D 0x0000=20 bNumEndpoints =3D 0x0001=20 bInterfaceClass =3D 0x0003 <HID device> bInterfaceSubClass =3D 0x0001=20 bInterfaceProtocol =3D 0x0002=20 iInterface =3D 0x0000 <no string> Additional Descriptor bLength =3D 0x09 bDescriptorType =3D 0x21 bDescriptorSubType =3D 0x10 RAW dump:=20 0x00 | 0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, 0xa6,=20 0x08 | 0x00 Endpoint 0 bLength =3D 0x0007=20 bDescriptorType =3D 0x0005=20 bEndpointAddress =3D 0x0082 <IN> bmAttributes =3D 0x0003 <INTERRUPT> wMaxPacketSize =3D 0x0008=20 bInterval =3D 0x000a=20 bRefresh =3D 0x0000=20 bSynchAddress =3D 0x0000=20 ukbd attaches to interface 0, and ums attaches to interface 1. Interface 0's HID report descriptor is a general one: 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x06, // Usage (Keyboard) 0xA1, 0x01, // Collection (Application) 0x05, 0x07, // Usage Page (Kbrd/Keypad) // Control/Alt etc. 0x19, 0xE0, // Usage Minimum (0xE0) 0x29, 0xE7, // Usage Maximum (0xE7) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x08, // Report Count (8) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,= No Null Position) // Padding 0x95, 0x01, // Report Count (1) 0x75, 0x08, // Report Size (8) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) // LEDs 0x95, 0x03, // Report Count (3) 0x75, 0x01, // Report Size (1) 0x05, 0x08, // Usage Page (LEDs) 0x19, 0x01, // Usage Minimum (Num Lock) 0x29, 0x03, // Usage Maximum (Scroll Lock) 0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State= ,No Null Position,Non-volatile) // Padding 0x95, 0x05, // Report Count (5) 0x75, 0x01, // Report Size (1) 0x91, 0x01, // Output (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) // Key array 0x95, 0x06, // Report Count (6) 0x75, 0x08, // Report Size (8) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x05, 0x07, // Usage Page (Kbrd/Keypad) 0x19, 0x00, // Usage Minimum (0x00) 0x29, 0x91, // Usage Maximum (0x91) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred Stat= e,No Null Position) 0xC0, // End Collection // 62 bytes The interesting keys are in the interface 1: Report descriptor: Collection type=3DApplication page=3DConsumer usage=3DConsumer_Control Input rid=3D1 pos=3D0 size=3D1 count=3D1 page=3DConsumer usage=3DHelp, lo= gical range 0..1 Input rid=3D1 pos=3D1 size=3D1 count=3D1 page=3DConsumer usage=3DMute, lo= gical range 0..1 Input rid=3D1 pos=3D2 size=3D1 count=3D1 page=3DConsumer usage=3DVolume_D= ecrement, logical range 0..1 Input rid=3D1 pos=3D3 size=3D1 count=3D1 page=3DConsumer usage=3DVolume_I= ncrement, logical range 0..1 Input rid=3D1 pos=3D4 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Word_= Processor, logical range 0..1 Input rid=3D1 pos=3D5 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Sprea= dsheet, logical range 0..1 Input rid=3D1 pos=3D6 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Email= _Reader, logical range 0..1 Input rid=3D1 pos=3D7 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Calen= dar/Schedule, logical range 0..1 Input rid=3D1 pos=3D8 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Calcu= lator, logical range 0..1 Input rid=3D1 pos=3D9 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Logof= f, logical range 0..1 Input rid=3D1 pos=3D10 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Next_Task/Application, logical range 0..1 Input rid=3D1 pos=3D11 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Previous_Task/Application, logical range 0..1 Input rid=3D1 pos=3D12 size=3D1 count=3D1 page=3DConsumer usage=3D0x029e,= logical range 0..1 Input rid=3D1 pos=3D13 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Spel= l_Check, logical range 0..1 Input rid=3D1 pos=3D14 size=3D1 count=3D1 page=3DConsumer usage=3DAL_File= _Browser, logical range 0..1 Input rid=3D1 pos=3D15 size=3D1 count=3D1 page=3DConsumer usage=3DAC_New,= logical range 0..1 Input rid=3D1 pos=3D16 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Open= , logical range 0..1 Input rid=3D1 pos=3D17 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Clos= e, logical range 0..1 Input rid=3D1 pos=3D18 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Save= , logical range 0..1 Input rid=3D1 pos=3D19 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Prin= t, logical range 0..1 Input rid=3D1 pos=3D20 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Undo= , logical range 0..1 Input rid=3D1 pos=3D21 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Copy= , logical range 0..1 Input rid=3D1 pos=3D22 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Cut,= logical range 0..1 Input rid=3D1 pos=3D23 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Past= e, logical range 0..1 Input rid=3D1 pos=3D24 size=3D1 count=3D1 page=3DConsumer usage=3D0x029d,= logical range 0..1 Input rid=3D1 pos=3D25 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Home= , logical range 0..1 Input rid=3D1 pos=3D26 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Back= , logical range 0..1 Input rid=3D1 pos=3D27 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Forw= ard, logical range 0..1 Input rid=3D1 pos=3D28 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Redo= /Repeat, logical range 0..1 Input rid=3D1 pos=3D29 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Repl= y, logical range 0..1 Input rid=3D1 pos=3D30 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Forw= ard_Msg, logical range 0..1 Input rid=3D1 pos=3D31 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Send= , logical range 0..1 Input rid=3D1 pos=3D32 size=3D1 count=3D1 page=3DConsumer usage=3DScan_Ne= xt_Track, logical range 0..1 Input rid=3D1 pos=3D33 size=3D1 count=3D1 page=3DConsumer usage=3DScan_Pr= evious_Track, logical range 0..1 Input rid=3D1 pos=3D34 size=3D1 count=3D1 page=3DConsumer usage=3DStop, l= ogical range 0..1 Input rid=3D1 pos=3D35 size=3D1 count=3D1 page=3DConsumer usage=3DPlay/Pa= use, logical range 0..1 Input rid=3D1 pos=3D36 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Consumer_Control_Configuration, logical range 0..1 Input rid=3D1 pos=3D37 size=3D1 count=3D1 page=3DConsumer usage=3DAL_Local_Machine_Browser, logical range 0..1 Input rid=3D1 pos=3D38 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Sear= ch, logical range 0..1 Input rid=3D1 pos=3D39 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Stop= , logical range 0..1 Input rid=3D1 pos=3D40 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Refr= esh, logical range 0..1 Input rid=3D1 pos=3D41 size=3D1 count=3D1 page=3DConsumer usage=3DAC_Book= marks, logical range 0..1 End collection Collection type=3DApplication page=3DGeneric_Desktop usage=3DSystem_Control Input rid=3D2 pos=3D0 size=3D1 count=3D1 page=3DGeneric_Desktop usage=3DSystem_Power_Down, logical range 0..1 Input rid=3D2 pos=3D1 size=3D1 count=3D1 page=3DGeneric_Desktop usage=3DS= ystem_Sleep, logical range 0..1 Input rid=3D2 pos=3D2 size=3D1 count=3D1 page=3DGeneric_Desktop usage=3DS= ystem_Wake_Up, logical range 0..1 End collection Total input size 7 bytes Total output size 0 bytes Total feature size 0 bytes (detached ums driver by adding UQ_UMS_IGNORE, then dump using usbhidctl -r) So at least ums should not attach to it, and possibly ukbd or something else should attach to it and handle consumer page. --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-244602-19105>