The nice apple alu keyboards with numpads are pretty much unusable in vanilla 2.6.25. (http://images.apple.com/keyboard/images/gallery/wired_1_20070813.jpg) Hitting the 'clear' key (=numlock) disables the numpad, and maps multiple alphanumeric keys to numpad symbols in typical laptopkeyboard fashion. Furthermore, some of the F-keys do double duty as multimedia keys. The vanilla kernel defaults to multimedia keys, requiring the user to hit the 'fn' key to get F-key events. I use F-keys more often than multimedia keys, so I included the patch to change the default to be F-keys. The following patch is taken from: https://bugs.launchpad.net/mactel-support/+bug/201887 and appears to have been written by Eric Johney. I have merely lifted the two patches from the webpage above and submitted it, as I couldn't see it upstream after a brief search. Tested-by: dag@bakke.com --- linux-2.6.25-gentoo/drivers/hid/hid-input.c 2008-04-17 04:49:44.000000000 +0200 +++ linux-2.6.25-gentoo-r1-apple/drivers/hid/hid-input.c 2008-04-25 23:07:52.925613698 +0200 @@ -34,7 +34,7 @@ #include <linux/hid.h> #include <linux/hid-debug.h> -static int hid_apple_fnmode = 1; +static int hid_apple_fnmode = 2; module_param_named(pb_fnmode, hid_apple_fnmode, int, 0644); MODULE_PARM_DESC(pb_fnmode, "Mode of fn key on Apple keyboards (0 = disabled, 1 = fkeyslast, 2 = fkeysfirst)"); @@ -218,8 +218,9 @@ } } - if (test_bit(usage->code, hid->pb_pressed_numlock) || - test_bit(LED_NUML, input->led)) { + if ((test_bit(usage->code, hid->pb_pressed_numlock) || + test_bit(LED_NUML, input->led)) && + (hid->product < 0x220 ||hid->product >= 0x300)) { trans = find_translation(powerbook_numlock_keys, usage->code); if (trans) { ...
On Sun, 27 Apr 2008 13:19:11 +0200
This conflicts rather directly with
hid-disable-numlock-emulation-for-apple-aluminium-keyboards.patch below
(hm, seems we didn't get a changelog for that one).
Jiri, what should we do here?
Thanks
From: "Diego 'Flameeyes' Petteno" <flameeyes@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
drivers/hid/hid-input.c | 5 ++--
drivers/hid/usbhid/hid-quirks.c | 32 +++++++++++++++---------------
include/linux/hid.h | 1
3 files changed, 20 insertions(+), 18 deletions(-)
diff -puN drivers/hid/hid-input.c~hid-disable-numlock-emulation-for-apple-aluminium-keyboards drivers/hid/hid-input.c
--- a/drivers/hid/hid-input.c~hid-disable-numlock-emulation-for-apple-aluminium-keyboards
+++ a/drivers/hid/hid-input.c
@@ -218,8 +218,9 @@ int hidinput_apple_event(struct hid_devi
}
}
- if (test_bit(usage->code, hid->pb_pressed_numlock) ||
- test_bit(LED_NUML, input->led)) {
+ if (hid->quirks & HID_QUIRK_APPLE_NUMLOCK_EMULATION && (
+ test_bit(usage->code, hid->pb_pressed_numlock) ||
+ test_bit(LED_NUML, input->led))) {
trans = find_translation(powerbook_numlock_keys, usage->code);
if (trans) {
diff -puN drivers/hid/usbhid/hid-quirks.c~hid-disable-numlock-emulation-for-apple-aluminium-keyboards drivers/hid/usbhid/hid-quirks.c
--- a/drivers/hid/usbhid/hid-quirks.c~hid-disable-numlock-emulation-for-apple-aluminium-keyboards
+++ a/drivers/hid/usbhid/hid-quirks.c
@@ -613,28 +613,28 @@ static const struct hid_blacklist {
{ USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
- { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_APPLE...Regardless of anything else, we don't want this hunk. -- Matthew Garrett | mjg59@srcf.ucam.org --
Was my reasoning for this change off ("F-keys used more often that
multimediakeys, ergo make that the default"), or is your resistance to
this change due to some kind of policy?
Sorry if the reason is obvious to you. It isn't to me, yet.
Regards,
Dag B
--It's a change in behaviour of a wide range of keyboards, and it's in a patch that is supposed to be fixing a single keyboard. Personally, I suspect that the people who are going to want the F-keys by default are the people who are easily able to change this behaviour and the ones who aren't are the ones who are going to expect their keyboard to behave like it did under MacOS. But that's a separate argument for a separate patch :) -- Matthew Garrett | mjg59@srcf.ucam.org --
Hi, I have just today applied Diego's patch into my tree [1], he has provided Dag, I think Diego's patch should solve the issue you are seeing, right? [1] http://git.kernel.org/?p=linux/kernel/git/jikos/hid.git;a=commit;h=ffe6f7b799e33f51732... Thanks, -- Jiri Kosina --
I'll give it a shot and let you know. Dag B --
Dag, any update here, please? Thanks, -- Jiri Kosina --
The patch works, thank you. Looks like all keys produce what I expect now. Well. At least in X11 they do. In the console, I get '~' instead of '=', when hitting the numpad '=' key. This may have been no different with the patch I used previously. Dag B --
