如何将 Caps_Lock 重新映射为 F12?

如何将 Caps_Lock 重新映射为 F12?

我尝试过这些:

  1. 首先我尝试使用xmodmap

    clear Lock

    keycode 66 = F12

但问题是它会在每次重新启动或注销后重置我的自定义映射。因此,我xmodamp ~/.Xmodmap每次重新启动或注销后都必须运行该命令。尝试自动化也无济于事,因为 xmodamp ~/.Xmodmap运行需要大约 10 秒钟,并且在此期间整个计算机被阻止,即我无法切换到或使用任何其他程序。

我还听说不建议使用 xmodmap 。

  1. 我尝试的下一件事是F12在文件中进行设置/usr/share/X11/xkb/symbols/pc。我尝试了这样的事情: key <CAPS> {»-[ F12»»-]»};(<--该 »符号代表tabs我的计算机上)。但这似乎没有任何效果。

有没有办法永久地将 重新映射Caps Lock到功能键F12

答案1

我知道这是一个老问题,但我一直在努力解决同样的问题。

对我来说,问题似乎是某些东西覆盖了xmodmap设置(例如,setxkbmap会这样做,所以请确保它是您在命令.Xmodmap之前使用它的一部分xmodmap),或者它没有运行。

我的.xinitrc显然应该运行我的.Xmodmap...

你的设置是什么样的?

我正在使用 i3,我现在有一个所谓的解决方法,通过xmodmap ~/.Xmodmap在我的 i3-config 文件中运行,它可以工作。我不喜欢这个解决方案,因为如果我使用 Plasma 设置,CapsLock 将恢复正常。

我的.Xmodmap看起来像这样:

remove Lock = Caps_Lock
keysym Caps_Lock = F12

我不认为我有你xmodmap ~/.Xmodmap花很长时间的问题。

我希望我们能找到解决方案,如果找到请告诉我。

谢谢。

答案2

遵循这个答案对我有用:https://unix.stackexchange.com/a/170357/105061

为了完整起见,我在这里解释一下:

  1. 跑去sudo evtest寻找
  • 键盘公共汽车,小贩, 和产品。查找与此类似的行:
Input device ID: bus 0x3 vendor 0x46d product 0xc31c version 0x110
  • 扫码您想要更改的密钥。按 键并记下 后的值(MSC_SCAN)
Event: time 1678720211.060421, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039
  1. 创建一个包含重新映射的文件,格式为/etc/udev/hwdb.d/98-custom-keyboard.hwdb.请小心将标识符转换为大写,以便可以通过分隔符bv和来区分它们p。键名应该是小写的。我的文件最终看起来像这样:
evdev:input:b0003v046DpC31C*
 KEYBOARD_KEY_70039=f12       # capslock to f12
  1. 使用 重建数据库sudo udevadm hwdb --update
  2. 使用 来应用设置sudo udevadm trigger --sysname-match="event*"
  3. (可选)再次运行sudo evtest以验证其是否有效。

相关内容