如何检测全局按键

Ion*_*zău 9 keyboard-shortcuts keyboard x-server

我有一台 Asus 笔记本电脑,它有一个特殊的键,可以配置为启动任何软件(至少在 Windows 上)。

一般问题是:如何检测任何按键(全局)?

那么,如何检测用户何时按下此键?

slm*_*slm 14

我通常会xev用来确定密钥的扫描码,然后使用xdotoolXBindKeys将其映射到我想要的任何操作。

xev

$ xev | grep -A2 --line-buffered '^KeyRelease' \
    | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
Run Code Online (Sandbox Code Playgroud)

运行上述xev命令后,您将看到一个弹出的白色小窗口。您需要将鼠标放在此窗口上,然后按问题键。当您按下各个键时,该键的名称应显示在终端中。

截屏

                   xev 对话框的 ss

将密钥映射到有用的东西

例如,您可以创建将使用 启动命令的快捷键组合xbindkeys为此,我已经成功地在 GNOME 3.8.4 上使用XBindKeys

我的使用量不大,但我喜欢为 Nautilus 创建键盘快捷键,以便在打开某些目录的情况下启动。

例子

您首先需要确保xbindkeys安装了软件包。

然后,您需要运行以下命令(仅一次)以创建模板xbindkeys配置文件。

$ xbindkeys --defaults > /home/saml/.xbindkeysrc
Run Code Online (Sandbox Code Playgroud)

创建文件后,您可以在文本编辑器中打开它并添加如下规则:

"nautilus --browser /home/saml/projects/path/to/some/dir"
  Mod4+shift + q
Run Code Online (Sandbox Code Playgroud)

进行上述更改后,xbindkeys如果它已经在运行,我们需要杀死它,然后重新启动它。

$ killall xbindkeys
$ xbindkeys
Run Code Online (Sandbox Code Playgroud)

现在,只要我输入Mod+ Shift+ QNautilus 就会打开它并打开相应的文件夹。

使用 GNOME 的键盘小程序

如果您通过设置(系统设置键盘,选择快捷方式选项卡并为您的浏览器添加新的自定义快捷方式。

   党卫军#1

使用图中的步骤 1-5,您也可以将命令映射到您的特殊键。