platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes
authorHans de Goede <hdegoede@redhat.com>
Mon, 29 Aug 2022 16:35:44 +0000 (18:35 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Sep 2022 09:50:15 +0000 (11:50 +0200)
[ Upstream commit c3b82d26bc85f5fc2fef5ec8cce17c89633a55a8 ]

2 keymap fixes for the Acer Aspire One AOD270 and the same hardware
rebranded as Packard Bell Dot SC:

1. The F2 key is marked with a big '?' symbol on the Packard Bell Dot SC,
this sends WMID_HOTKEY_EVENTs with a scancode of 0x27 add a mapping
for this.

2. Scancode 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate
input event with the "Video Bus" input device events. But on these devices
the "Video Bus" does not send events for this key. Map 0x61 to KEY_UNKNOWN
instead of using KE_IGNORE so that udev/hwdb can override it on these devs.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20220829163544.5288-1-hdegoede@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/platform/x86/acer-wmi.c

index ec3cbb7844bcecf783abc59de976bca0bce98828..c10b97c91f3cce76e59a086d8bc7df3244ee4176 100644 (file)
@@ -105,6 +105,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = {
        {KE_KEY, 0x22, {KEY_PROG2} },    /* Arcade */
        {KE_KEY, 0x23, {KEY_PROG3} },    /* P_Key */
        {KE_KEY, 0x24, {KEY_PROG4} },    /* Social networking_Key */
+       {KE_KEY, 0x27, {KEY_HELP} },
        {KE_KEY, 0x29, {KEY_PROG3} },    /* P_Key for TM8372 */
        {KE_IGNORE, 0x41, {KEY_MUTE} },
        {KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} },
@@ -118,7 +119,13 @@ static const struct key_entry acer_wmi_keymap[] __initconst = {
        {KE_IGNORE, 0x48, {KEY_VOLUMEUP} },
        {KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} },
        {KE_IGNORE, 0x4a, {KEY_VOLUMEDOWN} },
-       {KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} },
+       /*
+        * 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event
+        * with the "Video Bus" input device events. But sometimes it is not
+        * a dup. Map it to KEY_UNKNOWN instead of using KE_IGNORE so that
+        * udev/hwdb can override it on systems where it is not a dup.
+        */
+       {KE_KEY, 0x61, {KEY_UNKNOWN} },
        {KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} },
        {KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} },
        {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */