
因此,我為我的筆記型電腦購買了這個鍵盤,它沒有媒體鍵,而且我非常習慣按筆記型電腦上的播放/暫停按鈕來暫停後台播放的任何媒體。然而,使用這個鍵盤,由於沒有媒體鍵,我必須創建自己的鍵盤快捷鍵來執行此操作。到目前為止,我已經成功地製作了用於音量控制的鍵盤快捷鍵。
研究和我的嘗試:
我發現此頁面顯示了從終端模擬媒體鍵的命令。 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
)。