* [PATCH v2 1/2] platform/x86: msi-wmi: Sort scancodes numerically
2026-10-20 14:14 [PATCH v2 0/2] platform/x86: msi-wmi: Ignore WMI events for keys also handled by atkbd Patryk Pilichowski
@ 2026-10-20 14:14 ` Patryk Pilichowski
2026-10-20 14:14 ` [PATCH v2 2/2] platform/x86: msi-wmi: Ignore WMI events for keys also handled by atkbd Patryk Pilichowski
1 sibling, 0 replies; 3+ messages in thread
From: Patryk Pilichowski @ 2026-10-20 14:14 UTC (permalink / raw)
To: Hans de Goede, Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Patryk Pilichowski
The scancode enum is grouped by model, so the values are not in order
and are hard to follow. The grouping is not meaningful either, as the
same event codes are used across MSI models.
Sort the enum by scancode, give every entry an explicit value and use
lowercase hex.
No functional change.
Suggested-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Patryk Pilichowski <pat.pilichowski@gmail.com>
---
drivers/platform/x86/msi-wmi.c | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/drivers/platform/x86/msi-wmi.c b/drivers/platform/x86/msi-wmi.c
index 05c35133a1b3..5369ac28f4c5 100644
--- a/drivers/platform/x86/msi-wmi.c
+++ b/drivers/platform/x86/msi-wmi.c
@@ -33,25 +33,22 @@ MODULE_ALIAS("wmi:" MSIWMI_MSI_EVENT_GUID);
MODULE_ALIAS("wmi:" MSIWMI_WIND_EVENT_GUID);
enum msi_scancodes {
- /* Generic MSI keys (not present on MSI Wind) */
- MSI_KEY_BRIGHTNESSUP = 0xD0,
- MSI_KEY_BRIGHTNESSDOWN,
- MSI_KEY_VOLUMEUP,
- MSI_KEY_VOLUMEDOWN,
- MSI_KEY_MUTE,
- /* MSI Wind keys */
WIND_KEY_TOUCHPAD = 0x08, /* Fn+F3 touchpad toggle */
- WIND_KEY_BLUETOOTH = 0x56, /* Fn+F11 Bluetooth toggle */
- WIND_KEY_CAMERA, /* Fn+F6 webcam toggle */
- WIND_KEY_WLAN = 0x5f, /* Fn+F11 Wi-Fi toggle */
- WIND_KEY_TURBO, /* Fn+F10 turbo mode toggle */
- WIND_KEY_ECO = 0x69, /* Fn+F10 ECO mode toggle */
- /* MSI Claw keys */
CLAW_KEY_VOLUMEDOWN = 0x21,
CLAW_KEY_CENTER = 0x29, /* MSI M-Center main menu */
CLAW_KEY_QUICK_LONG = 0x2a, /* MSI M-Center quick access long hold */
CLAW_KEY_VOLUMEUP = 0x32,
+ WIND_KEY_BLUETOOTH = 0x56, /* Fn+F11 Bluetooth toggle */
+ WIND_KEY_CAMERA = 0x57, /* Fn+F6 webcam toggle */
CLAW_KEY_QUICK_SHORT = 0x58, /* MSI M-Center quick access short press */
+ WIND_KEY_WLAN = 0x5f, /* Fn+F11 Wi-Fi toggle */
+ WIND_KEY_TURBO = 0x60, /* Fn+F10 turbo mode toggle */
+ WIND_KEY_ECO = 0x69, /* Fn+F10 ECO mode toggle */
+ MSI_KEY_BRIGHTNESSUP = 0xd0,
+ MSI_KEY_BRIGHTNESSDOWN = 0xd1,
+ MSI_KEY_VOLUMEUP = 0xd2,
+ MSI_KEY_VOLUMEDOWN = 0xd3,
+ MSI_KEY_MUTE = 0xd4,
};
static struct key_entry msi_wmi_keymap[] = {
{ KE_KEY, MSI_KEY_BRIGHTNESSUP, {KEY_BRIGHTNESSUP} },
--
2.56.0
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v2 2/2] platform/x86: msi-wmi: Ignore WMI events for keys also handled by atkbd
2026-10-20 14:14 [PATCH v2 0/2] platform/x86: msi-wmi: Ignore WMI events for keys also handled by atkbd Patryk Pilichowski
2026-10-20 14:14 ` [PATCH v2 1/2] platform/x86: msi-wmi: Sort scancodes numerically Patryk Pilichowski
@ 2026-10-20 14:14 ` Patryk Pilichowski
1 sibling, 0 replies; 3+ messages in thread
From: Patryk Pilichowski @ 2026-10-20 14:14 UTC (permalink / raw)
To: Hans de Goede, Ilpo Järvinen
Cc: platform-driver-x86, linux-kernel, Patryk Pilichowski
On MSI notebooks, several keys generate a WMI event through the Wind
event GUID in addition to a regular AT keyboard event. Their event
codes are not in the keymap, so every press logs "Unknown key
pressed".
These keys already work through the AT keyboard, so mark their WMI
codes as KE_IGNORE, as is already done for the MSI Claw. On models
where a code does not also produce a keyboard event, the event is
already dropped, so the only change there is that the log
message goes away.
The Wind event GUID is not specific to the MSI Wind. It is present in
17 of 18 MSI notebooks in the linuxhw ACPI dump collection (2012 to
2024), with the same _WED structure. The codes are shared across
models too: the volume keys on the tested notebook send the same codes
as the MSI Claw (0x21, 0x32).
Tested on an MSI Katana 15 B13VFK: Fn (0x0b), mic mute (0x19),
settings (0x1d), mute (0x23) and Bluetooth (0x78) no longer log
unknown key messages, and the keys keep working through atkbd.
Link: https://github.com/linuxhw/ACPI/tree/d6d30c6ef6f4/Notebook/MSI
Signed-off-by: Patryk Pilichowski <pat.pilichowski@gmail.com>
---
drivers/platform/x86/msi-wmi.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/platform/x86/msi-wmi.c b/drivers/platform/x86/msi-wmi.c
index 5369ac28f4c5..dc56e8da0cdb 100644
--- a/drivers/platform/x86/msi-wmi.c
+++ b/drivers/platform/x86/msi-wmi.c
@@ -34,7 +34,11 @@ MODULE_ALIAS("wmi:" MSIWMI_WIND_EVENT_GUID);
enum msi_scancodes {
WIND_KEY_TOUCHPAD = 0x08, /* Fn+F3 touchpad toggle */
+ WIND_KEY_FN_NB = 0x0b,
+ WIND_KEY_MICMUTE_NB = 0x19,
+ WIND_KEY_SETTINGS_NB = 0x1d,
CLAW_KEY_VOLUMEDOWN = 0x21,
+ WIND_KEY_MUTE_NB = 0x23,
CLAW_KEY_CENTER = 0x29, /* MSI M-Center main menu */
CLAW_KEY_QUICK_LONG = 0x2a, /* MSI M-Center quick access long hold */
CLAW_KEY_VOLUMEUP = 0x32,
@@ -44,6 +48,7 @@ enum msi_scancodes {
WIND_KEY_WLAN = 0x5f, /* Fn+F11 Wi-Fi toggle */
WIND_KEY_TURBO = 0x60, /* Fn+F10 turbo mode toggle */
WIND_KEY_ECO = 0x69, /* Fn+F10 ECO mode toggle */
+ WIND_KEY_BLUETOOTH_NB = 0x78,
MSI_KEY_BRIGHTNESSUP = 0xd0,
MSI_KEY_BRIGHTNESSDOWN = 0xd1,
MSI_KEY_VOLUMEUP = 0xd2,
@@ -63,6 +68,13 @@ static struct key_entry msi_wmi_keymap[] = {
{ KE_IGNORE, WIND_KEY_CAMERA, {KEY_CAMERA} },
{ KE_IGNORE, WIND_KEY_WLAN, {KEY_WLAN} },
+ /* These MSI Notebook keys work without WMI. Ignore them to avoid double keycodes */
+ { KE_IGNORE, WIND_KEY_FN_NB },
+ { KE_IGNORE, WIND_KEY_MICMUTE_NB },
+ { KE_IGNORE, WIND_KEY_SETTINGS_NB },
+ { KE_IGNORE, WIND_KEY_MUTE_NB },
+ { KE_IGNORE, WIND_KEY_BLUETOOTH_NB },
+
/* These are unknown WMI events found on MSI Wind */
{ KE_IGNORE, 0x00 },
{ KE_IGNORE, 0x62 },
--
2.56.0
^ permalink raw reply [flat|nested] 3+ messages in thread