Bug 503512

Summary: Can't map some keys from "ThinkPad Extra Buttons" anymore
Product: [Frameworks and Libraries] frameworks-kglobalaccel Reporter: Tobi <tdyn75lz2>
Component: generalAssignee: kdelibs bugs <kdelibs-bugs-null>
Status: RESOLVED UPSTREAM    
Severity: normal CC: fanzhuyifan, john.kizer
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: Kubuntu   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: the evtest output showing keys 444, 445 and 446

Description Tobi 2025-04-29 09:44:46 UTC
Created attachment 180760 [details]
the evtest output showing keys 444, 445 and 446

***
If you're not sure this is actually a bug, instead post about it at https://discuss.kde.org

If you're reporting a crash, attach a backtrace with debug symbols; see https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports

Please remove this comment after reading and before submitting - thanks!
***

SUMMARY

On Kubuntu 24.10 I mapped keys 444, 445 and 446 in "System Settings" -> "Keyboard" -> "Shortcuts"

Those are from the "ThinkPad Extra Buttons" device, and are used to control calls, in MS Teams presumably. (A chat icon, accept call icon and decline call icon is on the keys).

After the upgrade to 25.04 yesterday, those keys didn't work anymore, and I wasn't able to use them to create mappings in that menu anymore.

I attached the evtest output for the keys in question.

Other fn-keys, like the bookmarks key (star icon), work. (type 1 (EV_KEY), code 156 (KEY_BOOKMARKS), value 1).

Maybe the chat key (type 1 (EV_KEY), code 444 (?), value 1) is ignored because 444 is an uncommon/unknown key code. It is not in https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h

Previously, the key 444 was recognized as "Messenger". 445 as "Go", and 446 as "Cancel"

STEPS TO REPRODUCE
1. Go to Shortcuts
2. Create a shortcut for anything (In my case play/pause media) using those call-controlling extra fn buttons

OBSERVED RESULT
The UI isn't reacting to the key-press in any way.

EXPECTED RESULT
To add that key (fn + F9, which is the type 1 (EV_KEY), code 444 (?), value 1 key) as a shortcut for play/pause

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 6.14.0-15-generic, Ubuntu 25.04, kglobalacceld/plucky,now 6.3.4-0ubuntu1 amd64 [installed,automatic]
KDE Plasma Version: 6.3.4
KDE Frameworks Version: 6.12.0
Qt Version: 6.8.3

ADDITIONAL INFORMATION
Comment 1 John Kizer 2025-04-29 18:41:56 UTC
Hi - could you please let us know if you're using a Wayland or X11 session? That information should be in the Info Center app, or in the output of the kinfo command.

Thanks!
Comment 2 fanzhuyifan 2025-04-29 18:48:43 UTC
Hi, if evtest is not recognizing that key, then the issue lies in the software stack that KDE relies on. One idea is to check whether your hwdb that maps scancodes to keycodes changed during the update.
Comment 3 Tobi 2025-04-29 20:15:57 UTC
Wayland.

Tried it on my other laptop that is still running 24.10:

Event: time 1745957533.263015, type 4 (EV_MSC), code 4 (MSC_SCAN), value 4b
Event: time 1745957533.263015, type 1 (EV_KEY), code 216 (KEY_CHAT), value 1
Event: time 1745957533.263015, -------------- SYN_REPORT ------------
Event: time 1745957533.263031, type 1 (EV_KEY), code 216 (KEY_CHAT), value 0
Event: time 1745957533.263031, -------------- SYN_REPORT ------------
Event: time 1745957535.024892, type 4 (EV_MSC), code 4 (MSC_SCAN), value 4c
Event: time 1745957535.024892, type 1 (EV_KEY), code 218 (KEY_CONNECT), value 1
Event: time 1745957535.024892, -------------- SYN_REPORT ------------
Event: time 1745957535.024903, type 1 (EV_KEY), code 218 (KEY_CONNECT), value 0
Event: time 1745957535.024903, -------------- SYN_REPORT ------------
Event: time 1745957535.695060, type 4 (EV_MSC), code 4 (MSC_SCAN), value 4d
Event: time 1745957535.695060, type 1 (EV_KEY), code 223 (KEY_CANCEL), value 1
Event: time 1745957535.695060, -------------- SYN_REPORT ------------
Event: time 1745957535.695076, type 1 (EV_KEY), code 223 (KEY_CANCEL), value 0
Event: time 1745957535.695076, -------------- SYN_REPORT ------------

same scancode, but different keycode
Comment 4 fanzhuyifan 2025-04-29 20:37:05 UTC
(In reply to Tobi from comment #3)
> Wayland.
> 
> Tried it on my other laptop that is still running 24.10:
> 
> Event: time 1745957533.263015, type 4 (EV_MSC), code 4 (MSC_SCAN), value 4b
> Event: time 1745957533.263015, type 1 (EV_KEY), code 216 (KEY_CHAT), value 1
> Event: time 1745957533.263015, -------------- SYN_REPORT ------------
> Event: time 1745957533.263031, type 1 (EV_KEY), code 216 (KEY_CHAT), value 0
> Event: time 1745957533.263031, -------------- SYN_REPORT ------------
> Event: time 1745957535.024892, type 4 (EV_MSC), code 4 (MSC_SCAN), value 4c
> Event: time 1745957535.024892, type 1 (EV_KEY), code 218 (KEY_CONNECT),
> value 1
> Event: time 1745957535.024892, -------------- SYN_REPORT ------------
> Event: time 1745957535.024903, type 1 (EV_KEY), code 218 (KEY_CONNECT),
> value 0
> Event: time 1745957535.024903, -------------- SYN_REPORT ------------
> Event: time 1745957535.695060, type 4 (EV_MSC), code 4 (MSC_SCAN), value 4d
> Event: time 1745957535.695060, type 1 (EV_KEY), code 223 (KEY_CANCEL), value
> 1
> Event: time 1745957535.695060, -------------- SYN_REPORT ------------
> Event: time 1745957535.695076, type 1 (EV_KEY), code 223 (KEY_CANCEL), value
> 0
> Event: time 1745957535.695076, -------------- SYN_REPORT ------------
> 
> same scancode, but different keycode

This indicates that you should check if the default configuration for mapping scancodes to key codes changed during the process. That is not handled by kde software, hence this is an upstream issue. Since I don't use kubuntu, you might get better help posting in the forums or mailing lists of your distro.
Comment 5 Tobi 2025-04-30 10:37:46 UTC
Thanks, I found the problem in /usr/lib/udev/hwdb.d/60-keyboard.hwdb

How it used do look like:
 KEYBOARD_KEY_4b=chat                                   # Fn + F9, on Windows: Notifications panel key
 KEYBOARD_KEY_4c=connect                                # Fn + F10, on Windows: Answer (Teams) call
 KEYBOARD_KEY_4d=cancel                                 # Fn + F11, on Windows: Hangup/decline (Teams) call

How those 3 lines are after the upgrade:
 KEYBOARD_KEY_4b=notification_center                    # Fn + F9, on Windows: Notifications panel key
 KEYBOARD_KEY_4c=pickup_phone                           # Fn + F10, on Windows: Answer (Teams) call
 KEYBOARD_KEY_4d=hangup_phone                           # Fn + F11, on Windows: Hangup/decline (Teams) call

After changing it back, I did

sudo systemd-hwdb update
sudo udevadm trigger

And it was the old mapping visible via evtest.

However, to be able to make shortcuts using these 3 keys, I needed to fully restart the laptop. It works now. I guess I'll create a bug report in launchpad.