Re: ideapad-laptop: Fn+M (Touchpad Toggle) not working on Lenovo ThinkBook 16 G4+ IAP
From: Rong Zhang
Date: Mon Jun 01 2026 - 13:16:38 EST
Hi Gillian,
On Fri, 2026-05-22 at 08:25 +0800, Gillian Laurenti wrote:
> Hi,
> The Fn+M touchpad toggle hotkey on the Lenovo ThinkBook 16 G4+ IAP
> doesn't generate a keycode under Linux.
> Pressing the key only triggers a generic WMI event in acpi_listen: wmi
> PNP0C14:03 000000d0 00000000
> Since the ideapad_laptop driver already handles these 0xD0 events by
> reading the VPC status register,
>
On my device such events are handled by ideapad_wmi_notify(), which
doesn't read VPC status registers at all.
> I did some testing on this model. It
> looks like the touchpad toggle state is mapped to bit 6 of the
> register.
> Can we add parsing for bit 6 on 0xD0 events so the driver can report
> the touchpad toggle keycode properly?
Did you mean ideapad_acpi_notify()? On my device I didn't see any events
in acpi_listen when the callback is triggered by ACPI notifications.
And bit 6 for vpc status registers has been mapped to
KEY_SWITCHVIDEOMODE:
static const struct key_entry ideapad_keymap[] = {
{ KE_KEY, 6, { KEY_SWITCHVIDEOMODE } },
...
};
...
static void ideapad_acpi_notify(acpi_handle handle, u32 event, void *data)
{
...
for_each_set_bit(bit, &vpc1, 16) {
switch (bit) {
case 13:
case 11:
case 8:
case 7:
case 6:
ideapad_input_report(priv, bit);
break;
...
}
}
}
Therefore, I guess there may be something missing from your experiments
and/or assumptions.
Could you please add some debug printks to both callbacks to print the
event data? With additional information we could hopefully figure out
what's really going on.
Thanks,
Rong
>
> System Information:
> Model: Lenovo ThinkBook 16 G4+ IAP
> OS: Arch Linux
> Kernel version: 6.18.31-1-lts