GNU/Linux >> Linux の 問題 >  >> Linux

Linux –ジョイスティック入力によってトリガーされるスクリプトを実行するにはどうすればよいですか?

アーケードキャビネットに電力を供給するために、Raspbianを実行しているRaspberryPiを使用しています。 sudo poweroffを使用してPiをシャットダウンしたい キーボードを使用せずにコマンドを実行します。コントローラーのボタン入力の組み合わせによって何らかの形でトリガーされる単純なスクリプトを作成するのが最善の方法だと思います。キーボードをスクリプトにバインドするのは簡単なようですが、代わりにジョイスティック入力を使用するのはそれほど簡単ではありません。

誰かアイデアはありますか?

編集#1

ジョイスティックとコントローラーのボタンはすべて正常に機能し、jstestを使用して表示されます jstest-gtkのツール パッケージとすべてがMame4allで正常に動作します。 xevを試したことがありません しかし、それを調べます。

承認された回答:

xev

xevを使用できるとは思いません ジョイスティックを検出します。 Fedora 19を使用していますが、joystickというパッケージがあります。 このパッケージ、linuxconsoletoolsをインストールします 。このプロジェクトはあなたが探しているものです。

linuxconsoleプロジェクト

ジョイスティックを接続して、その信号がLinuxカーネルで受信されるようにするためのツールが多数含まれています。

linuxconsoleウェブサイトからの抜粋

このプロジェクトは、ジョイスティックをテストおよび構成し、レガシーデバイスをカーネルの入力サブシステムに接続し(シリアルマウス、タッチスクリーンなどのサポートを提供)、入力イベントレイヤーをテストするユーティリティを含むLinuxコンソールツールを維持します。

パッケージには、これらのような実行可能ファイルが含まれています

$ rpm -ql linuxconsoletools.x86_64
/usr/bin/ffcfstress
/usr/bin/ffmvforce
/usr/bin/ffset
/usr/bin/fftest
/usr/bin/inputattach
/usr/bin/jscal
/usr/bin/jscal-restore
/usr/bin/jscal-store
/usr/bin/jstest
/usr/libexec/joystick/extract
/usr/libexec/joystick/filter
/usr/libexec/joystick/ident

Ubuntu

Debianのインストールは利用できませんが、Ubuntuにも同じパッケージjoystickがあります 。コマンドapt-file list joystickを実行する 上記のRPMと同じファイルが表示されます。

他に何がありますか?

また、ArchLinuxWikiのトピック「ジョイスティック」も参照することをお勧めします。これはおそらく、Linuxに関連する、このトピックに関する最も網羅的なリソースです。

ジョイスティックをキーボードにマッピングする

上記は、ジョイスティックをLinuxで機能させるものですが、少なくとも簡単な方法ではなく、ジョイスティックをスクリプトにマッピングする方法を提供していません。そのようなことをするには、別のアプリケーションの助けを借りる必要があります。私がよく知っているjkeysというものがあります 。

インストールするには、最初にいくつかの依存関係をインストールする必要があります。python-xlibpython-pygame 。これらはほとんどのディストリビューションのリポジトリにあるはずです。

ただし、jkeysをインストールするには プロジェクトのSubversionリポジトリからダウンロードする必要があります。 注: Pythonで書かれています。

$ svn checkout http://jkeys.googlecode.com/svn/trunk/ jkeys-read-only

ダウンロードした後、次のように実行できます:

$ ./jkeys 
usage: jkeys joystick.conf application [params]

キーをマッピングするには、独自のjoystick.confを作成する必要があります ファイル:

<config>
    <joystick id="0">
        <axis number="0" low="Left" high="Right" />
        <axis number="1" low="Down" high="Up" />
        <button number="0" key="Space" />
        <button number="1" key="Return" />
        <button number="2" key="a" />
        <button number="3" key="b" />
        <button number="4" key="c" />
        <button number="5" key="d" />
        <button number="6" key="z" />
        <button number="7" key="x" />
        <button number="9" key="Escape" />
        <button number="10" key="p" />
    </joystick>
</config>

これで、ゲームを実行する準備ができたら、次のように実行します。

$ ./jkeys joystick.py <somegame>

オーバーライドされたジョイスティックボタンは、ジョイスティックボタンの代わりに、押したキーをアプリに送信します。

関連:シンボリックリンクを作成します–存在する場合は上書きしますか?

QJoy

もう1つの方法は、アプリQJoyPadを使用することです。ジョイスティックがないため、これをテストできませんでした。 GUIは次のようになります。

このGUIから、ボタンの押下をキーの押下にかなり簡単にマッピングできます。

スクリプトの実行はどうですか?

上記のメソッドを使用すると、XBindKeysと呼ばれる別のアプリケーションを使用して、キーボードの押下をマップして実際のコマンドまたはスクリプトを実行できます。

注: 以下の私の例では、キーボードショートカットを作成して、特定のディレクトリを開いた状態でNautilusを起動できるようにします。

まず、パッケージがxbindkeysであることを確認する必要があります がインストールされています。

次に、次のコマンドを1回だけ実行して、テンプレートxbindkeysを作成する必要があります。 構成ファイル。

$ xbindkeys --defaults > /home/saml/.xbindkeysrc

作成したファイルを使用して、テキストエディタで開き、次のようなルールを追加できます。

"nautilus --browser /home/saml/projects/path/to/some/dir"
  Mod4+shift + q

上記の変更により、xbindkeysを強制終了する必要があります すでに実行されている場合は、再起動します。

$ killall xbindkeys
$ xbindkeys

これで、 Modと入力するたびにこれが実行されます +シフト + Q Nautilusは、対応するフォルダを開いた状態で開きます。

参考資料

  • Jkeys –シンプルなジョイスティックからキーボードへのマッピング
  • マウスボタンが押されたかどうかを検出してから、スクリプトまたはコマンドを呼び出します
  • XBindKeys

Linux
  1. Linuxコマンドのスクリプトを作成する方法

  2. Linux – Linuxからブートローダーを実行する方法は?

  3. スクリプトを実行する方法??

  1. LinuxのbashコマンドをPERLスクリプトで実行する方法は?

  2. Linux –画面上でスクリプトを実行する方法ロック/ロック解除?

  3. Linux で Python スクリプトをサービスまたはデーモンのように実行する方法

  1. * nixでログイン時にスクリプトを実行するにはどうすればよいですか?

  2. LinuxでPerlスクリプトをシステムデーモンとして実行するにはどうすればよいですか?

  3. バックグラウンドでスクリプトを実行する方法 (linux openwrt)?