在 Ubuntu 20.04.4 LTS 中映射左“Ctrl”和“fn”键

Kev*_* Jr 5 keyboard xmodmap remapping

因此,我花了几个小时试图弄清楚如何重新映射 Lenovo ThinkPad T440p 笔记本电脑上的几个按键。2020 年的这篇文章让我非常接近。它使用xmodmap命令生成一个文本文件来简单地交换一些关键代码。以下是我所遵循的过程的摘要:

  1. 使用该命令xev -event keyboard获取我想要交换的按键的按键代码。

    • 对于Fn密钥,它给出了keycode 151 (keysym 0x1008ff2b, XF86WakeUp)
    • 对于左键Ctrl,它给出了keycode 37 (keysym 0xffe3, Control_L)
  2. 使用我的根目录中的命令生成当前的键码映射并存储到名为“.Xmodmap”的文本文件中xmodmap -pke > .Xmodmap

  3. 使用文本编辑器打开“.Xmodmap”文件

    • 使用code .Xmodmap命令使用 VS Code。
  4. 交换适当的线路。

  5. 保存“.Xmodmap”文件。

  6. 使用命令“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)

对这里发生的事情有什么建议吗?