ゲームパッドはどのようにマウスを制御できますか?


9

この主題については多くの質問があります:

しかし、これらの質問/回答の目的は、ゲームをプレイするためにゲームパッドを使用できるようにすることです。

ゲームパッドを使用してマウスを制御するためのソリューションが必要です。
すべてのアプリケーションでマウスをゲームパッドに置き換える。
そうすれば、ソファーからワイヤレスゲームパッドを使ってリビングルームにあるコンピューターを制御できます。

回答:


8

以下のGrumbelの答えを、私が試したxboxdrvの彼のサポートとソリューションをリンクして、特別にこのページ

1. Ubuntuソフトウェアセンターからxboxdrv 0.8.2をインストールします。

必要に応じて、uinputjoydevもインストールします。私はこのようにしましたsudo modprobe uinput+sudo modprobe joydev

2. ゲームパッドのイベントを知る必要があります

udevadm monitor --udevゲームパッドを起動してから接続します。

$ udevadm monitor --udev
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [6722.377700] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1 (usb)
UDEV  [6722.383264] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0 (usb)
UDEV  [6722.383333] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003 (hid)
UDEV  [6722.383389] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003/hidraw/hidraw1 (hidraw)
UDEV  [6722.387123] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10 (input)
UDEV  [6722.399284] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/event8 (input)
UDEV  [6722.412128] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/js0 (input)

私のゲームパッドのイベントは/ dev / input / event8であると結論付けました

3.ゲームパッドのすべてのキー、軸、ボタンの名前を表示します。

アイデアは、xboxdrvすべてのボタンを起動してテストし、結果を紙に書き留めることです。

$ sudo xboxdrv --evdev /dev/input/event8 --evdev-debug
Your Xbox/Xbox360 controller should now be available as:
/dev/input/js1
/dev/input/event9
Press Ctrl-c to quit, use '--silent' to suppress the event output
EV_ABS ABS_X 128
EV_ABS ABS_Y 128
...

私の場合、結果は次のとおりです。 ここに画像の説明を入力してください

4.設定ファイルを設定する

xboxdrv-mouse.iniファイルを作成して、XY軸と左右のマウスボタンを設定します。
ここで2、左マウスボタンと3右マウスボタンにゲームパッドボタンを設定します。

[xboxdrv]
evdev=/dev/input/event8
silent=true

[evdev-absmap]
ABS_X=x1
ABS_Y=y1

