ジョイスティックボタンを押すことをキャプチャできるコマンドラインユーティリティはありますか?

ジョイスティックボタンを押すことをキャプチャできるコマンドラインユーティリティはありますか?

私の状況は次のとおりです。 RaspbianがインストールされたRaspberry Piがあります。 RetroArchもインストールし、簡単なUSBゲームパッドも接続しました。すべてがうまく機能しますが、キーの組み合わせ(例:L1 + L2 + R1 + R2)を押すと、エミュレータが正常に終了するように設定してキーボードを保持する必要がないようにしたいと思います。 RetroArchの一般的な終了の主キーはESCです。 RetroArchの制限により、キーの組み合わせに再マップすることはできません(ただし、単一のゲームパッドキーに再マップすることはできます)。

だから、ゲームパッドのキー押下を受け取り、特定の組み合わせを押したときにタスク(ESCキーをエミュレータに送信)を実行するユーティリティがあるかどうか疑問に思います。それとも私が望むことを達成するより簡単な方法はありますか?私はばかだ。

編集:今考えてみると、キーボードなしで起動できるように、さまざまなキーの組み合わせを使用してエミュレータを起動するbashスクリプトを実行できれば幸いです。

答え1

試してjstestみてください。この資料では、次のタイトルでその使用法について説明します。Flightgear.org - 入力デバイス。ほとんどのディストリビューションにデフォルトでインストールされているようです。また、ここにリンクがありますjstestマニュアルページ

デフォルトでは、ジョイスティックがどのデバイスに割り当てられているかを確認する必要があります。dmesgこの情報を挿入したら、ログファイルを確認してください。おそらくそうです/dev/input0

$ dmesg | grep Joystick
input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on usb2:3.0 

次に、次のコマンドを実行します。

$ jstest /dev/input0

答え2

これはRetroPie /エミュレーションステーションの一般的な問題のようです。

RetroPie-Setup Wikiでこの問題を解決します。 https://github.com/petrockblog/RetroPie-Setup/wiki/EmulationStation#my-emulator-wont-close-through-my-gamepad

1行を追加するには、RetroArch設定ファイルを編集するだけです。

input_exit_emulator_btn = “6″

ここで、「6」はゲームパッドボタン識別子です。


キーの組み合わせを使用するには、次の行を追加します。http://forum.themaister.net/viewtopic.php?pid=1065#p1065)

input_enable_hotkey_btn = 1
input_exit_emulator_btn = 2

ショートカットを「ロック解除」するにはボタン1を押し、終了するにはボタン2を同時に押す必要があります。

答え3

ファイルに入れてください.rc.bashrcbashユーザーの場合source .bashrc)。

joyst () {
    js='/dev/input/js0'
    jscal  $js
    jstest $js
}

答え4

少し更新されたjstest回答... 例で構成したジョイスティックを使用します。

Debian(およびほとんどの派生製品)はパッケージjstestにあります。joystick

apt install joystick

次に、カーネルメッセージを調べて、ジョイスティックデバイスが提供する人が読める説明が何であるかを確認します。角かっこの間にあります。 (このメッセージの安定した仕様が見つからなかったため、出力に括弧のペアが多いか少ないか、ない場合があります。)

dmesg | grep -i joystick

    [14265.976322] logitech 0003:046D:C215.0005: input,
    hidraw4: USB HID v1.10 Joystick [Logitech Logitech 
    Extreme 3D] on usb-0000:22:00.3-1.1.1/input0

(上記の出力は1行に表示されます。読みやすくするために分類されました。)

入力デバイスセットからこの文字列を検索します。 (このコマンドは1行に入力されます。ここでは読みやすくするために2行に分かれています。)

grep -A 10 -B 2 "Logitech Logitech Extreme 3D" 
/proc/bus/input/devices | grep ^H

    H: Handlers=event13 js1

これで、特別なファイルをどのデバイスに提供するかを知りましたjstest

jstest /dev/input/js1

関連情報