
そこで、メディア キーのないノート PC 用にこのキーボードを購入しました。バックグラウンドで再生されているメディアを一時停止するには、ノート PC の再生/一時停止ボタンを押すのが習慣になっています。ただし、このキーボードにはメディア キーがないため、これを行うには独自のキーボード ショートカットを作成する必要があります。これまで、音量コントロール用のキーボード ショートカットを作成してきました。
研究と私の試み:
ターミナルからメディア キーをシミュレートするコマンドを示すこのページを見つけました。 https://askubuntu.com/questions/235126/simulate-media-keys-in-terminal/235181#235181このコマンドは、
xdotool key XF86AudioPlay
しかし、これをキーボードショートカットにすると、設定 > キーボード > アプリケーションショートカット動作しないようです。設定したキーボードショートカットを押すとスーパー+F11CPU使用率が少し上昇し、ショートカットが機能していることを示しています。ショートカットが実行するコマンドを変更してこれを確認しました。
exo-open --launch WebBrowser
これは、あなたが想像しているように、押すとウェブブラウザが開きます。スーパー+F11。私はC/C++を少し知っていたので、まったく同じことを行うラッパープログラムを作成しました。
#include <stdlib.h>
int main() {
system("xdotool key XF86AudioPlay");
}
このプログラムを実行するためのショートカットをマッピングしましたが、残念ながらまだ動作しません。
ノートパソコンのキーボードのデフォルトの再生/一時停止ボタンを押すと、バックグラウンドで再生されているメディアが再生/一時停止されるようですが、XFCE が実行するコマンドを取得するにはどうすればよいですか。
私はArch LinuxでXFCEを使用しています。普段はrhytmbox music playで音楽を聴いています。
答え1
曲の再生やrhythmbox
一時停止のみを制御したい場合は、それで十分です。rhythmbox-client --play
rhythmbox-client --pause
しかし、Arch の wiki で、現在再生中のメディアを制御するというソフトウェアを見つけましたplayerctl
。その優先順位が 100% はっきりしているわけではありませんが、YouTube ビデオを開いているときは、Rhythmbox を操作するのではなく、デフォルトでそれを制御します。再生と一時停止を切り替えるには、 を実行しますplayerctl play-pause
。次のビデオ/音楽に移動するには を実行しplayerctl next
、前のビデオ/音楽に移動するには を実行しますplayerctl previous
。
これが他のディストリビューションでも動作するか、あるいは使用可能かどうかは 100% 確信はありませんが、Arch では動作します。
答え2
Rhythmboxは両方のrhythmbox-client --play/--pause
コマンドをサポートしているようで、dbus-send
で説明されているように、を使用して送信されるD-Busコマンドもサポートしています。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 動画の再生に使用している Web ブラウザー (またはその他のアプリ) に適切なコマンドを送信するスクリプトをアクティブ化するために、おそらくそれらのキー操作が必要になります。また、ブラウザーの場合、コマンド/キー操作は正しいブラウザー タブに送信する必要がありますが、必ずしも現在のタブであるとは限りません...
答え3
私もあなたと同じことを発見しました。コマンドはxdotool key XF86AudioPlay
シェルからは機能しますが、ショートカットやアプリケーション ランチャーからは機能しません。そのため、xdotool
対話型シェルから実行した場合にのみ機能するという結論に達しました。そして面白いことに、次のコマンドを使用して、キーボード ショートカットとランチャー アイコン (タスク バーなど) で機能するようになりました。
bash -i -c 'xdotool key XF86AudioPlay'
-i
スイッチを取り外して非インタラクティブにするとすぐにbash
、動作が停止します。なぜそうなるのかはわかりません...
この方法の良いところXF86AudioPlay
は、たとえば Firefox でバックグラウンドで再生されている Youtube ビデオを一時停止する場合にも機能することです。
アップデート
わかりました。なぜこのようなことが起こるのか分かりました。 私の では、を実行するために必要な を.bashrc
変更していました。しかし、GUI セッション (XFCE) にログインしたときには、この現象は発生しませんでした。そのため、ターミナルからではなく GUI から直接起動されたプログラム (ランチャーや Alt+F2 など) は、変更された を認識しないため、一部のライブラリが欠落していました。$LD_LIBRARY_PATH
xdotool
$LD_LIBRARY_PATH
したがって、正しい解決策は、 の変更をの代わりに に$LD_LIBRARY_PATH
入れることです。 そうすれば、XFCE はログイン時にそれらを実行し、すべてのプログラムがそれらを認識できるようになります。 それでも、将来の訪問者のために古い回答をここに残しておきます。.profile
.bashrc
答え4
Audaciousを使用している場合は、
audacious -t
一時停止と再生を切り替えます(を参照man audacious
)。