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

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

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

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

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

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

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

    • 原本是
      keycode  37 = Control_L NoSymbol Control_L
      keycode  151 = XF86WakeUp NoSymbol XF86WakeUp
      
    • 改为
      keycode  37 = XF86WakeUp NoSymbol XF86WakeUp
      keycode  151 = Control_L NoSymbol Control_L
      
  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
    
  • 对于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
    

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

相关内容