web-dev-qa-db-ja.com

ゲームパッドの軸をUbuntuのボタンに再マッピングする

Ubuntu13.04でXbox360 MadCatzFightPadを使用しようとしています。主な問題は、Xboxコントローラーの左右のトリガーに対応する2つのボタンがアナログジョイスティックとして登録されていることです。トリガーは従来のXboxコントローラーではアナログですが、このゲームパッドでの唯一の本当の目的はボタンとして機能することです。

これまでのところ、軸をゲームパッドボタンに再マップできるユーティリティを見つけることができませんでした。 Qjoypadは、コントローラーボタンをキーボードまたはマウスシーケンスにマップするためにのみ使用できます。 jstest-gtkでマッピングを行うオプションもないようです。 xboxdrvには--trigger-as-buttonオプションがありますが、コントローラーをXboxコントローラーとして、または互換性のあるコントローラーとしても認識しません(コントローラーは、Xboxで正常に動作するため、それ自体は奇妙です)。

1
Michael

これをもう少しいじった後、ようやく動作させることができました。まず、antimicroまたはqjoypadを使用すると、コントローラーをキーボードコマンドにマップし、ゲーム内から「キーボード」を使用することができました。観察として、これは感度の点で常にうまく機能するとは限りませんでした。

最終的には、xboxdrvでキーボードやマウスをエミュレートせずに動作するようになりました。上で述べたように、xboxdrvはコントローラーが有効なXboxコントローラーであることを検出しません。代わりに、最初にlsusbを使用して手動でUSBデバイスIDを決定する必要がありました。

% lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 10f1:1a34 Importek 
Bus 002 Device 042: ID 1bad:f02e Harmonix Music

少し試行錯誤した結果、リストの最後のアイテムが自分のデバイスであると判断しました。その後、次のコマンドでこれを使用することができました。

xboxdrv --device-by-id 1bad:f02e --type xbox360 --trigger-as-button --detach-kernel-driver --no-extra-events
1
Michael