ターミナルでメディアキーをシミュレートする


25

私は、ssh接続を介して通信するための多くのアプリを備えた新しいアンドロイド携帯電話を持っています。押されたキー、特にメディアキー(再生一時停止ボリューム)をシミュレートできる場合、sshコマンドを使用できるかどうかを知りたいです。追加のソフトウェアをインストールしたくない。

注:すぐに使用できるアプリがあることは知っていますが、これは単に理解を深めるためです。

回答:


44

答えは xdotoolであり、Ubuntuシステムに既にインストールされている可能性があります。キー押下をシミュレートできます。[1]も参照してください。

いくつかのコマンド:

  • 再生/一時停止

    xdotool key XF86AudioPlay
    
  • 前/次

    xdotool key XF86AudioPrev 
    xdotool key XF86AudioNext
    
  • ボリュームダウン/アップ

    xdotool key XF86AudioLowerVolume 
    xdotool key XF86AudioRaiseVolume
    
  • ミュート

    xdotool key XF86AudioMute
    

その他のXF86コマンドについては、[2]をご覧ください。

ボリュームを段階的に行う代わりに、alsamixerまたはpulseaudioを使用して設定することもできます(推奨)。デバイス0を使用すると仮定します(alsamixerまたはで確認pacmd list-sinksできます)。たとえば、ボリュームを80%に設定できます。

  • alsamixer(-c 0はサウンドデバイスIDを指定します)

    amixer -c 0 sset Master,0 80%
    
  • pulseaudio(80%の前の0はサウンドデバイスIDです)

    pactl set-sink-volume 0 80%
    

これらのコマンドの詳細については、マンページを参照してください。


編集:sshでxdotoolコマンドを実行して、次のエラーメッセージを取得しようとしている場合

Error: Can't open display: (null)
Segmentation fault

DISPLAY変数を設定する必要があります。

export DISPLAY=':0.0'

その後、問題なく動作するはずです


[1] http://www.semicomplete.com/projects/xdotool/xdotool.xhtml
[2] http://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols


これがSSHで動作するために何が必要ですか?これらのコマンドをリモートシェルで使用すると、ローカルマシンとリモートマシンでシミュレーションが行われます。
earthmeLon

3
@earthmeLon本当にリモートマシンでコマンドを実行していますか?私にとってはsshでうまく動作するからです。ただし、DISPLAY変数を設定する必要がありました。編集を参照してください。
ゲルハルトバーガー

提案どおりにディスプレイを設定すると、問題が解決しました。ありがとう:D
earthmeLon

2
あなたはXFCE4でいくつかのキーにこれらを結合しているとき、あなたが使用する必要がありますことを注意--clearmodifiersフラグを、このような何か:xdotool key --clearmodifiers XF86AudioPlay
cab404

@ cab4040が言及したことはGNOMEにも当てはまります。カスタムキーを持たないキーボードにカスタムメディアキーを追加する場合Keyboard Shortcutsは、設定のセクションに移動して、キーボードショートカットとxdotool keyコマンドの間にバインドを追加します--clearmodifiers(上記を参照)。
ピエールタラミー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.