On Thu, 2005-07-28 at 12:56 +0200, Stelian Pop wrote:
> Le mardi 05 juillet 2005 à 16:25 +0200, Johannes Berg a écrit :
> > Jochen Voss wrote:
> >
> > >My only idea is to take the 2.6.12-rc kernels one by one, to find out
> > >in which one it breaks and then to look at the corresponding patch.
> > >Maybe something suspicious can be spotted there. I guess this whole
> > >procedure would take me about one day, so I did not yet find time to
> > >do this.
>
> I had a few hours to spend and I made it work again.
>
> Now, I didn't look at the previous (working) code so I don't know
> exactly what change broke it. In fact, looking at the logic I don't
> understand how this could have been working before (unless the logic
> itself changed...).
>
> Anyway, the attached patch below replaces the Johannes' one. Note that I
> don't use the Fn key myself yet, so testing has been limited to looking
> at evtest and xev output...
>
> Should I push this in the mainstream kernel ?
>
> Stelian.
>
Hello, I tried to apply your patch to a clean 2.6.12.3 kernel tree but
got some rejects, so I had to apply the rejected sections manually.
Anyway, the Fn-key works perfectly now. Thank you! I'll paste the
rejects below if you're interested. (was the patch intended for 2.6.12.3
anyways? Maybe I applied it wrong?)
$ patch -p1 < ../stelian.pop.fnkey.patch
patching file drivers/usb/input/hid-core.c
Hunk #1 succeeded at 1426 with fuzz 2 (offset -20 lines).
Hunk #2 FAILED at 1541.
1 out of 2 hunks FAILED -- saving rejects to file
drivers/usb/input/hid-core.c.rej
patching file drivers/usb/input/hid-input.c
Hunk #1 FAILED at 106.
Hunk #2 FAILED at 328.
2 out of 2 hunks FAILED -- saving rejects to file
drivers/usb/input/hid-input.c.rej
patching file drivers/usb/input/hid.h
Hunk #1 FAILED at 242.
1 out of 1 hunk FAILED -- saving rejects to file
drivers/usb/input/hid.h.rej
drivers/usb/input/hid-core.c.rej:
***************
*** 1537,1542 ****
{ USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD,
HID_QUIRK_BADPAD },
{ USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD,
HID_QUIRK_BADPAD },
{ 0, 0 }
};
--- 1541,1549 ----
{ USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD,
HID_QUIRK_BADPAD },
{ USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD,
HID_QUIRK_BADPAD },
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_POWERBOOK_KB_US,
HID_QUIRK_POWERBOOK_FN_BUTTON },
+ { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_POWERBOOK_KB_UK,
HID_QUIRK_POWERBOOK_FN_BUTTON },
+
{ 0, 0 }
};
drivers/usb/input/hid-input.c.rej:
***************
*** 106,111 ****
} else
map_key(KEY_UNKNOWN);
break;
case HID_UP_BUTTON:
--- 106,115 ----
} else
map_key(KEY_UNKNOWN);
+ if ((device->quirks &
HID_QUIRK_POWERBOOK_FN_BUTTON) &&
+ (hid_keyboard[usage->hid & HID_USAGE] ==
KEY_RIGHTCTRL))
+ map_key(KEY_UNKNOWN);
+
break;
case HID_UP_BUTTON:
***************
*** 324,329 ****
default:
unknown:
if (field->report_size == 1) {
if (field->report->type ==
HID_OUTPUT_REPORT) {
map_led(LED_MISC);
--- 328,337 ----
default:
unknown:
+ if ((device->quirks &
HID_QUIRK_POWERBOOK_FN_BUTTON) && (usage->hid == 0x00ff0003)) {
+ map_key_clear(KEY_RIGHTCTRL);
+ break;
+ }
if (field->report_size == 1) {
if (field->report->type ==
HID_OUTPUT_REPORT) {
map_led(LED_MISC);
drivers/usb/input/hid.h.rej:
***************
*** 242,247 ****
#define HID_QUIRK_2WHEEL_MOUSE_HACK_7 0x080
#define HID_QUIRK_2WHEEL_MOUSE_HACK_5 0x100
#define HID_QUIRK_2WHEEL_MOUSE_HACK_ON 0x200
/*
* This is the global environment of the parser. This information is
--- 242,248 ----
#define HID_QUIRK_2WHEEL_MOUSE_HACK_7 0x080
#define HID_QUIRK_2WHEEL_MOUSE_HACK_5 0x100
#define HID_QUIRK_2WHEEL_MOUSE_HACK_ON 0x200
+ #define HID_QUIRK_POWERBOOK_FN_BUTTON 0x400
/*
* This is the global environment of the parser. This information is
Thanks again for your work :)
--
Johannes H. Jensen <joh@deworks.net>
deworks
Attachment:
signature.asc
Description: This is a digitally signed message part