当按下并按住某些键(例如Control,,Alt)时Super,不会生成释放事件,而按下其他键时会产生多个释放和按下事件,模拟键被按下和释放多次。
我想将Fn键盘上的某些多媒体键或按键设为修饰键,并xev
显示它们都是第二种类型。是否可以将普通按键设为粘性键,这样就不会产生释放事件?
答案1
如果我理解正确的话,您需要做的是在菜单 > 系统 > 首选项 > 键盘中取消选中“按住键时重复按键”选项。
答案2
您需要做的第一件事是确定您想要替换的键的“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
您需要将它们写下来或记住以便以后使用。
- 打开文本编辑器并输入以下文本(我以用 Left Super 替换 F12 为例):
keycode 96 = Super_L
或者
keysym F12 = Super_L
在我的测试中,任何一个选项都可以。
将此文件保存在您的主目录中
.Xmodmap
(注意大写的“X”)为了测试它,请在终端中再次从主目录输入此命令:
xmodmap .Xmodmap
如果一切按计划进行,您的 F12 键现在应该可以作为左超级键使用。
每次对文件进行更改时,.Xmodmap
您可以再次运行上述命令来应用更改。
您不需要每次登录时都运行此命令,因为每次登录时都会读取并应用此命令。但是,如果这不起作用,那么您当然可以将此命令放入启动脚本中。
有几点需要注意:
a) 某些键盘会有一个标有“Fn”或类似标记的键,用于访问按键上的辅助功能,如多媒体控制。据我所知,您无法重新映射这个特定的“Fn”键本身,但您应该能够重新映射按“Fn+键”提供的各个多媒体键。
b) 如果您拔下并重新插入键盘,则需要使用.Xmodmap
上面步骤 4 中给出的相同命令重新加载配置。
c) 如果由于某种原因您想要注释掉(忽略).Xmodmap
文件中的某一行,则需要在该行前面放置一个“!”(而不是像其他一些配置文件中那样放置“#”)。