如何找到*为什么*我无法绑定某些键盘快捷键(或者哪个应用程序接受了它)?

简而言之:是否(在Unity下)有任何方法可以找出哪个应用程序抓住了一些全局快捷方式? 我不要求“标准快捷方式”,而是通过某种方式获取有关实际快捷方式的信息(哪个应用程序实际上是在我当前的配置中保留给定的密钥)

更长的故事:

我在管理键盘快捷键时遇到了可重复的问题。 在这一刻:

  • Synapse有时(*)无法绑定Win-Space作为激活快捷方式,报告“无法注册热键’激活’并带有签名’空格’”(通常意味着此快捷方式已被采用)

    (*)一次登录后,它可以工作,在另一次登录后它没有。 我怀疑两个应用之间有一些竞争……

  • F9由于某种原因使我的屏幕稍暗(并且F9没有达到应用程序级别的快捷方式,所以例如我的byobu菜单不起作用)

我试着看各个地方,并且:

  • 我在键盘设置/快捷方式中没有看到任何这些快捷方式

  • 我在gconf-editor中找不到它们(我特别尝试在值中搜索F9,没有找到)

  • 我在dconf-editor中找不到它们(没有搜索,所以我点击了一些最明显的路径)

所以我的问题是:有没有办法可以询问unity / dconf / gconf / d-bus /当前全局热键分配(哪个进程保留哪个键)。 或者强制将这些分配记录到某个日志文件中。 或者从某个地方grep他们。 要么………

Ubuntu桌面实际上是 compiz,而Unity本身只是一个compiz插件。

相反,如果您设置并启用compiz“命令”插件并使用ccsm设置键盘快捷键,则存在冲突时,ccsm应提醒您哪个插件导致冲突,并且还应提供禁用冲突插件或冲突键绑定的选项在应用您的设置之前。

就个人而言,我在14.04+时也遇到了设置键盘快捷键的困难,但自从我决定开始使用CCSM插件而不是Unity中的键盘快捷键设置以来,我没有遇到任何问题,所有的快捷方式都运行得很好所以强烈建议你至少把它作为一种选择。

现在我明白你需要什么……

sudo apt-get install evtest 

享受开箱即用的Ubuntu USB HID活动!

警告这对PS2 /样式键盘不起作用……(但是谁还在那里使用?):-)

从我的一个旧答案 :

首先你必须安装xdotool

 sudo apt-get install xdotool 

我编写了一系列命令,向我们展示击键时的被动抓取。 例如,要查看抓取Shift + PrintScreen组合的内容,可以使用下面的“脚本”:

 xdotool keydown "shift+Print"; xdotool key "XF86LogGrabInfo"; xdotool keyup "Print"; sleep 1; xdotool keyup "shift"; tail /var/log/Xorg.0.log 

这将触发Shift + PrtSc keyevent并在默认的Ubuntu安装中显示gnome-settings-daemon抓取键盘。 至少这适用于我的旧版12.04安装,但看起来像14.04我必须使用这个:

 xdotool key "shift+Print"; sleep 1; xdotool key "XF86LogGrabInfo"; xdotool keyup "Print"; sleep 1; xdotool keyup "shift"; tail /var/log/Xorg.0.log 

 xdotool keydown "F12"; xdotool key "XF86LogGrabInfo"; xdotool keyup "F12"; tail /var/log/Xorg.0.log 

仍然有效,有时,而不是其他时间。 不知道为什么。

您只需通过更改必须模拟的键来修改上述“脚本”。