Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54a6593d authored by Stefan Glasenhardt's avatar Stefan Glasenhardt Committed by Jiri Kosina
Browse files

HID: allow disabling hard-coded ISO-layout for Apple keyboards

This patch adds a new option named "iso_layout" to the driver
"hid-apple.ko", to allow disabling of the hard-coded ISO-layout.

Disabling the hard-coded layout solves the problem that the kernel-module only
works perfectly for the english/american version of the Apple aluminum
keyboard. Other versions have swapped keys, e.g. the "<"-key  is swapped with
"^"-key on the german keyboard. There is a very long bug-entry on Launchpad to
this problem:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/214786



Signed-off-by: default avatarStefan Glasenhardt <stefan@glasen-hardt.de>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 722612cd
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -40,6 +40,11 @@ module_param(fnmode, uint, 0644);
MODULE_PARM_DESC(fnmode, "Mode of fn key on Apple keyboards (0 = disabled, "
		"[1] = fkeyslast, 2 = fkeysfirst)");

static unsigned int iso_layout = 1;
module_param(iso_layout, uint, 0644);
MODULE_PARM_DESC(iso_layout, "Enable/Disable hardcoded ISO-layout of the keyboard. "
		"(0 = disabled, [1] = enabled)");

struct apple_sc {
	unsigned long quirks;
	unsigned int fn_on;
@@ -199,6 +204,7 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
		}
	}

        if (iso_layout) {
		if (asc->quirks & APPLE_ISO_KEYBOARD) {
			trans = apple_find_translation(apple_iso_keyboard, usage->code);
			if (trans) {
@@ -206,6 +212,7 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
				return 1;
			}
		}
	}

	return 0;
}