mirror-linux/drivers/input/keyboard
Mark Pearson 907bc9268a Input: atkbd - map F23 key to support default copilot shortcut
Microsoft defined Meta+Shift+F23 as the Copilot shortcut instead of a
dedicated keycode, and multiple vendors have their keyboards emit this
sequence in response to users pressing a dedicated "Copilot" key.
Unfortunately the default keymap table in atkbd does not map scancode
0x6e (F23) and so the key combination does not work even if userspace
is ready to handle it.

Because this behavior is common between multiple vendors and the
scancode is currently unused map 0x6e to keycode 193 (KEY_F23) so that
key sequence is generated properly.

MS documentation for the scan code:
https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#scan-codes
Confirmed on Lenovo, HP and Dell machines by Canonical.
Tested on Lenovo T14s G6 AMD.

Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Link: https://lore.kernel.org/r/20250107034554.25843-1-mpearson-lenovo@squebb.ca
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2025-01-20 21:23:38 -08:00
..
Kconfig Input updates for v6.12-rc0 2024-09-24 12:42:35 -07:00
Makefile Input updates for v6.12-rc0 2024-09-24 12:42:35 -07:00
adc-keys.c Input: adc-keys - use device_for_each_child_node_scoped() 2024-07-15 17:02:13 -07:00
adp5520-keys.c Input: switch back to struct platform_driver::remove() 2024-10-15 11:43:25 -07:00
adp5588-keys.c Input: adp5588-keys - do not try to disable interrupt 0 2024-10-25 15:52:45 -07:00
adp5589-keys.c Merge branch 'next' into for-linus 2024-11-24 17:05:27 -08:00
amikbd.c vt: remove superfluous CONFIG_HW_CONSOLE 2024-01-27 19:03:51 -08:00
applespi.c Input updates for v6.13-rc0 2024-11-25 10:31:39 -08:00
applespi.h
applespi_trace.h
atakbd.c
atkbd.c Input: atkbd - map F23 key to support default copilot shortcut 2025-01-20 21:23:38 -08:00
bcm-keypad.c Input: bcm-keypad - remove redundant of_match_ptr() 2024-01-20 00:54:22 -08:00
cap11xx.c Input: cap11xx - switch to for_each_child_of_node_scoped 2024-10-19 21:21:37 -07:00
clps711x-keypad.c
cros_ec_keyb.c Input updates for v6.13-rc0 2024-11-25 10:31:39 -08:00
cypress-sf.c Input: cypress-sf - constify struct i2c_device_id 2024-11-18 19:35:24 -08:00
dlink-dir685-touchkeys.c Input: Use str_enable_disable-like helpers 2025-01-14 13:41:41 -08:00
ep93xx_keypad.c Input updates for v6.13-rc0 2024-11-25 10:31:39 -08:00
goldfish_events.c
gpio_keys.c Input: gpio_keys - avoid using GPIOF_ACTIVE_LOW 2024-11-09 14:55:33 +01:00
gpio_keys_polled.c Input: gpio_keys_polled - avoid using GPIOF_ACTIVE_LOW 2024-11-09 14:55:33 +01:00
hil_kbd.c
hilkbd.c Input: hilkbd - use guard notation when acquiring spinlock 2024-11-05 14:17:20 -08:00
hpps2atkbd.h
imx-sm-bbm-key.c input: keyboard: support i.MX95 BBM module 2024-08-28 21:54:38 +01:00
imx_keypad.c Input: imx_keypad - use guard notation when acquiring mutex 2024-10-03 08:53:14 -07:00
imx_sc_key.c
ipaq-micro-keys.c Input: ipaq-micro-keys - use guard notation when acquiring mutex and spinlock 2024-10-03 08:53:14 -07:00
iqs62x-keys.c Input: switch back to struct platform_driver::remove() 2024-10-15 11:43:25 -07:00
jornada680_kbd.c
jornada720_kbd.c
lkkbd.c Input: keyboard - use sizeof(*pointer) instead of sizeof(type) 2024-06-02 21:32:01 -07:00
lm8323.c Input: Use str_enable_disable-like helpers 2025-01-14 13:41:41 -08:00
lm8333.c Input: drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-13 15:43:19 -07:00
locomokbd.c Input: locomokbd - use guard notation when acquiring spinlock 2024-11-05 14:17:25 -08:00
lpc32xx-keys.c Input: lpc32xx-keys - use guard notation when acquiring mutex 2024-10-03 08:53:31 -07:00
maple_keyb.c Input: maple_keyb - use guard notation when acquiring mutex 2024-11-05 14:17:32 -08:00
matrix_keypad.c Input: matrix_keypad - remove duplicated include 2024-10-04 04:15:55 -07:00
max7359_keypad.c Input: drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-13 15:43:19 -07:00
mpr121_touchkey.c Input: mpr121 - use devm_regulator_get_enable_read_voltage() 2024-11-19 21:37:41 -08:00
mt6779-keypad.c Input: mt6779-keypad - use devm_clk_get_enabled() 2024-08-28 11:10:05 -07:00
mtk-pmic-keys.c Input: mtk-pmic-keys - switch to for_each_child_of_node_scoped 2024-10-19 21:21:37 -07:00
newtonkbd.c Input: keyboard - use sizeof(*pointer) instead of sizeof(type) 2024-06-02 21:32:01 -07:00
nspire-keypad.c Input: nspire-keypad - use devm_platform_get_and_ioremap_resource() 2023-07-10 17:44:26 -07:00
omap-keypad.c Input: omap-keypad - use guard notation when acquiring mutex 2024-10-30 15:54:51 -07:00
omap4-keypad.c Input: switch back to struct platform_driver::remove() 2024-10-15 11:43:25 -07:00
opencores-kbd.c Input: opencores-kbd - convert to devm_platform_ioremap_resource() 2023-07-10 17:44:27 -07:00
pinephone-keyboard.c Input: pinephone-keyboard - use devm_regulator_get_enable() 2023-07-07 17:03:26 -07:00
pmic8xxx-keypad.c Input: pmic8xxx-keypad - use guard notation when acquiring mutex 2024-10-03 08:58:57 -07:00
pxa27x_keypad.c Input: pxa27x_keypad - use guard notation when acquiring mutex 2024-10-03 08:58:57 -07:00
qt1050.c Input: qt1050 - use device_for_each_child_node_scoped() 2024-07-15 17:02:13 -07:00
qt1070.c Input: drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-13 15:43:19 -07:00
qt2160.c Input: drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-13 15:43:19 -07:00
samsung-keypad.c Input: switch back to struct platform_driver::remove() 2024-10-15 11:43:25 -07:00
sh_keysc.c Input: switch back to struct platform_driver::remove() 2024-10-15 11:43:25 -07:00
snvs_pwrkey.c Input: snvs_pwrkey - use devm_clk_get_optional_enabled() 2024-08-31 15:25:05 -07:00
spear-keyboard.c Input: spear-keyboard - don't include 'pm_wakeup.h' directly 2024-11-19 21:35:48 -08:00
st-keyscan.c Input: st-keyscan - use guard notation when acquiring mutex 2024-10-03 08:58:57 -07:00
stmpe-keypad.c Input: switch back to struct platform_driver::remove() 2024-10-15 11:43:25 -07:00
stowaway.c Input: keyboard - use sizeof(*pointer) instead of sizeof(type) 2024-06-02 21:32:01 -07:00
sun4i-lradc-keys.c Input: sun4i-lradc-keys - don't include 'pm_wakeup.h' directly 2024-11-19 21:35:54 -08:00
sunkbd.c Input: sunkbd - use guard notation when pausing serio port 2024-10-04 00:58:15 -07:00
tc3589x-keypad.c Input: tc3589x - use of_property_present() 2024-07-31 12:36:49 -07:00
tca6416-keypad.c Input: tca6416-keypad - remove unused struct tca6416_drv_data 2024-05-06 15:41:28 -07:00
tca8418_keypad.c Input: Switch i2c drivers back to use .probe() 2023-05-17 09:59:11 -07:00
tegra-kbc.c Input: tegra-kbc - use of_property_read_variable_u32_array() and of_property_present() 2024-09-13 23:16:23 -07:00
tm2-touchkey.c Input: drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-13 15:43:19 -07:00
twl4030_keypad.c
xtkbd.c Input: keyboard - use sizeof(*pointer) instead of sizeof(type) 2024-06-02 21:32:01 -07:00