如何才能将任意键变成修饰键?

如何才能将任意键变成修饰键?

当按下并按住某些键(例如Control,,Alt)时Super,不会生成释放事件,而按下其他键时会产生多个释放和按下事件,模拟键被按下和释放多次。

我想将Fn键盘上的某些多媒体键或按键设为修饰键,并xev显示它们都是第二种类型。是否可以将普通按键设为粘性键,这样就不会产生释放事件?

答案1

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

在此处输入图片描述

答案2

您需要做的第一件事是确定您想要替换的键的“keycode”或“keysym”以及您想要用来替换它的键。

让我们举个例子,用‘Left Super’代替‘F12’键。

  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. 打开文本编辑器并输入以下文本(我以用 Left Super 替换 F12 为例):

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文件中的某一行,则需要在该行前面放置一个“!”(而不是像其他一些配置文件中那样放置“#”)。

相关内容