How to add support for Macbook Pro (USB) keyboard?
Christoph Langguth
christoph at rosenkeller.org
Sat Jun 20 09:37:41 UTC 2009
Hans Petter Selasky schrieb:
> Hi Christoph!
>
> Rui Paulo has an additional patch for ukbd.c. Can you look at it and verify?
>
> --HPS
>
> <cite>
>
> Here's how it worked:
> http://wiki.freebsd.org/AppleMacbook#head-7eab3730c3bf3d04bdfb0d1d3649eaddf2fed595
>
> If there's any problem with the userland approach, I would like to know.
> If there isn't, please consider removing the kenrel support for the
> eject key.
>
> </cite>
>
Hi all!
I've poked around a bit on my freshly reinstalled system. To make things
short, usbhidctl does not yield anything for the keyboard. I guess the
reason is quite simple:
# kldload uhid
uhid0: <Apple Computer, Inc. IR Receiver, class 0/0, rev 2.00/0.16, addr
2> on usbus5
uhid1: <Touchpad> on usbus5
So the keyboard isn't even recognized by uhid. See the attached file for
some usbconfig device dumps, I can't make a lot of sense of it, but
maybe someone can.
What would one need to do to still make usbhidaction (as an example)
work with this device, so that the "additional keys" like the eject
button and brightness/volume control etc. (mapped onto Fn + the F1-F12
keys) would be reported?
Thanks!
--Chris
-------------- next part --------------
[root@ /usr/src/sys/dev/usb/input]# usbconfig -u 5 -a 2 dump_curr_config_desc
ugen5.2: <IR Receiver Apple Computer, Inc.> at usbus5, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0022
bNumInterfaces = 0x0001
bConfigurationValue = 0x0001
iConfiguration = 0x0001 <Apple Computer, Inc.>
bmAttributes = 0x00a0
bMaxPower = 0x0032
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x0000 <no string>
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x11
RAW dump:
0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x2a,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0082
bmAttributes = 0x0003
wMaxPacketSize = 0x0008
bInterval = 0x000a
bRefresh = 0x0000
bSynchAddress = 0x0000
[root@ /usr/src/sys/dev/usb/input]# usbconfig -u 5 -a 3 dump_curr_config_desc
ugen5.3: <Apple Internal Keyboard / Track Apple, Inc.> at usbus5, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0054
bNumInterfaces = 0x0003
bConfigurationValue = 0x0001
iConfiguration = 0x0000 <no string>
bmAttributes = 0x00a0
bMaxPower = 0x0014
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0001
iInterface = 0x0003 <Apple Internal Keyboard>
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x11
RAW dump:
0x00 | 0x09, 0x21, 0x11, 0x01, 0x0d, 0x01, 0x22, 0x9c,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083
bmAttributes = 0x0003
wMaxPacketSize = 0x000a
bInterval = 0x0008
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x0004 <Touchpad>
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x11
RAW dump:
0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x1b,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0081
bmAttributes = 0x0003
wMaxPacketSize = 0x0040
bInterval = 0x0002
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 2
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0002
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0002
iInterface = 0x0004 <Touchpad>
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x11
RAW dump:
0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x34,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0084
bmAttributes = 0x0003
wMaxPacketSize = 0x0008
bInterval = 0x0008
bRefresh = 0x0000
bSynchAddress = 0x0000
More information about the freebsd-usb
mailing list