On 25/01/11 06:29, Magliano Andrea wrote:
> Without this patch uhci driver doesn't generate an interrupt when Fn key is 
> pressed on Apple usb keyboard (it took me days to realize this...).

With this patch that code is probably skipped unconditionally in the
normal case.

> I just want to map Fn key to 'insert' keycode. For that it's than enough to 
> set ukbd_trtab[1]=102 in ukbd.c ,but i don't know if to hardcode this 
> violates any standard. Does it?

Why don't you just set the quirk NO_SET_PROTO for that device? That will
have the same effect.

> 0001-set-usb-quirk-the-right-way.patch
> 
> 
> From 639a855e36f1bf7b1d6120ba5c2bd1a871614ead Mon Sep 17 00:00:00 2001
> From: Charlie <[email protected]>
> Date: Tue, 25 Jan 2011 06:58:43 +0100
> Subject: [PATCH] set usb quirk the right way
> 
> ---
>  sys/dev/usbmisc/ukbd/ukbd.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/sys/dev/usbmisc/ukbd/ukbd.c b/sys/dev/usbmisc/ukbd/ukbd.c
> index 2099921..e3adf78 100644
> --- a/sys/dev/usbmisc/ukbd/ukbd.c
> +++ b/sys/dev/usbmisc/ukbd/ukbd.c
> @@ -1460,7 +1460,7 @@ bLength=%d bDescriptorType=%d bEndpointAddress=%d-%s 
> bmAttributes=%d wMaxPacketS
>               return EINVAL;
>       }
>  
> -     if ((usbd_get_quirks(state->ks_uaa->device)->uq_flags & 
> UQ_NO_SET_PROTO) == 0) {
> +     if (usbd_get_quirks(state->ks_uaa->device)->uq_flags & UQ_NO_SET_PROTO) 
> {

This makes no sense. The original condition was: "If we are asked not to
set a proto skip this section, otherwise call usbd_set_protocol".

Now it is: "If we are asked not to set a proto, set a proto.".

>               err = usbd_set_protocol(state->ks_iface, 0);
>               DPRINTFN(5, ("ukbd:init_keyboard: protocol set\n"));
>               if (err) {
> -- 1.7.3.2

Reply via email to