diff mbox series

[v2,1/2] Input: atkbd - map F21 key to support touchpad toggle keys

Message ID 20250303190442.551961-1-wse@tuxedocomputers.com (mailing list archive)
State New
Headers show
Series [v2,1/2] Input: atkbd - map F21 key to support touchpad toggle keys | expand

Commit Message

Werner Sembach March 3, 2025, 7:04 p.m. UTC
In the default xkeyboard-config used by both X11 and wayland touchpad
toggle is assigned to F21.

This patch is in preparation for i8042 filter patches to be able to remap
bogus scancode(-combinations), produced by notebooks uppon pressing a
touchpad toggle key.

Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: <stable@vger.kernel.org>
---
 drivers/input/keyboard/atkbd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dmitry Torokhov March 5, 2025, 6:54 a.m. UTC | #1
Hi Werner,

On Mon, Mar 03, 2025 at 08:04:34PM +0100, Werner Sembach wrote:
> In the default xkeyboard-config used by both X11 and wayland touchpad
> toggle is assigned to F21.

We have dedicated KEY_TOUCHPAD_TOGGLE that is being used by several
platform drivers:

dtor@dtor-ws:~/kernel/work $ git grep -l KEY_TOUCHPAD_TOGGLE --
drivers/platform/x86/
drivers/platform/x86/acer-wmi.c
drivers/platform/x86/asus-laptop.c
drivers/platform/x86/asus-nb-wmi.c
drivers/platform/x86/eeepc-wmi.c
drivers/platform/x86/fujitsu-laptop.c
drivers/platform/x86/ideapad-laptop.c
drivers/platform/x86/msi-wmi.c
drivers/platform/x86/toshiba_acpi.c

Instead of piling on F21 hacks we should be using it.

> 
> This patch is in preparation for i8042 filter patches to be able to remap
> bogus scancode(-combinations), produced by notebooks uppon pressing a
> touchpad toggle key.

Since you already creating a vendor-specific platform driver I think it
would be better for it to register a separate input device and have it
emit KEY_TOUCHPAD_TOGGLE instead of involving atkbd.

