Kev*_* Jr 5 keyboard xmodmap remapping
因此,我花了几个小时试图弄清楚如何重新映射 Lenovo ThinkPad T440p 笔记本电脑上的几个按键。2020 年的这篇文章让我非常接近。它使用xmodmap命令生成一个文本文件来简单地交换一些关键代码。以下是我所遵循的过程的摘要:
使用该命令xev -event keyboard获取我想要交换的按键的按键代码。
Fn密钥,它给出了keycode 151 (keysym 0x1008ff2b, XF86WakeUp)Ctrl,它给出了keycode 37 (keysym 0xffe3, Control_L)使用我的根目录中的命令生成当前的键码映射并存储到名为“.Xmodmap”的文本文件中xmodmap -pke > .Xmodmap。
使用文本编辑器打开“.Xmodmap”文件
code .Xmodmap命令使用 VS Code。交换适当的线路。
keycode 37 = Control_L NoSymbol Control_L
keycode 151 = XF86WakeUp NoSymbol XF86WakeUp
Run Code Online (Sandbox Code Playgroud)
keycode 37 = XF86WakeUp NoSymbol XF86WakeUp
keycode 151 = Control_L NoSymbol Control_L
Run Code Online (Sandbox Code Playgroud)
保存“.Xmodmap”文件。
使用命令“xmodmap .Xmodmap”重新映射按键。
奇怪的是,它对于作者的测试用例来说效果很好(即将左箭头键和右箭头键分别映射到PgUp&PgDn键)。另外,当我运行xev -event keyboard命令并测试按键时,它们实际上确实显示了正确的更改:
Ctrl,它给出
KeyRelease event, serial 28, synthetic NO, window 0x4400001,
root 0x175, subw 0x0, time 12122767, (136,230), root:(253,339),
state 0x4, keycode 37 (keysym 0x1008ff2b, XF86WakeUp), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Run Code Online (Sandbox Code Playgroud)
Fn密钥,它给出
KeyRelease event, serial 28, synthetic NO, window 0x4400001,
root 0x175, subw 0x0, time 12190541, (377,341), root:(494,450),
state 0x0, keycode 151 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Run Code Online (Sandbox Code Playgroud)
对这里发生的事情有什么建议吗?