Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Mar 2010 07:59:18 GMT
From:      Steven Noonan <steven@uplinklabs.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   usb/144414: Apple "Fn" key doesn't work properly
Message-ID:  <201003020759.o227xItm073609@www.freebsd.org>
Resent-Message-ID: <201003020800.o22804rB020396@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         144414
>Category:       usb
>Synopsis:       Apple "Fn" key doesn't work properly
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 02 08:00:04 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Steven Noonan
>Release:        8.0-RELEASE-p2
>Organization:
>Environment:
FreeBSD alcarin.uplinklabs.net 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #0: Tue Jan  5 21:11:58 UTC 2010     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
I've got an Apple MacBookPro2,2 and the "Fn" key doesn't seem to do anything it is supposed to. Fn+Left Arrow should do "Home", Fn+Right Arrow should be "End", etc. I checked the USB keyboard driver (ukbd.c), and it looks like the Apple function key is implemented (UKBD_FLAG_APPLE_FN), but I can't get it to work on my machine.

>From dmesg:
ugen0.2: <Apple Computer> at usbus0
ukbd0: <Apple Internal Keyboard> on usbus0
kbd2 at ukbd0

The HID descriptor for the device:
alcarin usb # usbconfig -u 0 -a 2 do_request 0x81 0x06 0x2200 0 0x1000
REQUEST = <0x05 0x01 0x09 0x06 0xa1 0x01 0x05 0x07 0x19 0xe0 0x29 0xe7 0x15 0x00 0x25 0x01 0x75 0x01 0x95 0x08 0x81 0x02 0x95 0x01 0x75 0x08 0x81 0x01 0x95 0x05 0x75 0x01 0x05 0x08 0x19 0x01 0x29 0x05 0x91 0x02 0x95 0x01 0x75 0x03 0x91 0x01 0x95 0x05 0x75 0x08 0x15 0x00 0x25 0x65 0x05 0x07 0x19 0x00 0x29 0x65 0x81 0x00 0x05 0xff 0x09 0x03 0x75 0x08 0x95 0x01 0x81 0x02 0xc0><)%uuu)uu%e)eu>

I tried setting hw.usb.ukbd.debug=1, and it looks like "apple_fn" is never '1'. For instance (typing Fn+Backspace, which should become 'Delete'):

ukbd_intr_callback:547: actlen=8 bytes
ukbd_intr_callback:590: apple_eject=0 apple_fn=0
ukbd_intr_callback:597: [5] = 1
ukbd_put_key:312: 0x01 (1) pressed
ukbd_intr_callback:547: actlen=8 bytes
ukbd_intr_callback:590: apple_eject=0 apple_fn=0
ukbd_intr_callback:597: [0] = 42
ukbd_intr_callback:597: [5] = 1
ukbd_put_key:312: 0x2a (42) pressed
ukbd_intr_callback:547: actlen=8 bytes
ukbd_intr_callback:590: apple_eject=0 apple_fn=0
ukbd_intr_callback:597: [5] = 1
ukbd_put_key:312: 0x42a (1066) released
ukbd_intr_callback:547: actlen=8 bytes
ukbd_intr_callback:590: apple_eject=0 apple_fn=0
ukbd_put_key:312: 0x401 (1025) released

Any thoughts?
>How-To-Repeat:

>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003020759.o227xItm073609>