我正在寻找一个可以知道当前按下了哪些键(包括 Alt、Shift、Ctrl 等)的工具。需要它对可能有故障的键盘进行健康检查。
答案1
安装keymon
。它位于 Universe 存储库中,并使用key-mon
(不是keymon
!) 运行它。
曼凯蒙有这个:
Keymon——GTK 的键盘和鼠标监视窗口。
请阅读man keymon
所有可用的选项。
您还应该右键单击它来检查设置是否适合您。
如果您不喜欢默认位置,请将其拖动到屏幕上更合适的位置。
另一种方法是screenkey
,也在 Universe 存储库中。screenkey 的一个特点是,只有当您输入内容时,它才会显示界面,如果键盘处于非活动状态,它会在几秒钟后消失。但是,与 keymon 不同,screenkey 不会记录鼠标点击。
有YouTube 视频keymon
和上都有screenkey
。视频是德语的,但仍然很容易理解。
答案2
要测试可能有故障的键盘,最好尽可能低级。无需深入内核空间即可做到这一点的最简单方法之一是几乎直接使用/dev/input/event*
设备文件。也就是说,您可以使用evtest
它来查看所有键盘输入。如果您在抓取模式下运行它,这将允许您拦截一切-甚至魔法 SysRq连击(有趣的是,甚至沙特阿美)!
以下是我的做法。首先,通过运行获取输入设备列表sudo evtest
:
$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: Power Button
/dev/input/event1: Power Button
/dev/input/event2: PC Speaker
/dev/input/event3: Video Bus
/dev/input/event4: HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event5: HDA Intel HDMI HDMI/DP,pcm=7
/dev/input/event6: HDA Intel HDMI HDMI/DP,pcm=8
/dev/input/event7: HDA Intel HDMI HDMI/DP,pcm=9
/dev/input/event8: HDA Intel HDMI HDMI/DP,pcm=10
/dev/input/event9: HDA Intel PCH Front Mic
/dev/input/event10: HDA Intel PCH Rear Mic
/dev/input/event11: HDA Intel PCH Line
/dev/input/event12: HDA Intel PCH Line Out
/dev/input/event13: HDA Intel PCH Front Headphone
/dev/input/event14: HDA NVidia HDMI/DP,pcm=3
/dev/input/event15: HDA NVidia HDMI/DP,pcm=7
/dev/input/event16: HDA NVidia HDMI/DP,pcm=8
/dev/input/event17: ImExPS/2 Generic Explorer Mouse
/dev/input/event18: AT Translated Set 2 keyboard
Select the device event number [0-18]:
暂时不要在这里选择任何东西:只需按Ctrl+ C。这次运行evtest
处于简单的非抓取模式,不会让你截取所有内容。但现在你知道了你需要的设备文件(在我上面给出的例子中,它是/dev/input/event18
)。
现在您可以实际evtest
在抓取模式下运行,使用--grab
选项,以便它拦截来自键盘的所有事件 - 包括Return将命令提交给 shell 后的释放、后续的Ctrl+ C、Magic SysRq、VT 切换快捷键等。为了避免被锁定在系统之外,我们将为 设置一个超时evtest
。
sudo su -c 'sleep 1; timeout -k5 10 evtest --grab /dev/input/event18'
此命令执行以下操作:
- 等待 1 秒,以便您可以Return在键盘被抓取之前释放(否则您将获得快速滚动控制台的自动重复)
- 以抓取模式启动
evtest
我的键盘的设备文件(用你的替换它)。 evtest
运行时超时为 10 秒,并且(不太可能)在挂起的情况下有 5 秒的额外宽限期,之后它将被杀死SIGKILL
,希望将键盘控制权返回给您。sudo
围绕整个命令,而不仅仅是evtest
确保您输入密码(如果需要)前sleep 1
,否则这次睡眠将毫无用处
在 10 秒的超时时间内(当然,您可以将其更改为更适合您的时间),您可以按下键盘上的任何内容(除了可能Fn以非标准方式工作的 - 驱动键),并查看其输入的内容。
答案3
xev
也是一个选项。如果尚未安装,请使用以下命令进行安装:
sudo apt install xev
然后运行:
xev
确保选择了打开的小白色窗口,然后按任意键查看有关它的详细信息。
为了限制 的xev
冗长输出,以便它仅显示您按下的键,您可以将其输出传递给awk
:
xev | awk /keysym/'{sub(/\),/,""); print $7}'
无论如何,请注意,xev
您按下的每个键都会注册两个事件,一个用于按下键,一个用于释放键。
答案4
有一个网站https://www.keyboardtester.com/它可以让您看到您按下了哪些键,并显示键盘布局。此外,还有一个名为的包xkeycaps
可供使用。将鼠标移到某个键上会显示该键生成的键符和修饰符
还有更多网站可用,例如