mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] platform/x86: ideapad-laptop: Add Yoga Pro 7 14IAH10 Mode key
@ 2026-09-13 22:47 Navon John Lukose
  2026-09-14 12:40 ` Hans de Goede
  0 siblings, 1 reply; 3+ messages in thread
From: Navon John Lukose @ 2026-09-13 22:47 UTC (permalink / raw)
  To: ikepanhc, hansg, ilpo.jarvinen
  Cc: mpearson-lenovo, derekjohn.clark, platform-driver-x86,
	linux-kernel, Navon John Lukose

The F9 "Mode" key emits WMI fn-key event 0x46, which the keymap does not
cover, so it reaches userspace as KEY_UNKNOWN and cannot be remapped from
there. Under Windows it opens a performance profile chooser, so it belongs
in the keymap as a user-assignable key. Map it to KEY_PROG4.

Signed-off-by: Navon John Lukose <navonjohnlukose@gmail.com>
---
Lenovo Yoga Pro 7 14IAH10 (83KF), BIOS QGCN35WW. No other key on this
machine emits 0x46, and pressing the Mode key leaves platform_profile
unchanged.

KEY_PROG4 per Hans's note on the 0x3d key, that a key opening a settings
dialog under Windows should get a free KEY_PROG#:
https://lore.kernel.org/platform-driver-x86/35969669-48b6-469e-9cd2-26929fb33e5f@redhat.com/

 drivers/platform/x86/lenovo/ideapad-laptop.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/platform/x86/lenovo/ideapad-laptop.c b/drivers/platform/x86/lenovo/ideapad-laptop.c
index 8213524..6fa72a3 100644
--- a/drivers/platform/x86/lenovo/ideapad-laptop.c
+++ b/drivers/platform/x86/lenovo/ideapad-laptop.c
@@ -1360,6 +1360,8 @@ static const struct key_entry ideapad_keymap[] = {
 	{ KE_KEY,	0x45 | IDEAPAD_WMI_KEY, { KEY_PROG3 } },
 	/* Performance toggle also Fn+Q, handled inside ideapad_wmi_notify() */
 	{ KE_KEY,	0x3d | IDEAPAD_WMI_KEY, { KEY_PROG4 } },
+	/* Mode (performance profile chooser) */
+	{ KE_KEY,	0x46 | IDEAPAD_WMI_KEY, { KEY_PROG4 } },
 	/* shift + prtsc */
 	{ KE_KEY,   0x2d | IDEAPAD_WMI_KEY, { KEY_SELECTIVE_SCREENSHOT } },
 	{ KE_KEY,   0x29 | IDEAPAD_WMI_KEY, { KEY_TOUCHPAD_TOGGLE } },

base-commit: 22098763a10d9c13

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/x86: ideapad-laptop: Add Yoga Pro 7 14IAH10 Mode key
  2026-09-13 22:47 [PATCH] platform/x86: ideapad-laptop: Add Yoga Pro 7 14IAH10 Mode key Navon John Lukose
@ 2026-09-14 12:40 ` Hans de Goede
  2026-09-14 13:42   ` Navon John Lukose
  0 siblings, 1 reply; 3+ messages in thread
From: Hans de Goede @ 2026-09-14 12:40 UTC (permalink / raw)
  To: Navon John Lukose, ikepanhc, ilpo.jarvinen
  Cc: mpearson-lenovo, derekjohn.clark, platform-driver-x86, linux-kernel

Hi Navon,

On 14-Sep-26 12:47 AM, Navon John Lukose wrote:
> The F9 "Mode" key emits WMI fn-key event 0x46, which the keymap does not
> cover, so it reaches userspace as KEY_UNKNOWN and cannot be remapped from
> there. Under Windows it opens a performance profile chooser, so it belongs
> in the keymap as a user-assignable key. Map it to KEY_PROG4.
> 
> Signed-off-by: Navon John Lukose <navonjohnlukose@gmail.com>
> ---
> Lenovo Yoga Pro 7 14IAH10 (83KF), BIOS QGCN35WW. No other key on this
> machine emits 0x46, and pressing the Mode key leaves platform_profile
> unchanged.
> 
> KEY_PROG4 per Hans's note on the 0x3d key, that a key opening a settings
> dialog under Windows should get a free KEY_PROG#:
> https://lore.kernel.org/platform-driver-x86/35969669-48b6-469e-9cd2-26929fb33e5f@redhat.com/

As the comment on the KE_KEY entry above the one you add says, this should
really be handled specially inside ideapad_wmi_notify(). IIRC we still want
the KE_KEY entry to emit a key-press on laptops without DYTC platform-profile
support.

For laptops with DYTC support you want to modify this bit in ideapad_wmi_notify():

                /* performance button triggered by 0x3d */
                if (data->integer.value == 0x3d && priv->dytc) {
                        platform_profile_cycle();
                        break;
                }

to also trigger on the new 0x46 code:

                /* performance button triggered by 0x3d or 0x46 */
                if ((data->integer.value == 0x3d || data->integer.value == 0x46) && priv->dytc) {
                        platform_profile_cycle();
                        break;
                }

So that this key actually toggles through the different (power-save/balanced/performanc)
platform profiles the laptop has.

Unless there already is another key to do that ?

And please also add a comment to the new KE_KEY entry that this is handled inside
ideapad_wmi_notify() like the existing KE_KEY entry for 0x3d has.

Hmm, I see you say that under Windows this opens a performance menu rather
then outright toggle the profile. So I guess that you maybe also have Fn + Q or
something which already directly switches profile ?  If you do then KEY_PROG4
seems fine. If you do not I think just cycling the profile would be better,
what do you think ?

Regards,

Hans


> 
>  drivers/platform/x86/lenovo/ideapad-laptop.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/platform/x86/lenovo/ideapad-laptop.c b/drivers/platform/x86/lenovo/ideapad-laptop.c
> index 8213524..6fa72a3 100644
> --- a/drivers/platform/x86/lenovo/ideapad-laptop.c
> +++ b/drivers/platform/x86/lenovo/ideapad-laptop.c
> @@ -1360,6 +1360,8 @@ static const struct key_entry ideapad_keymap[] = {
>  	{ KE_KEY,	0x45 | IDEAPAD_WMI_KEY, { KEY_PROG3 } },
>  	/* Performance toggle also Fn+Q, handled inside ideapad_wmi_notify() */
>  	{ KE_KEY,	0x3d | IDEAPAD_WMI_KEY, { KEY_PROG4 } },
> +	/* Mode (performance profile chooser) */
> +	{ KE_KEY,	0x46 | IDEAPAD_WMI_KEY, { KEY_PROG4 } },
>  	/* shift + prtsc */
>  	{ KE_KEY,   0x2d | IDEAPAD_WMI_KEY, { KEY_SELECTIVE_SCREENSHOT } },
>  	{ KE_KEY,   0x29 | IDEAPAD_WMI_KEY, { KEY_TOUCHPAD_TOGGLE } },
> 
> base-commit: 22098763a10d9c13


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] platform/x86: ideapad-laptop: Add Yoga Pro 7 14IAH10 Mode key
  2026-09-14 12:40 ` Hans de Goede
