如何将任何键变成修饰键?

Har*_*han 14 xmodmap key-binding

当一个按下并保持了某些键,如ControlAltSuper,,同时与生成模拟键以外键的多个版本及新闻事件被推&释放几次不会产生释放事件。

我想把一些多媒体键或Fn键盘上的键做成修饰键,并xev显示它们都是第二种类型。是否可以使普通键具有粘性从而不生成释放事件?

des*_*gua 1

如果我理解正确的话,您想要的是在“菜单”>“系统”>“首选项”>“键盘”中取消选中“按住按键时重复按键”选项。

在此输入图像描述


小智 1

您需要做的第一件事是识别您想要替换的按键的“keycode”或“keysym”以及您想要替换它的按键。

让我们做一个将“F12”键替换为“Left Super”的示例。

  1. 打开终端并运行以下命令:

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

您需要将它们写下来或记住它们以供以后使用。

  1. 打开文本编辑器并输入以下文本(我将 F12 替换为 Left Super 的示例):

keycode 96 = Super_L

或者

keysym F12 = Super_L

在我的测试中,任一选项都应该有效。

  1. 将此文件保存在您的主目录中.Xmodmap (注意大写的“X”)

  2. 要测试它,请在终端中再次从主目录输入以下命令:

xmodmap .Xmodmap

如果一切按计划进行,您的 F12 键现在应该充当左超级键。

每次对文件进行更改时,.Xmodmap您都可以再次运行上述命令来应用更改。

您不需要每次登录时都运行此命令,因为每次登录时都应该读取并应用该命令。但是,如果这不起作用,那么您当然可以将此命令放入启动脚本中。

有一些注意事项需要提及:

a) 某些键盘有一个标记为“Fn”或类似的键,用于访问按键上的辅助功能,例如多媒体控制。根据我的阅读,您无法重新映射这个特定的“Fn”键本身,尽管您应该能够重新映射按“Fn+键”提供的各个多媒体键。

b) 如果您拔下键盘并重新插入,您将需要.Xmodmap使用上面步骤 4 中给出的相同命令重新加载配置。

c) 如果由于某种原因你想注释掉(忽略)文件中的一行.Xmodmap,你需要添加一个“!” 位于该行的前面(而不是像其他一些配置文件中那样的“#”)。