> 
> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
> Cc: <stable@vger.kernel.org>
> ---
>  drivers/input/keyboard/atkbd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
> index adf0f311996c9..2ba3493de88cc 100644
> --- a/drivers/input/keyboard/atkbd.c
> +++ b/drivers/input/keyboard/atkbd.c
> @@ -88,7 +88,7 @@ static const unsigned short atkbd_set2_keycode[ATKBD_KEYMAP_SIZE] = {
>  	  0, 56, 42, 93, 29, 16,  2,  0,  0,  0, 44, 31, 30, 17,  3,  0,
>  	  0, 46, 45, 32, 18,  5,  4, 95,  0, 57, 47, 33, 20, 19,  6,183,
>  	  0, 49, 48, 35, 34, 21,  7,184,  0,  0, 50, 36, 22,  8,  9,185,
> -	  0, 51, 37, 23, 24, 11, 10,  0,  0, 52, 53, 38, 39, 25, 12,  0,
> +	  0, 51, 37, 23, 24, 11, 10,  0,191, 52, 53, 38, 39, 25, 12,  0,
>  	  0, 89, 40,  0, 26, 13,  0,193, 58, 54, 28, 27,  0, 43,  0, 85,
>  	  0, 86, 91, 90, 92,  0, 14, 94,  0, 79,124, 75, 71,121,  0,  0,
>  	 82, 83, 80, 76, 77, 72,  1, 69, 87, 78, 81, 74, 55, 73, 70, 99,
> -- 
> 2.43.0
> 

Thanks.
Werner Sembach March 5, 2025, 12:18 p.m. UTC | #2
Hi Dmitry,

Am 05.03.25 um 07:54 schrieb Dmitry Torokhov:
> Hi Werner,
>
> On Mon, Mar 03, 2025 at 08:04:34PM +0100, Werner Sembach wrote:
>> In the default xkeyboard-config used by both X11 and wayland touchpad
>> toggle is assigned to F21.
> We have dedicated KEY_TOUCHPAD_TOGGLE that is being used by several
> platform drivers:
>
> dtor@dtor-ws:~/kernel/work $ git grep -l KEY_TOUCHPAD_TOGGLE --
> drivers/platform/x86/
> drivers/platform/x86/acer-wmi.c
> drivers/platform/x86/asus-laptop.c
> drivers/platform/x86/asus-nb-wmi.c
> drivers/platform/x86/eeepc-wmi.c
> drivers/platform/x86/fujitsu-laptop.c
> drivers/platform/x86/ideapad-laptop.c
> drivers/platform/x86/msi-wmi.c
> drivers/platform/x86/toshiba_acpi.c
>
> Instead of piling on F21 hacks we should be using it.
Afaik KEY_TOUCHPAD_TOGGLE is not implemented in userspace, but a patch for 
xkeboard-configs could probably be enough to change that ... have to look into it.
>
>> This patch is in preparation for i8042 filter patches to be able to remap
>> bogus scancode(-combinations), produced by notebooks uppon pressing a
>> touchpad toggle key.
> Since you already creating a vendor-specific platform driver I think it
> would be better for it to register a separate input device and have it
> emit KEY_TOUCHPAD_TOGGLE instead of involving atkbd.

Thought of that also, but since the scancode was unmapped and unused anyway I 
thought this could be a much simpler and therefore more elegant solution.

Learning question: What actually is the reason why F13-F24 are not fully mapped 
in the default config?

Best regards,

Werner

>
>> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
>> Cc: <stable@vger.kernel.org>
>> ---
>>   drivers/input/keyboard/atkbd.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
>> index adf0f311996c9..2ba3493de88cc 100644
>> --- a/drivers/input/keyboard/atkbd.c
>> +++ b/drivers/input/keyboard/atkbd.c
>> @@ -88,7 +88,7 @@ static const unsigned short atkbd_set2_keycode[ATKBD_KEYMAP_SIZE] = {
>>   	  0, 56, 42, 93, 29, 16,  2,  0,  0,  0, 44, 31, 30, 17,  3,  0,
>>   	  0, 46, 45, 32, 18,  5,  4, 95,  0, 57, 47, 33, 20, 19,  6,183,
>>   	  0, 49, 48, 35, 34, 21,  7,184,  0,  0, 50, 36, 22,  8,  9,185,
>> -	  0, 51, 37, 23, 24, 11, 10,  0,  0, 52, 53, 38, 39, 25, 12,  0,
>> +	  0, 51, 37, 23, 24, 11, 10,  0,191, 52, 53, 38, 39, 25, 12,  0,
>>   	  0, 89, 40,  0, 26, 13,  0,193, 58, 54, 28, 27,  0, 43,  0, 85,
>>   	  0, 86, 91, 90, 92,  0, 14, 94,  0, 79,124, 75, 71,121,  0,  0,
>>   	 82, 83, 80, 76, 77, 72,  1, 69, 87, 78, 81, 74, 55, 73, 70, 99,
>> -- 
>> 2.43.0
>>
> Thanks.
>
Hans de Goede March 5, 2025, 12:55 p.m. UTC | #3
Hi,

On 5-Mar-25 7:54 AM, Dmitry Torokhov wrote:
> Hi Werner,
> 
> On Mon, Mar 03, 2025 at 08:04:34PM +0100, Werner Sembach wrote:
>> In the default xkeyboard-config used by both X11 and wayland touchpad
>> toggle is assigned to F21.
> 
> We have dedicated KEY_TOUCHPAD_TOGGLE that is being used by several
> platform drivers:

Ah right that is a good point.

Werner, we were using F21 in the past because we could not use evdev
keycodes >= 248 (256 - 8 modifier keys) because of Xorg limitations.

But recently the mapping of things like KEY_TOUCHPAD_TOGGLE /
KEY_TOUCHPAD_ON / KEY_TOUCHPAD_OFF to F2x keys has been moved to
xorg-x11-drv-libinput which gets the full range key-codes from
libinput and can then do this mapping before passing the keys
to the X-server.

So it is no longer necessary to use KEY_F21 and even in the past
we used to do the mapping in udev / hwdb rules not in the kernel
in the kernel we've always (with a few exceptions which are my
fault) used KEY_TOUCHPAD_TOGGLE as that is the correct keycode.

Regards,

Hans
Hans de Goede March 5, 2025, 12:56 p.m. UTC | #4
Hi Werner,

On 5-Mar-25 1:18 PM, Werner Sembach wrote:
> Hi Dmitry,
> 
> Am 05.03.25 um 07:54 schrieb Dmitry Torokhov:
>> Hi Werner,
>>
>> On Mon, Mar 03, 2025 at 08:04:34PM +0100, Werner Sembach wrote:
>>> In the default xkeyboard-config used by both X11 and wayland touchpad
>>> toggle is assigned to F21.
>> We have dedicated KEY_TOUCHPAD_TOGGLE that is being used by several
>> platform drivers:
>>
>> dtor@dtor-ws:~/kernel/work $ git grep -l KEY_TOUCHPAD_TOGGLE --
>> drivers/platform/x86/
>> drivers/platform/x86/acer-wmi.c
>> drivers/platform/x86/asus-laptop.c
>> drivers/platform/x86/asus-nb-wmi.c
>> drivers/platform/x86/eeepc-wmi.c
>> drivers/platform/x86/fujitsu-laptop.c
>> drivers/platform/x86/ideapad-laptop.c
>> drivers/platform/x86/msi-wmi.c
>> drivers/platform/x86/toshiba_acpi.c
>>
>> Instead of piling on F21 hacks we should be using it.
> Afaik KEY_TOUCHPAD_TOGGLE is not implemented in userspace, but a patch for xkeboard-configs could probably be enough to change that ... have to look into it.

Quoting from the other reply in this thread I just send
(our email crossed):

Werner, we were using F21 in the past because we could not use evdev
keycodes >= 248 (256 - 8 modifier keys) because of Xorg limitations.

But recently the mapping of things like KEY_TOUCHPAD_TOGGLE /
KEY_TOUCHPAD_ON / KEY_TOUCHPAD_OFF to F2x keys has been moved to
xorg-x11-drv-libinput which gets the full range key-codes from
libinput and can then do this mapping before passing the keys
to the X-server.

So it is no longer necessary to use KEY_F21 and even in the past
we used to do the mapping in udev / hwdb rules not in the kernel
in the kernel we've always (with a few exceptions which are my
fault) used KEY_TOUCHPAD_TOGGLE as that is the correct keycode.

Regards,

Hans
diff mbox series

Patch

diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index adf0f311996c9..2ba3493de88cc 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -88,7 +88,7 @@  static const unsigned short atkbd_set2_keycode[ATKBD_KEYMAP_SIZE] = {
 	  0, 56, 42, 93, 29, 16,  2,  0,  0,  0, 44, 31, 30, 17,  3,  0,
 	  0, 46, 45, 32, 18,  5,  4, 95,  0, 57, 47, 33, 20, 19,  6,183,
 	  0, 49, 48, 35, 34, 21,  7,184,  0,  0, 50, 36, 22,  8,  9,185,
-	  0, 51, 37, 23, 24, 11, 10,  0,  0, 52, 53, 38, 39, 25, 12,  0,
+	  0, 51, 37, 23, 24, 11, 10,  0,191, 52, 53, 38, 39, 25, 12,  0,
 	  0, 89, 40,  0, 26, 13,  0,193, 58, 54, 28, 27,  0, 43,  0, 85,
 	  0, 86, 91, 90, 92,  0, 14, 94,  0, 79,124, 75, 71,121,  0,  0,
 	 82, 83, 80, 76, 77, 72,  1, 69, 87, 78, 81, 74, 55, 73, 70, 99,