Re: [PATCH v2] platform/x86: hp-wmi: Handle Omen Key event

From: Rishit Bansal
Date: Mon Jan 23 2023 - 13:10:06 EST



On 23/01/23 19:13, Hans de Goede wrote:
Hi,

On 1/20/23 23:12, Rishit Bansal wrote:
Add support to map the "HP Omen Key" to KEY_PROG2. Laptops in the HP
Omen Series open the HP Omen Command Center application on windows. But,
on linux it fails with the following message from the hp-wmi driver:

[ 5143.415714] hp_wmi: Unknown event_id - 29 - 0x21a5

Also adds support to map Fn+Esc to KEY_FN_ESC. This currently throws the
following message on the hp-wmi driver:

[ 6082.143785] hp_wmi: Unknown key code - 0x21a7

There is also a "Win-Lock" key on HP Omen Laptops which supports
Enabling and Disabling the Windows key, which trigger commands 0x21a4
and 0x121a4 respectively, but I wasn't able to find any KEY in input.h
to map this to.
We could add KE_IGNORE mappings to hp_wmi_keymap for those,
doing so should silence the warnings about unknown codes.

If you think this is useful please provide a separate follow-up
patch for this.


Alright, I will make a follow up patch for this change.


Signed-off-by: Rishit Bansal <rishitbansal0@xxxxxxxxx>
I have merged this v2 now, but with some coding style changes,
for your next patches please try to keep the indentation
and sorting of things correct.


Thank you for pointing out and fixing up the styling issues! I'll surely keep this in mind for future patches.



---
Changes since v1:
- Add support for FN+Esc Key
---
drivers/platform/x86/hp/hp-wmi.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/platform/x86/hp/hp-wmi.c b/drivers/platform/x86/hp/hp-wmi.c
index 0a99058be813..ab858db551fb 100644
--- a/drivers/platform/x86/hp/hp-wmi.c
+++ b/drivers/platform/x86/hp/hp-wmi.c
@@ -91,6 +91,7 @@ enum hp_wmi_event_ids {
HPWMI_BATTERY_CHARGE_PERIOD = 0x10,
HPWMI_SANITIZATION_MODE = 0x17,
HPWMI_SMART_EXPERIENCE_APP = 0x21,
+ HPWMI_OMEN_KEY = 0x1D,
There is one <tab> too much before the '= 0x1D' and 0x1D should
be between the 0x17 and 0x21 lines.

};
/*
@@ -219,6 +220,8 @@ static const struct key_entry hp_wmi_keymap[] = {
{ KE_KEY, 0x21a9, { KEY_TOUCHPAD_OFF } },
{ KE_KEY, 0x121a9, { KEY_TOUCHPAD_ON } },
{ KE_KEY, 0x231b, { KEY_HELP } },
+ { KE_KEY, 0x21a5, { KEY_PROG2 }}, /* HP Omen Key */
+ { KE_KEY, 0x21a7, { KEY_FN_ESC }},
These need to be above the 0x21a9 line, so sorted by base event code
(lower 16 bits) Also you are missing a space in the indentation of
the { KEY_FN_ESC } and there should be a space between the 2 }} at
the end like on the other lines.

Regards,

Hans


{ KE_END, 0 }
};
@@ -810,6 +813,7 @@ static void hp_wmi_notify(u32 value, void *context)
case HPWMI_SMART_ADAPTER:
break;
case HPWMI_BEZEL_BUTTON:
+ case HPWMI_OMEN_KEY:
key_code = hp_wmi_read_int(HPWMI_HOTKEY_QUERY);
if (key_code < 0)
break;