当一个人按下并按住某些键(如Control, Alt, )时Super,不会产生释放事件,而其他键的多个释放和按下事件会产生模拟按键被多次按下和释放的情况。
我想将一些多媒体键或Fn键盘上的键做成修饰键,并xev
显示它们都是第二种类型。是否可以使普通键具有粘性,从而不产生释放事件?
当一个人按下并按住某些键(如Control, Alt, )时Super,不会产生释放事件,而其他键的多个释放和按下事件会产生模拟按键被多次按下和释放的情况。
我想将一些多媒体键或Fn键盘上的键做成修饰键,并xev
显示它们都是第二种类型。是否可以使普通键具有粘性,从而不产生释放事件?
如果我理解正确,您想要的是取消选中菜单 > 系统 > 首选项 > 键盘中的“按住键时重复按键”选项。
您需要做的第一件事是确定要替换的密钥的“keycode”或“keysym”以及要替换它的密钥。
让我们做一个用“Left Super”替换“F12”键的例子。
xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
这将运行 xev ,它捕获按键,去除不相关的信息,并通过终端输出为您提供您按下的键的“keycode”和“keysym”。按下要替换的每个键和要替换它的键。
当我在键盘上按 F12 时,我得到以下输出:
96 F12
当我在键盘上按 Left Super 时,我得到以下输出:
133 Super_L
您需要在某处写下这些或记住它们以供以后使用。
keycode 96 = Super_L
或者
keysym F12 = Super_L
在我的测试中,任何一个选项都应该有效。
将此文件保存在您的主目录中
.Xmodmap
(注意大写的“X”)要对其进行测试,请在终端中再次从您的主目录输入以下命令:
xmodmap .Xmodmap
如果一切按计划进行,您的 F12 键现在应该可以用作您的左超级键了。
每次对
.Xmodmap
文件进行更改时,都可以再次运行上述命令以应用更改。您不需要在每次登录时都运行此命令,因为每次登录时都应该读取和应用它。但是,如果这不起作用,那么您当然可以将此命令放入启动脚本中。
有几点需要注意:
a) 某些键盘会有一个标有“Fn”或类似名称的键,用于访问按键上的辅助功能,例如多媒体控件。根据我的阅读,您无法重新映射这个特定的“Fn”键本身,尽管您应该能够重新映射按“Fn+键”提供的各个多媒体键。
b) 如果您拔下并重新插入键盘,则需要
.Xmodmap
使用上面第 4 步中给出的相同命令重新加载配置。c) 如果由于某种原因你想注释掉(忽略)
.Xmodmap
文件中的一行,你需要放一个“!” 在行的前面(而不是像其他一些配置文件中的“#”)。