On Mar 10, 2008, Darren Kenny wrote: > Karl Rossing wrote: > > Darren Kenny wrote: > >> And to top it off, the [Apple MacBook Pro] built-in keyboard doesn't work > >> in Solaris. > >> > >> With the keyboard, I've no idea where to start. > >> > > Does a USB keyboard work? > > And external USB keyboard works perfectly...
Yep, same here. > The Internal Keyboard / Trackpad combo on the MBP appear to be USB devices > too... Yes. I suspect the MacBook's internal USB keyboard doesn't work because Solaris' USB keyboard driver is using/expecting a more or less hardcoded USB keyboard report format; but the Apple MacBook USB keyboard seems to use a more complicated USB keyboard report format. E.g. it seems that Apple is using "report id" bytes in their keyboard data, but Solaris' usbkbm driver has no code to handle these "report id" bytes. Here are USB report descriptors extracted with "::prtusb -t" from "mdb -k": e usb_mid 2 device 05ac.0231 Apple Internal Keyboard / Trackpad usba_device: 0xd2cd7800 mfg_prod_sn: Apple, Inc. - Apple Internal Keyboard / Trackpad - NULL device, instance #2 (driver name: usb_mid) /pci at 0,0/pci106b,a3 at 1d,2/device at 2 dip: 0xd10aa730 usb_mid_statep: 0xd237a080 usb_mid_errlevel: 0x4 { keyboard, instance #4 (driver name: hid) /pci at 0,0/pci106b,a3 at 1d,2/device at 2/keyboard at 0 dip: 0xd3416e28 hid_statep: 0xd224f740 hid_errlevel: 0x4 usage page ( 0x01 ) usage ( 0x06 ) COLLECTION ( 0x01 ) report id ( 0x01 ) usage page ( 0x07 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x08 ) usage min ( 0xe0 ) usage max ( 0xe7 ) INPUT ( 0x02 ) report id ( 0x01 ) usage page ( 0x07 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report count ( 0x01 ) report size ( 0x08 ) INPUT ( 0x01 ) report id ( 0x01 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report count ( 0x05 ) report size ( 0x01 ) usage page ( 0x08 ) usage min ( 0x01 ) usage max ( 0x05 ) OUTPUT ( 0x02 ) report id ( 0x01 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) usage page ( 0x08 ) report count ( 0x01 ) report size ( 0x03 ) OUTPUT ( 0x01 ) report id ( 0x01 ) report count ( 0x06 ) report size ( 0x08 ) logical minimum ( 0x00 ) logical maximum ( 0xff 0x00 ) usage page ( 0x07 ) usage min ( 0x00 ) usage max ( 0xff ) INPUT ( 0x00 ) report id ( 0x01 ) usage page ( 0x0c ) report size ( 0x01 ) report count ( 0x01 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) usage ( 0xb8 ) INPUT ( 0x02 ) report id ( 0x01 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) usage page ( 0xff ) report size ( 0x07 ) report count ( 0x01 ) usage ( 0x03 ) INPUT ( 0x02 ) END_COLLECTION ( ) report id ( 0x01 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x07 ) report count ( 0x01 ) usage page ( 0x0c ) usage ( 0x01 ) COLLECTION ( 0x01 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) usage ( 0xcd ) INPUT ( 0x02 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) usage ( 0xb3 ) INPUT ( 0x02 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) usage ( 0xb4 ) INPUT ( 0x02 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) usage ( 0xb5 ) INPUT ( 0x02 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) usage ( 0xb6 ) INPUT ( 0x02 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) INPUT ( 0x01 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) INPUT ( 0x01 ) usage page ( 0x0c ) report id ( 0x52 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x01 ) report count ( 0x01 ) INPUT ( 0x01 ) report id ( 0x09 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report size ( 0x08 ) report count ( 0x01 ) usage page ( 0x01 0xff ) usage ( 0x0b ) FEATURE ( 0x02 ) report id ( 0x09 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) usage page ( 0x01 0xff ) report size ( 0x08 ) report count ( 0x02 ) FEATURE ( 0x01 ) END_COLLECTION ( ) input, instance #5 (driver name: hid) /pci at 0,0/pci106b,a3 at 1d,2/device at 2/input at 1 dip: 0xd2b69060 hid_statep: 0xd341ed80 hid_errlevel: 0x4 usage page ( 0x00 0xff ) usage ( 0x01 ) COLLECTION ( 0x03 ) usage page ( 0x00 0xff ) logical minimum ( 0x00 ) logical maximum ( 0xff 0x00 ) report id ( 0x44 ) report size ( 0x08 ) report count ( 0xff 0x01 ) usage ( 0x01 ) INPUT ( 0x00 ) END_COLLECTION ( ) mouse, instance #6 (driver name: hid) /pci at 0,0/pci106b,a3 at 1d,2/device at 2/mouse at 2 dip: 0xd3416a08 hid_statep: 0xd341ec80 hid_errlevel: 0x4 usage page ( 0x01 ) usage ( 0x02 ) COLLECTION ( 0x01 ) usage page ( 0x01 ) usage ( 0x01 ) COLLECTION ( 0x00 ) usage page ( 0x09 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report id ( 0x02 ) report count ( 0x03 ) report size ( 0x01 ) usage min ( 0x01 ) usage max ( 0x03 ) INPUT ( 0x02 ) usage page ( 0x09 ) logical minimum ( 0x00 ) logical maximum ( 0x01 ) report id ( 0x02 ) report count ( 0x01 ) report size ( 0x05 ) INPUT ( 0x01 ) report id ( 0x02 ) usage page ( 0x01 ) logical minimum ( 0x81 ) logical maximum ( 0x7f ) report size ( 0x08 ) report count ( 0x02 ) usage ( 0x30 ) usage ( 0x31 ) INPUT ( 0x06 ) END_COLLECTION ( ) END_COLLECTION ( ) } -- This message posted from opensolaris.org