usb/144414: Apple "Fn" key doesn't work properly

Hans Petter Selasky hselasky at c2i.net
Sun Mar 14 14:50:06 UTC 2010


The following reply was made to PR usb/144414; it has been noted by GNATS.

From: Hans Petter Selasky <hselasky at c2i.net>
To: Steven Noonan <steven at uplinklabs.net>
Cc: freebsd-usb at freebsd.org,
 freebsd-gnats-submit at freebsd.org,
 Christoph Langguth <christoph at rosenkeller.org>
Subject: Re: usb/144414: Apple "Fn" key doesn't work properly
Date: Sun, 14 Mar 2010 15:43:19 +0100

 On Sunday 14 March 2010 15:37:04 Steven Noonan wrote:
 > On Sun, Mar 14, 2010 at 6:27 AM, Hans Petter Selasky <hselasky at c2i.net> 
 wrote:
 > > On Sunday 14 March 2010 15:01:39 Steven Noonan wrote:
 > >> On Sun, Mar 14, 2010 at 5:48 AM, Hans Petter Selasky <hselasky at c2i.net>
 > >
 > > wrote:
 > >> > On Sunday 14 March 2010 14:22:33 Steven Noonan wrote:
 > >> >> On Sun, Mar 14, 2010 at 3:01 AM, Hans Petter Selasky
 > >> >> <hselasky at c2i.net>
 > >> >
 > >> > wrote:
 > >> >> > On Sunday 14 March 2010 11:30:04 Steven Noonan wrote:
 > >> >> >> The following reply was made to PR usb/144414; it has been noted
 > >> >> >> by GNATS.
 > >> >> >>
 > >> >> >> From: Steven Noonan <steven at uplinklabs.net>
 > >> >> >> To: perryh at pluto.rain.com
 > >> >> >> Cc: freebsd-usb at freebsd.org, freebsd-gnats-submit at freebsd.org
 > >> >> >> Subject: Re: usb/144414: Apple "Fn" key doesn't work properly
 > >> >> >> Date: Sun, 14 Mar 2010 03:26:19 -0700
 > >> >> >>
 > >> >> >>  On Thu, Mar 4, 2010 at 12:01 AM, Steven Noonan
 > >> >> >> <steven at uplinklabs.net> wrot=
 > >> >> >>
 > >> >> >>  e:
 > >> >> >>  > On Wed, Mar 3, 2010 at 11:00 PM, Steven Noonan
 > >> >> >> <steven at uplinklabs.net> > wr=
 > >> >> >>
 > >> >> >>  ote:
 > >> >> >>  >> On Wed, Mar 3, 2010 at 10:36 PM, =C2=A0<perryh at pluto.rain.com>
 > >> >> >> wrote: >>> Steven Noonan <steven at uplinklabs.net> wrote:
 > >> >> >>  >>>> Interestingly, my tilde key doesn't work either (though the
 > >> >> >> key >>>> press is detected, no character shows when the key is
 > >> >> >> pressed). >>>
 > >> >> >>  >>> Any chance it is configured as a "dead" key? =C2=A0If you
 > >> >> >> press >>> tilde followed by n do you get an n with a tilde over
 > >> >> >> it? >>
 > >> >> >>  >> Nope. It simply does nothing in the console.
 > >> >> >>  >>
 > >> >> >>  >> But in X11, it does something very odd. Shift+Tilde Key gives
 > >> >> >> me '>', >> and Tilde Key gives me '<'. And Alt+Tilde gives me...
 > >> >> >> What? I don't >> even know what action. It's grabbing some
 > >> >> >> arbitrary command in my >> .bash_history. It gave me the first
 > >> >> >> item in my .bash_history the first >> time I tried it. Then I
 > >> >> >> tried an arbitrary command ("echo"), and then >> Alt+Tilde gave me
 > >> >> >> the second command in my .bash_history. Whaa?
 > >> >> >>
 > >> >> >>  Any more ideas/news on this from anyone?
 > >> >> >>
 > >> >> >>  The tilde key thing is especially irritating.
 > >> >> >
 > >> >> > static uint8_t
 > >> >> > ukbd_apple_swap(uint8_t keycode) {
 > >> >> >        switch (keycode) {
 > >> >> >        case 0x35: return 0x64;
 > >> >> >        case 0x64: return 0x35;
 > >> >> >        default: return keycode;
 > >> >> >        }
 > >> >> > }
 > >> >> >
 > >> >> > Can you try to change the function above in ukbd.c to only return
 > >> >> > keycode? Any difference?
 > >> >>
 > >> >> Yep, commenting the two case lines brought my tilde key back. Any
 > >> >> idea what the ukbd_apple_swap() function was _supposed_ to be doing?
 > >> >>
 > >> >> Also, there's only one thing left (input-wise) that I can't get to
 > >> >> work, and that's the 'delete' key (Fn+Backspace). I'm pretty certain
 > >> >> that it's not a problem with Fn+Backspace failing to map to Delete,
 > >> >> because my non-Mac i386 box has the same problem.
 > >> >>
 > >> >> Everything I read online keeps saying to muck with an .inputrc file
 > >> >> (for bash, anyway), but I haven't been able to get it to work. Places
 > >> >> I've looked have said to add this to .inputrc:
 > >> >>
 > >> >> "\e[3~": delete-char
 > >> >>
 > >> >> But this seems to have no effect (and I tried bind -f .inputrc in
 > >> >> case my INPUTRC environment variable wasn't working). Is there
 > >> >> something FreeBSD-specific I'm not seeing, or what?
 > >> >>
 > >> >> - Steven
 > >> >
 > >> > Hi Steven,
 > >> >
 > >> > Can you talk this over with Christoph and send me a patch when you
 > >> > agreed? He's the one that made the Apple-SWAP key patch. Meanwhile I
 > >> > suggest the following patch:
 > >> >
 > >> > ==== //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#47 -
 > >> > src/sys/dev/usb/input/ukbd.c ====
 > >> > @@ -896,8 +896,7 @@
 > >> >                    hid_input, 0, &sc->sc_loc_apple_fn, &flags,
 > >> >                    &temp_id)) {
 > >> >                        if (flags & HIO_VARIABLE)
 > >> > -                               sc->sc_flags |= UKBD_FLAG_APPLE_FN |
 > >> > -                                   UKBD_FLAG_APPLE_SWAP;
 > >> > +                               sc->sc_flags |= UKBD_FLAG_APPLE_FN;
 > >> >                        DPRINTFN(1, "Found Apple FN-key\n");
 > >> >                        apple_keys = 1;
 > >> >                        sc->sc_kbd_id = temp_id;
 > >> >
 > >> >
 > >> > The hardware that Christoph was using had an Eject-key, while yours
 > >> > didn't. I think the patch above will make both cases work.
 > >> >
 > >> > Christoph, do you have any comments?
 > >> >
 > >> > http://p4db.freebsd.org/fileViewer.cgi?FSPC=//depot/projects/usb/src/s
 > >> >ys/ dev/usb/input/ukbd.c&REV=47
 > >>
 > >> Not quite true, my keyboard _does_ have an Eject key. The code doesn't
 > >> detect it though.
 > >>
 > >> - Steven
 > >
 > > Could you try to figure out what key-press number corresponds to the
 > > eject key?
 > >
 > > --HPS
 > 
 > I'm not certain how to do so. It's somewhat of a chicken-and-the-egg
 > problem: unless it detects that the key is there, I can't find it.
 > Enabling 'hw.usb.ukbd.debug' doesn't print anything when Eject is
 > pressed.
 
 Then maybe we have to do some additional requests towards the hardware to 
 "switch on" sending of those keys ....
 
 --HPS


More information about the freebsd-usb mailing list