如何建立鍵盤快捷鍵來播放/暫停後台運行的任何音訊/視訊?

如何建立鍵盤快捷鍵來播放/暫停後台運行的任何音訊/視訊?

因此,我為我的筆記型電腦購買了這個鍵盤,它沒有媒體鍵,而且我非常習慣按筆記型電腦上的播放/暫停按鈕來暫停後台播放的任何媒體。然而,使用這個鍵盤,由於沒有媒體鍵,我必須創建自己的鍵盤快捷鍵來執行此操作。到目前為止,我已經成功地製作了用於音量控制的鍵盤快捷鍵。

研究和我的嘗試:

  1. 我發現此頁面顯示了從終端模擬媒體鍵的命令。 https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181。該命令是,xdotool key XF86AudioPlay但是當我透過以下方式建立鍵盤快捷鍵時設定 > 鍵盤 > 應用程式捷徑。這似乎不起作用。

  2. 當我按下我設定的鍵盤快捷鍵時超級+F11我的 CPU 使用率上升了一點,這意味著快捷方式正在工作。我透過更改快捷方式執行的命令來確認這一點,exo-open --launch WebBrowser正如您可能認為的那樣,當我按下時會打開我的網頁瀏覽器超級+F11

  3. 現在,因為我了解一點 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_PATHin.profile而不是.bashrc。這樣,XFCE 將在登入時執行它們,並且所有程式都可以看到它們。儘管如此,我還是將舊的答案留在這裡供未來的訪客使用。

答案4

如果您使用 Audacious,您可以使用

audacious -t

在暫停和播放之間切換(請參閱man audacious)。

相關內容