媒体密钥不适用于Ubuntu 17.10

我在Thinkpad T470上运行了一个非常全新的Ubuntu 17.10安装。

每当我在我的任何一个键盘或蓝牙耳机上击中其中一个媒体键(播放/暂停,跳过等)时,我都会看到这个图标:

弹出媒体键,表示不允许任何操作

显示器上闪烁,但我的媒体播放器都没有反应。

键在showkey被识别:

 ~$ sudo showkey -k press any key (program terminates 10s after last keypress)... keycode 163 press keycode 163 release keycode 165 press keycode 165 release keycode 164 press keycode 164 release 

但他们没有出现在xev

我最近遇到了同样的问题,在失去了很多时间之后,我在一些Arch论坛上找到了答案。

整个问题看起来像是’它不是一个bug,它是来自Gnome开发者的特色’。

简而言之:当您按下媒体按钮时,它会生成一个键码,然后将其转换为命令。 假设你按下播放/暂停按钮。 它生成密钥代码162和命令XF86AudioPlay。

现在,几乎所有可能正在等待此事件的媒体应用程序(无论是VLC,图腾,kodi,spotify等)都希望获得纯XF86AudioPlay命令。 Gnome做了什么? 它拦截此命令并将其转换为自己的命令“play”。 因此,xev和xbindkeys都没有正确显示此事件 – 它们从未收到他们可以理解的命令。

当您按下媒体按钮时,Gnome会收到命令并检查是否有任何应用程序已识别为能够接收此命令。 如果有(让我们说图腾,rhytmbox,也许是VLC)它会发送应该起作用的“游戏”。 如果没有识别出能够接收此命令的应用程序,Gnome将显示附加到第一个post的符号,并且不会在任何地方发送任何命令。

解决方案很简单 – 让Gnome无法拦截媒体密钥事件。 安装dconf-editor,转到org.gnome.settings-daemon.plugins.media-keys并将任何应该起作用的按钮从XF86SomeExapmle更改为none(”)。 这样任何应用程序都应该直接接收键命令。

如果键盘媒体键无法在Ubuntu桌面上运行,则可以使用D-Bus支持向Spotify发送正确的命令。 从控制台validation以下命令:

播放/暂停

dbus-send –print-reply –dest = org.mpris.MediaPlayer2.spotify / org / mpris / MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

下一个

dbus-send –print-reply –dest = org.mpris.MediaPlayer2.spotify / org / mpris / MediaPlayer2 org.mpris.MediaPlayer2.Player.Next

以前

dbus-send –print-reply –dest = org.mpris.MediaPlayer2.spotify / org / mpris / MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous

启用媒体密钥快捷方式

要将这些绑定到键盘,请转到设置>键盘>快捷方式>自定义快捷方式,然后选择“添加”。 使用上面的命令之一,然后点击要与新命令绑定的键。

资源

https://fabianlee.org/2016/05/25/ubuntu-enabling-media-keys-for-spotify/

最后两个答案的组合对我有用。 我有Ubuntu 18.04的键盘测试工作

 ~$ sudo showkey -k press any key (program terminates 10s after last keypress)... keycode 163 press keycode 163 release keycode 165 press keycode 165 release keycode 164 press keycode 164 release 

但是当我去活动 – >键盘并尝试使用Play / Next / Previous做任何事情时它根本不起作用。 当我停用默认密钥关联(调用密钥关联对话框,按退格键并单击保存)并创建一个全新的工具时,非常有帮助的是来自@foamboarder的答案

现在,即使从睡眠模式唤醒计算机后,快捷程序设置中的此屏幕截图现在看起来也能正常工作

似乎没有相应地映射键码。 您可以按照ubuntu文档中的说明手动映射密钥: https : //help.ubuntu.com/stable/ubuntu-help/keyboard-shortcuts-set.html

  1. 打开活动概述,然后开始键入键盘。
  2. 单击键盘以打开面板。
  3. 选择“快捷方式”选项卡。
  4. 在左窗格中选择一个类别,在右侧选择所需操作的行。 当前的快捷方式定义将更改为新加速器…
  5. 按住所需的组合键,或按Backspace键清除。