Map custom HID events (such as the ones generated by some Logitech and
Apple Powerbooks USB keyboards) to the FN keycode.
Signed-off-by: Stelian Pop <stelian@popies.net>
Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
                        break;
 
                case HID_UP_MSVENDOR:
-               case HID_UP_LOGIVENDOR:
                        goto ignore;
 
-               case HID_UP_LOGIVENDOR2: /* Reported on Logitech Ultra X Media Remote */
+               case HID_UP_CUSTOM: /* Reported on Logitech and Powerbook USB keyboards */
+
+                       set_bit(EV_REP, input->evbit);
+                       switch(usage->hid & HID_USAGE) {
+                               case 0x003: map_key_clear(KEY_FN);              break;
+                               default:    goto ignore;
+                       }
+                       break;
+
+               case HID_UP_LOGIVENDOR: /* Reported on Logitech Ultra X Media Remote */
 
                        set_bit(EV_REP, input->evbit);
                        switch(usage->hid & HID_USAGE) {
 
 #define HID_UP_PID             0x000f0000
 #define HID_UP_HPVENDOR         0xff7f0000
 #define HID_UP_MSVENDOR                0xff000000
-#define HID_UP_LOGIVENDOR      0x00ff0000
-#define HID_UP_LOGIVENDOR2     0xffbc0000
+#define HID_UP_CUSTOM          0x00ff0000
+#define HID_UP_LOGIVENDOR      0xffbc0000
 
 #define HID_USAGE              0x0000ffff