我有一台运行 Ubuntu 的 Thinkpad X1(第一代)(之前是 14.04)
它的侧面有多媒体按钮:XF86Launch1、XF86AudioMute、XF86AudioRaiseVolume、XF86LowerVolume 和 XF86AudioMicMute。他们曾经在 14.04 中工作正常,甚至到“静音”键内的橙色小灯在静音时会亮起而在不静音时会熄灭。
我升级到 16.04,它们都不再工作了。
我意识到它们被键盘快捷键抓住(但不被使用),可以从 gnome-control-center 或 unity-control-center 访问。
当我关闭媒体键的键盘快捷键时,我可以使用 xev 查看键码,因此能够使用 xbindkeys 之类的东西来破解解决方案。
除了输入静音,它仍然无法正常工作。所以我检查了 acpi_listen 并看到按钮正在被注册,就像其他媒体键一样,但是当我按下它时,我看到:
(gnome-settings-daemon:14711): GLib-GIO-WARNING **: Dropping signal AcceleratorActivated of type (uuu) since the type from the expected interface is (ua{sv})
当我杀死 gnome-settings-daemon 时,我可以正确地看到 xev 中的输入静音键并根据需要抓取它。
如何防止 gnome-settings-daemon 尝试(并且未能)获取此密钥?
如果您没有
gnome-shell
作为桌面环境运行,那么您的媒体密钥将会出现问题。它们由 配置和处理,但自2013 年提交以来就被gnome-settings-daemon
抓住了。gnome-shell
要在不运行或统一的情况下恢复旧行为
gnome-shell
,您必须安装并运行 shim 程序来抓取和转发密钥。对于媒体密钥功能,arch linux AUR 包gnome-settings-daemon-compat中提供了这样的程序。这个包提供了可执行文件
/usr/lib/gnome-settings-daemon/gnome-fallback-media-keys-helper
,它为任何桌面环境/窗口管理器中的媒体密钥提供支持。您需要将它添加为 gnome 会话的依赖项,或者让它在会话初始化时运行。我不确定它是否是为 ubuntu 打包的,或者你是否可以运行
unity-fallback-media-keys-helper
(我没有安装来检查)。