@ 2026-09-14 13:42   ` Navon John Lukose
  0 siblings, 0 replies; 3+ messages in thread
From: Navon John Lukose @ 2026-09-14 13:42 UTC (permalink / raw)
  To: hansg, ikepanhc, ilpo.jarvinen
  Cc: Navon John Lukose, mpearson-lenovo, derekjohn.clark,
	platform-driver-x86, linux-kernel

On 14-Sep-26 2:40 PM, Hans de Goede wrote:
> So I guess that you maybe also have Fn + Q or something which already
> directly switches profile ?  If you do then KEY_PROG4 seems fine.

Fn+Q does, by a different path than the Mode key:

  Mode key (F9)  WMI fn-key 0x46, platform_profile unchanged
  Fn+Q           VPC special button, platform_profile_cycle() from
                 ideapad_acpi_notify(), no WMI event

(Used LLMs to hunt the Fn+Q path down.)

So cycling on 0x46 would duplicate Fn+Q. Keeping KEY_PROG4, and added
a comment in v2 saying why.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-09-14 13:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-13 22:47 [PATCH] platform/x86: ideapad-laptop: Add Yoga Pro 7 14IAH10 Mode key Navon John Lukose
2026-09-14 12:40 ` Hans de Goede
2026-09-14 13:42   ` Navon John Lukose

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®