web-dev-qa-db-ja.com

DirectInputゲームパッドでXInputデバイスをエミュレートする方法は?

Ubuntu 13.04で、Logitech Dual ActionコントローラーをBastionで動作させようとしています。私が集めたものから、BastionはXInputデバイスとのみ互換性があり、コントローラーはDirectInputのみをサポートしています。実際、ゲームはボタン7(左トリガー)とボタン10(コンソールゲームパッドの「スタート」ボタン)を除くほとんどのボタンを認識します。

Xbox 360コントローラーのようなXInputデバイスを何らかの方法でエミュレートすることは可能ですか?

1
dericke

ここ RedditユーザーtheliphantGenによる回答:

私はそれを理解するのにかなりの時間を費やしたので、どこかにこれを書き留めたかっただけです。

簡単に言えば、ゲームパッドを認識するためにBrutal LegendやShankを作成できませんでした。今日、 xboxdrv はevdevを使用して任意のジョイスティック/ゲームパッドの上で動作することがわかりました。したがって、この単純なマッピングで、xboxdrvにxpadドライバーを使用してxbox360コントローラーを模倣し、ShankとBrutal Legendの両方ですぐに動作する別のゲームパッドを作成します(他のユーザーにも必要です)。

xboxdrv --evdev /dev/input/event15 --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --axismap -Y1=Y1,-Y2=Y2 --evdev-keymap BTN_TOP=x,BTN_TRIGGER=y,BTN_THUMB2=a,BTN_THUMB=b,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent

/dev/input/event15は、ゲームパッドの正しいイベントデバイスを指している必要があります。これはPS2コントローラーアダプターのマッピングです。 --silentを削除し、--evdev-debugを追加して、押されたボタン/軸のevdevコードを出力することで調整できます

1
dericke