[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10

[evdev-keymap]
BTN_THUMB=a
BTN_THUMB2=b

[ui-buttonmap]
a=BTN_LEFT
b=BTN_RIGHT

# EOF #

REl_XとREL_Yの値はマウスの速度を定義しているように見え、負の値を定義すると軸が反転します(REL_Yについてはこちらを参照)。

より多くのボタン定義を持つ他の例

[xboxdrv]
evdev=/dev/input/event8
silent=true

[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_HAT0X=x2
ABS_HAT0Y=y2

[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10
x2=KEY_LEFT:KEY_RIGHT
y2=KEY_DOWN:KEY_UP

[evdev-keymap]
BTN_TRIGGER=x
BTN_TOP=y
BTN_THUMB=a
BTN_THUMB2=b
BTN_PINKIE=rt
BTN_BASE2=rb
BTN_TOP2=lt
BTN_BASE=lb
BTN_BASE3=back
BTN_BASE4=start

[ui-buttonmap]
x=KEY_KPENTER
y=KEY_SPACE
a=BTN_LEFT
b=BTN_RIGHT
rt=KEY_KP8
rb=KEY_KP2
lt=KEY_KP6
lb=KEY_KP4
back=KEY_LEFTSHIFT
start=KEY_RIGHTCTRL

# EOF #

5.起動する

sudo xboxdrv --config xboxdrv-mouse.ini

での起動を回避するにはsudoudevルールを作成します

結論

それはうまく機能し、それは私にとって最高のソリューションです。


これはXBOXコントローラーにのみ適用されますか?
Gman Smith

@gmansmithいいえLogitecゲームパッドに使用しました
Boris

4

ubuntuではテストされていませんが、その簡単なレシピはDebian Jessieで動作します(私のiBuffaloクラシックUSBゲームパッドを使用):

  1. 適切なxorgモジュールをインストールします。

$ sudo apt install xserver-xorg-input-joystick

  1. ディスプレイマネージャーを再起動します(または再起動します)。

Raspbian Buster--Raspberry Pi 3 B +ではうまく機能しました。xbox 360互換モードの8bitdoゲームパッドと一般的なsnesスタイルのusbゲームパッドがうまく機能します。ありがとうございました。
thinklogically

3

xboxdrvはあなたが望むことをすることができるはずです。ただし、Xbox以外のゲームパッドで動作するためには、多少の設定が必要です(詳細についてはmanページを確認し、-evdev-debugを使用してボタンと軸の名前を確認してください)。

#!/bin/sh

xboxdrv \
  --evdev /dev/input/event9 \
  --evdev-absmap ABS_X=X1,ABS_Y=y1 \
  --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
  --evdev-keymap BTN_BASE=LB,BTN_BASE2=RB \
  --evdev-keymap BTN_BASE3=guide,BTN_TOP2=start,BTN_PINKIE=back \
  --evdev-keymap BTN_THUMB=x,BTN_TOP=a,BTN_THUMB2=b,BTN_TRIGGER=y \
  \
 --ui-clear \
  --ui-buttonmap rb=BTN_LEFT,lb=BTN_RIGHT,start=KEY_ESC,back=KEY_F1 \
  --ui-buttonmap a=KEY_SPACE \
  --ui-axismap X1=REL_X:20,Y1=REL_Y:20 \
  --ui-axismap DPAD_X=KEY_A:KEY_D:1,DPAD_Y=KEY_W:KEY_S:1 \
  -s "$@"

# EOF #

難しい、「無効な引数」しか得られない
ボリス

もう少し情報が参考になります。構成はどのように見えたのか、xboxdrvの正確な出力は何か、どのバージョンを使用しましたか、などです。また、上記は単なる例であり、コントローラーに合わせてカスタマイズする必要があります。作業。
Grumbel、2012年

グランベルありがとうございます!怠惰にならないようにして、私はドキュメントを読み、最後にxboxdrv構成を設定しました。答えはその方法の詳細です
Boris

2

Nintendo 64ゲームパッドでも同じ

[xboxdrv]
evdev=/dev/input/event9
silent=true

[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_RZ=x2
ABS_Z=y2
ABS_HAT0X=dpad_x
ABS_HAT0Y=dpad_y

[axismap]
-X2=X2

[ui-axismap]
x1=REL_X:30
y1=REL_Y:30
x2=KEY_Q:KEY_D
y2=KEY_DOWN:KEY_UP
dpad_x=KEY_LEFT:KEY_RIGHT
dpad_y=KEY_DOWN:KEY_UP

[evdev-keymap]
BTN_THUMB2=b
BTN_THUMB=a
BTN_BASE3=back
BTN_BASE4=start
BTN_BASE=lb
BTN_BASE2=rb

[ui-buttonmap]
start=KEY_KPENTER
rb=BTN_RIGHT
lb=void
a=REL_WHEEL:-1:150
b=REL_WHEEL:1:150
back=BTN_LEFT

いくつかの詳細

私の目的は、マウスとキーボードでプレイするのに慣れていないため、これを一人称シューティングゲームでプレイするように設定することでした。ただし、GNU / Linuxのほとんどのゲームは、ゲームパッドをあまりサポートしていません。私は有名なN64 Game 007-GoldenEyeの高度なゲームパッドモードのようにそれを試みました。

このように、ゲームパッドを使用してマウスを置き換えることもできます。

私の選択

  • メインスティックでマウスをエミュレートする
  • 黄色のC(x2 y2)ボタンは、UP、DOWNキーボードキー、および横移動用のazertyキーボードのキーに設定されています(QおよびD、キーボードレイアウトの文字を変更)
  • 上下左右が十字架に割り当てられています
  • マウスの左クリックは撃つためにZ(後ろ)であり、右クリックでR(rb)です。プレイするゲームによっては、ジャンプするためにRボタンをKEY_SPACEに変更することもできます。
  • AとBはマウスホイール上にあるので、簡単に武器を変更できます。
  • Lボタン(lb)は未設定のままにします。

これが他のプレイヤーの役に立つことを願っています。

藤堂 誰かがそのやり方を知っているなら、スティックが完全に真ん中にない場合でも、マウスカーソルが動かないような「中央領域」の設定方法を知りたいと思います。これにより、ゲームパッドを使用しないときにカーソルが少し移動するのを回避できますが、それでも有効になっています。


1

私はxboxdrvを試してみましたが、それはうまくいきましたが、私にとっては完璧ではなく、手動で構成ファイルを構成する必要がありました。より良い解決策はAntiMicroプロジェクト のようです:https : //github.com/Ryochan7/antimicro構成は本当に簡単ですが(GUIはかなり基本的ですが)、数回クリックするだけで次のことができました:

  • パッド(F710ワイヤレス)をマウスとして構成します。適切なボタン/スティックを1つのセットの目的の機能に割り当てるだけです。
  • 中央の「Logitechロゴ」キーを取得して、マウスとパッドの操作を切り替えます。キーが割り当てられていない2番目のセットがあり、中央のキーでこれら2つのモードを切り替えます。したがって、「マウスモード」を使用してゲームを起動できます。次に、「パッドモード」に切り替えて再生します。
  • AntiMicroは自動的に「デッドゾーン」も適用するようです。xboxdrvを使用しているときは、カーソルが常に一方向にゆっくりとドリフトするため、設定ファイルでこれを手動で実行する必要がありました。

プロジェクトはかなり新しいと思いますが、私にとっては、これまでのところほぼ完全に機能しているようです。小さな問題は、Ubuntuグローバルメニュースキームにうまく適合しない左上隅のプロファイルを切り替えることができる「トレイ」アイコンを作成することです。


これをありがとう。AntiMicroは非常に優れています。私は古いSixaxis(例:Dualshock 3マイナスランブル)にキーボードとマウスの両方のイベントを送信させることができました。セットアップはかなり簡単で、私が見てきたところから、開発者はバグレポートに非常に敏感です。
ローレンスゴンサルベス2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.