[PATCH] HID: lenovo: Restrict F7/9/11 mode to compact keyboards only

Iusico Maxim posted 1 patch 6 months, 2 weeks ago
drivers/hid/hid-lenovo.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
[PATCH] HID: lenovo: Restrict F7/9/11 mode to compact keyboards only
Posted by Iusico Maxim 6 months, 2 weeks ago
Commit 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume
for compact keyboards") introduced a regression for ThinkPad TrackPoint
Keyboard II by removing the conditional check for enabling F7/9/11 mode
needed for compact keyboards only. As a result, the non-compact
keyboards can no longer toggle Fn-lock via Fn+Esc, although it can be
controlled via sysfs knob that directly sends raw commands.

This patch restores the previous conditional check without any
additions.

Cc: stable@vger.kernel.org
Fixes: 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume for compact keyboards")
Signed-off-by: Iusico Maxim <iusico.maxim@libero.it>
---
 drivers/hid/hid-lenovo.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
index af29ba84052..a3c23a72316 100644
--- a/drivers/hid/hid-lenovo.c
+++ b/drivers/hid/hid-lenovo.c
@@ -548,11 +548,14 @@ static void lenovo_features_set_cptkbd(struct hid_device *hdev)
 
 	/*
 	 * Tell the keyboard a driver understands it, and turn F7, F9, F11 into
-	 * regular keys
+	 * regular keys (Compact only)
 	 */
-	ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03);
-	if (ret)
-		hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret);
+	if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD ||
+	    hdev->product == USB_DEVICE_ID_LENOVO_CBTKBD) {
+		ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03);
+		if (ret)
+			hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret);
+	}
 
 	/* Switch middle button to native mode */
 	ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01);
-- 
2.48.1
Re: [PATCH] HID: lenovo: Restrict F7/9/11 mode to compact keyboards only
Posted by Jiri Kosina 6 months, 1 week ago
On Thu, 5 Jun 2025, Iusico Maxim wrote:

> Commit 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume
> for compact keyboards") introduced a regression for ThinkPad TrackPoint
> Keyboard II by removing the conditional check for enabling F7/9/11 mode
> needed for compact keyboards only. As a result, the non-compact
> keyboards can no longer toggle Fn-lock via Fn+Esc, although it can be
> controlled via sysfs knob that directly sends raw commands.
> 
> This patch restores the previous conditional check without any
> additions.
> 
> Cc: stable@vger.kernel.org
> Fixes: 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume for compact keyboards")
> Signed-off-by: Iusico Maxim <iusico.maxim@libero.it>

CCing Jamie Lentin, the author of the original commit, for awareness.

I've now applied your patch to hid.git#for-6.16/upstream-fixes, thanks.

-- 
Jiri Kosina
SUSE Labs