There's no legacy ISA support either.  Windows XP's 7 year old HID works
fine with the keyboards, while I have nothing but problems with Solaris
because the implementation clearly thinks for itself and has limited
range of design.  X11 should support HID just fine, it handles tons of
input devices and locales, not sure why X.modern org can't.  I see a
limited but good deal of success with modified kernel input drivers in
the linux camps for MacBook Pros.

The MacBook Pro keyboard (Revision 3, June 2007) works with basic
functionality, and things are broke because the compact design makes use
of meta function keys which Solaris does not support.  External
keyboards work.  External mice are a better option at the moment as
well.

Coming from user experience and not technical studies, basic input
functionality works with the onboard devices, while everything else is
pretty well supported, such as NVIDIA graphics and things related to
Intel chipsets (Suspend/Resume I suspect could work).  Atheros and Yukon
ethernet which unfortunately still require a brandead manual install
using a pendrive work too.  The latest iterations supposedly use
Broadcom but nothing else should had changed.  As for the play school
cheapo MacBook and its sticky flat pebble buttons it's not really a good
platform for any "real" work anyway.

James

On Thu, 2008-07-10 at 09:47 -0700, Garrett D'Amore wrote:
> I believe that Solaris uses keyboards (and maybe mice too) in what is
> called "BOOT Protocol" mode.  This is a simplistic report format that
> was originally intended to allow simple translation to BIOS-compatible
> keyboard support.  (I.e. so you don't have to have a full HID parser
> in your BIOS or other embedded environments if you only want basic
> keyboard/mouse support.)
> 
> Apple doesn't have BIOS, and I *suspect* doesn't support the BOOT
> protocol in their latest products.  Having a full HID parser would
> probably solve the problem.  That might be difficult to get into
> something the likes of GRUB....
> 
> A question: do the keyboard/mouse work in X11 after the system has
> booted (assuming you used an external keyboard to get that far)?  I
> don't know if the code in X11 support the full HID protocol either...
> 
>     -- Garrett
> 
> J?rgen Keil wrote: 
> > 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
> > _______________________________________________
> > laptop-discuss mailing list
> > laptop-discuss at opensolaris.org
> >   
> 
> _______________________________________________
> laptop-discuss mailing list
> laptop-discuss at opensolaris.org


Reply via email to