因此,我为我的笔记本电脑购买了这个键盘,它没有媒体键,而且我非常习惯按笔记本电脑上的播放/暂停按钮来暂停后台播放的任何媒体。然而,使用这个键盘,由于没有媒体键,我必须创建自己的键盘快捷键来执行此操作。到目前为止,我已经成功地制作了用于音量控制的键盘快捷键。
研究和我的尝试:
我发现此页面显示了从终端模拟媒体键的命令。 https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181。该命令是,
xdotool key XF86AudioPlay
但是当我通过以下方式创建键盘快捷键时设置 > 键盘 > 应用程序快捷方式。这似乎不起作用。当我按下我设置的键盘快捷键时超级+F11我的 CPU 使用率上升了一点,这意味着快捷方式正在工作。我通过更改快捷方式执行的命令来确认这一点,
exo-open --launch WebBrowser
正如您可能认为的那样,当我按下时会打开我的网络浏览器超级+F11。现在,因为我了解一点 C/C++,所以我创建了这个包装程序,它执行完全相同的操作
#include <stdlib.h>
int main() {
system("xdotool key XF86AudioPlay");
}
并映射了执行该程序的快捷方式,但是唉!它仍然不起作用。
当我按下笔记本电脑键盘上的默认播放/暂停按钮时,如何获取 XFCE 执行的命令,因为这似乎会播放/暂停在后台播放的任何媒体。
我在 Arch Linux 上使用 XFCE。我通常在 rhytmbox 音乐播放器上听音乐。
答案1
如果您只想控制rhythmbox
播放rhythmbox-client --play
歌曲或rhythmbox-client --pause
暂停歌曲就足够了。
但我发现这个软件playerctl
在一些 Arch wiki 中被称为控制当前播放的媒体。我不是 100% 确定它的优先级是什么,但是当我打开 YouTube 视频时,它默认控制它,而不是扰乱 Rhythmbox。要在播放和暂停之间切换,请运行playerctl play-pause
。要转到您运行的下一个视频/音乐playerctl next
以及您运行的上一个视频/音乐playerctl previous
。
我不能 100% 确定这是否适用于任何其他发行版,或者是否可用,但它对我来说适用于 Arch。
答案2
Rhythmbox 似乎支持这两种rhythmbox-client --play/--pause
命令,以及使用 发送的 D-Bus 命令dbus-send
,如中所述AskUbuntu 上的这个问题和这个问题在 U&L.SE 上,链接自 AskUbuntu 答案。
简而言之,dbus-send
命令是:
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
前提是需要先启用 Rhythmbox 的 MPRIS API。
但是,如果您还需要使用这些相同的按键来控制任何 YouTube 视频,您可能需要这些按键来激活一个脚本,该脚本可以找出当前正在播放的播放器,并将正确的命令发送到 Rhythmbox 或任何网络浏览器(或其他应用程序)您用来播放 YouTube 视频。对于浏览器来说,需要为正确的浏览器选项卡发送命令/按键,该选项卡不一定是当前的浏览器选项卡......
答案3
我发现与您相同:该命令xdotool key XF86AudioPlay
在 shell 中运行,但不能从快捷方式或应用程序启动器运行。所以我得出的结论是,xdotool
只有从交互式 shell 执行时才有效。有趣的是,我使用以下命令让它在键盘快捷键和启动器图标(例如任务栏上)中工作:
bash -i -c 'xdotool key XF86AudioPlay'
一旦您移除-i
开关,从而使其成为bash
非交互式,它就会停止工作。不知道为什么会出现这种情况...
该方法的好处XF86AudioPlay
是,它还适用于暂停在 Firefox 后台播放的 Youtube 视频。
更新
好的,我知道为什么会发生这种情况。我的内心.bashrc
已经改变$LD_LIBRARY_PATH
,这是xdotool
跑步所必需的。然而,当登录到我的 GUI 会话 (XFCE) 时,这种情况并没有发生。因此,直接从 GUI(例如启动器或 Alt+F2)启动而不是从终端启动的任何程序都不会看到修改后的$LD_LIBRARY_PATH
,从而丢失一些库。
所以正确的解决方案实际上是将 的修改放在$LD_LIBRARY_PATH
in.profile
而不是.bashrc
。这样,XFCE 将在登录时执行它们,并且所有程序都可以看到它们。尽管如此,我还是将旧的答案留在这里以供未来的访客使用。
答案4
如果您使用 Audacious,您可以使用
audacious -t
在暂停和播放之间切换(请参阅man audacious
)。