Subject: Re: [PATCH/RFC?] usb/input: Add support for fn key on Apple PowerBooks

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 12 Jan 2006 10:41:40 +1100

On Thu, 2006-01-12 at 00:26 +0100, Michael Hanselmann wrote:

>   * This is the global environment of the parser. This information is
> @@ -431,6 +433,14 @@ struct hid_device {							/* device repo
>  	void (*ff_exit)(struct hid_device*);                            /* Called by hid_exit_ff(hid) */
>  	int (*ff_event)(struct hid_device *hid, struct input_dev *input,
>  			unsigned int type, unsigned int code, int value);
> +
> +#ifdef CONFIG_USB_HIDINPUT_POWERBOOK
> +	/* We do this here because it's only relevant for the
> +	 * USB devices, not for all input_dev's.
> +	 */
> +	unsigned long pb_fn[NBITS(KEY_MAX)];
> +	unsigned long pb_numlock[NBITS(KEY_MAX)];
> +#endif
>  };

I don't understand the comment above ? You are adding this to all struct
hid_device ? There can be only one of those keyboards plugged at one
point in time, I don't think there is any problem having the above
static in the driver rather than in the hid_device structure.

  .../...

>  
> +	if ((hid->quirks & HID_QUIRK_POWERBOOK_HAS_FN) &&
> +	    hidinput_pb_event(hid, input, usage, value)) {
> +		return;
> +	}
> +

Dimitry might disagree but it's generally considered bad taste to have
{ and } for a single statement :)

>  	if (usage->hat_min < usage->hat_max || usage->hat_dir) {
>  		int hat_dir = usage->hat_dir;
>  		if (!hat_dir)
> diff -upr linux-2.6.15.orig/drivers/usb/input/Kconfig linux-2.6.15/drivers/usb/input/Kconfig
> --- linux-2.6.15.orig/drivers/usb/input/Kconfig	2006-01-11 23:59:40.000000000 +0100
> +++ linux-2.6.15/drivers/usb/input/Kconfig	2006-01-08 11:53:35.000000000 +0100
> @@ -37,6 +37,16 @@ config USB_HIDINPUT
>  
>  	  If unsure, say Y.
>  
> +config USB_HIDINPUT_POWERBOOK
> +	bool "Enable support for iBook/PowerBook special keys"
> +	default n
> +	depends on USB_HIDINPUT
> +	help
> +	  Say Y here if you want support for the special keys (Fn, Numlock) on
> +	  Apple iBooks and PowerBooks.
> +
> +	  If unsure, say N.
> +
>  config HID_FF
>  	bool "Force feedback support (EXPERIMENTAL)"
>  	depends on USB_HIDINPUT && EXPERIMENTAL