我尝试过这些:
首先我尝试使用
xmodmap
clear Lock
keycode 66 = F12
但问题是它会在每次重新启动或注销后重置我的自定义映射。因此,我xmodamp ~/.Xmodmap
每次重新启动或注销后都必须运行该命令。尝试自动化也无济于事,因为 xmodamp ~/.Xmodmap
运行需要大约 10 秒钟,并且在此期间整个计算机被阻止,即我无法切换到或使用任何其他程序。
我还听说不建议使用 xmodmap 。
- 我尝试的下一件事是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
为了完整起见,我在这里解释一下:
- 跑去
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
- 创建一个包含重新映射的文件,格式为
/etc/udev/hwdb.d/98-custom-keyboard.hwdb
.请小心将标识符转换为大写,以便可以通过分隔符b
、v
和来区分它们p
。键名应该是小写的。我的文件最终看起来像这样:
evdev:input:b0003v046DpC31C*
KEYBOARD_KEY_70039=f12 # capslock to f12
- 使用 重建数据库
sudo udevadm hwdb --update
。 - 使用 来应用设置
sudo udevadm trigger --sysname-match="event*"
。 - (可选)再次运行
sudo evtest
以验证其是否有效。