mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chris Wright <chrisw@sous-sol.org>
To: linux-kernel@vger.kernel.org, stable@kernel.org, greg@kroah.com
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	torvalds@osdl.org, akpm@osdl.org, alan@lxorguk.ukuu.org.uk,
	benh@kernel.crashing.org, dtor@mail.ru, olh@suse.de
Subject: [patch 17/30] correct keymapping on Powerbook built-in USB ISO keyboards
Date: Wed, 15 Nov 2006 18:43:49 -0800	[thread overview]
Message-ID: <20061116024710.248311000@sous-sol.org> (raw)
In-Reply-To: <20061116024332.124753000@sous-sol.org>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: correct-keymapping-on-powerbook-built-in-usb-iso-keyboards.patch --]
[-- Type: text/plain, Size: 3623 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

From: Olaf Hering <olh@suse.de>

similar to the version in adbhid_input_register(): The '<>' key and the
'^°' key on a german keyboard is swapped.  Provide correct keys to
userland, external USB keyboards will not work correctly when the
'badmap'/'goodmap' workarounds from xkeyboard-config are used.

It is expected that distributions drop the badmap/goodmap part from
keycodes/macintosh in the xkeyboard-config package.

This is probably 2.6.18.x material, if major distros settle on 2.6.18.

Signed-off-by: Olaf Hering <olh@suse.de>
Cc: Greg KH <greg@kroah.com>
Cc: Dmitry Torokhov <dtor@mail.ru>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
Note: still not upstream, candidate to drop.  Please advise.

 drivers/usb/input/hid-core.c  |    4 ++--
 drivers/usb/input/hid-input.c |   17 +++++++++++++++++
 drivers/usb/input/hid.h       |    1 +
 3 files changed, 20 insertions(+), 2 deletions(-)

--- linux-2.6.18.2.orig/drivers/usb/input/hid-core.c
+++ linux-2.6.18.2/drivers/usb/input/hid-core.c
@@ -1734,10 +1734,10 @@ static const struct hid_blacklist {
 	{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_POWERBOOK_HAS_FN },
 	{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_POWERBOOK_HAS_FN },
 	{ USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN },
+	{ USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
 	{ USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN },
 	{ USB_VENDOR_ID_APPLE, 0x0217, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN },
+	{ USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
 	{ USB_VENDOR_ID_APPLE, 0x0219, HID_QUIRK_POWERBOOK_HAS_FN },
 	{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN },
 	{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN },
--- linux-2.6.18.2.orig/drivers/usb/input/hid-input.c
+++ linux-2.6.18.2/drivers/usb/input/hid-input.c
@@ -123,6 +123,12 @@ static struct hidinput_key_translation p
 	{ }
 };
 
+static struct hidinput_key_translation powerbook_iso_keyboard[] = {
+	{ KEY_GRAVE,    KEY_102ND },
+	{ KEY_102ND,    KEY_GRAVE },
+	{ }
+};
+
 static int usbhid_pb_fnmode = 1;
 module_param_named(pb_fnmode, usbhid_pb_fnmode, int, 0644);
 MODULE_PARM_DESC(pb_fnmode,
@@ -197,6 +203,14 @@ static int hidinput_pb_event(struct hid_
 		}
 	}
 
+	if (hid->quirks & HID_QUIRK_POWERBOOK_ISO_KEYBOARD) {
+		trans = find_translation(powerbook_iso_keyboard, usage->code);
+		if (trans) {
+			input_event(input, usage->type, trans->to, value);
+			return 1;
+		}
+	}
+
 	return 0;
 }
 
@@ -212,6 +226,9 @@ static void hidinput_pb_setup(struct inp
 
 	for (trans = powerbook_numlock_keys; trans->from; trans++)
 		set_bit(trans->to, input->keybit);
+
+	for (trans = powerbook_iso_keyboard; trans->from; trans++)
+		set_bit(trans->to, input->keybit);
 }
 #else
 static inline int hidinput_pb_event(struct hid_device *hid, struct input_dev *input,
--- linux-2.6.18.2.orig/drivers/usb/input/hid.h
+++ linux-2.6.18.2/drivers/usb/input/hid.h
@@ -260,6 +260,7 @@ struct hid_item {
 #define HID_QUIRK_POWERBOOK_HAS_FN		0x00001000
 #define HID_QUIRK_POWERBOOK_FN_ON		0x00002000
 #define HID_QUIRK_INVERT_HWHEEL			0x00004000
+#define HID_QUIRK_POWERBOOK_ISO_KEYBOARD	0x00010000
 
 /*
  * This is the global environment of the parser. This information is

--

  parent reply	other threads:[~2006-11-16  2:46 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-16  2:43 [patch 00/30] -stable review Chris Wright
2006-11-16  2:43 ` [patch 01/30] S390: user readable uninitialised kernel memory, take 2 Chris Wright
2006-11-16  2:43 ` [patch 02/30] POWERPC: Make alignment exception always check exception table Chris Wright
2006-11-16  2:43 ` [patch 03/30] SPARC64: Fix futex_atomic_cmpxchg_inatomic implementation Chris Wright
2006-11-16  2:43 ` [patch 04/30] Fix sys_move_pages when a NULL node list is passed Chris Wright
2006-11-16  2:43 ` [patch 05/30] splice: fix problem introduced with inode diet Chris Wright
2006-11-17  2:52   ` Dave Jones
2006-11-17  6:16     ` [stable] " Chris Wright
2006-11-16  2:43 ` [patch 06/30] SPARC: Fix missed bump of NR_SYSCALLS Chris Wright
2006-11-16  2:43 ` [patch 07/30] bcm43xx: Drain TX status before starting IRQs Chris Wright
2006-11-16 16:09   ` Larry Finger
2006-11-16 18:38     ` Chris Wright
2006-11-18 19:06   ` Larry Finger
2006-11-19  4:11     ` Chris Wright
2006-11-19 23:51     ` Dan Williams
2006-11-16  2:43 ` [patch 08/30] fix UFS superblock alignment issues Chris Wright
2006-11-16  2:43 ` [patch 09/30] ipmi_si_intf.c sets bad class_mask with PCI_DEVICE_CLASS Chris Wright
2006-11-16  2:43 ` [patch 10/30] init_reap_node() initialization fix Chris Wright
2006-11-16  2:43 ` [patch 11/30] USB: failure in usblps error path Chris Wright
2006-11-16  2:43 ` [patch 12/30] usbtouchscreen: use endpoint address from endpoint descriptor Chris Wright
2006-11-16  2:43 ` [patch 13/30] e1000: Fix regression: garbled stats and irq allocation during swsusp Chris Wright
2006-11-16  2:43 ` [patch 14/30] NET: __alloc_pages() failures reported due to fragmentation Chris Wright
2006-11-16  2:43 ` [patch 15/30] Input: psmouse - fix attribute access on 64-bit systems Chris Wright
2006-11-16  2:43 ` [patch 16/30] x86_64: Fix FPU corruption Chris Wright
2006-11-16  2:43 ` Chris Wright [this message]
2006-11-16  2:43 ` [patch 18/30] TCP: Dont use highmem in tcp hash size calculation Chris Wright
2006-11-16  2:43 ` [patch 19/30] NET: Set truesize in pskb_copy Chris Wright
2006-11-16  2:43 ` [patch 20/30] fix via586 irq routing for pirq 5 Chris Wright
2006-11-16  2:43 ` [patch 21/30] security/seclvl.c: fix time wrap (CVE-2005-4352) Chris Wright
2006-11-16  2:43 ` [patch 22/30] CPUFREQ: Make acpi-cpufreq unsticky again Chris Wright
2006-11-16  2:43 ` [patch 23/30] Patch for nvidia divide by zero error for 7600 pci-express card Chris Wright
2006-11-16  2:43 ` [patch 24/30] pci: dont try to remove sysfs files before they are setup Chris Wright
2006-11-16  2:43 ` [patch 25/30] block: Fix bad data direction in SG_IO Chris Wright
2006-11-16  2:43 ` [patch 26/30] Char: isicom, fix close bug Chris Wright
2006-11-16  2:43 ` [patch 27/30] cpqarray: fix iostat Chris Wright
2006-11-16  2:44 ` [patch 28/30] cciss: " Chris Wright
2006-11-16  2:44 ` [patch 29/30] CIFS: report rename failure when target file is locked by Windows Chris Wright
2006-11-16  2:44 ` [patch 30/30] CIFS: New POSIX locking code not setting rc properly to zero on successful Chris Wright
2006-11-16 21:57 ` [patch 00/30] -stable review Dave Jones
2006-11-16 22:22   ` Chris Wright

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061116024710.248311000@sous-sol.org \
    --to=chrisw@sous-sol.org \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=benh@kernel.crashing.org \
    --cc=chuckw@quantumlinux.com \
    --cc=davej@redhat.com \
    --cc=dtor@mail.ru \
    --cc=greg@kroah.com \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkrufky@linuxtv.org \
    --cc=olh@suse.de \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@osdl.org \
    --cc=tytso@mit.edu \
    --cc=zwane@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome