web-dev-qa-db-ja.com

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

このテーマについては多くの質問があります:

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

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

8
Boris

Grumbelの答えに従って、私はxboxdrvのソリューションを試しました彼の リンク および特別に このページ

1. Ubuntu Software Centerからxboxdrv 0.8.2をインストールします。

必要に応じて、uinputおよびjoydevもインストールします。このようにしてSudo modprobe uinput + Sudo modprobe joydev

2.ゲームパッドのeventを知る必要があります。

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
...

私の場合、結果は次のとおりです。 enter image description here

4.設定ファイルを設定します

xboxdrv-mouse.iniファイルを作成して、X Y軸と左右のマウスボタンを設定します。
ここでゲームパッドのボタンを設定します 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

Sudoで起動しないようにするには、 devルールを作成します

結論

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

8
Boris

xboxdrv は、あなたが望むことをできるはずです。ただし、Xbox以外のゲームパッドで動作するには少し設定が必要です(詳細についてはマンページを確認し、ボタンと軸の名前を見つけるには--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 #
3
Grumbel

Ubuntuではテストされていませんが、その簡単なレシピはDebian Jessieで動作します(私のiBuffalo classic usb gamepad):

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

$ Sudo apt install xserver-xorg-input-joystick

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

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キーボードキー、および横移動用のアゼルティキーボード上のキーに設定されます(QおよびD。キーボードレイアウトの文字を変更します)
  • 右上に左下が十字架に割り当てられています
  • マウスの左クリックは、Z(戻る)を押して撮影し、R(rb)を右クリックします。プレイするゲームによっては、RボタンをKEY_SPACEに変更してジャンプすることもできます。
  • AとBはマウスホイール上にあるため、武器を簡単に変更できます。
  • lボタン(lb)は未設定のまま

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

Todo誰かがそれを行う方法を知っているなら、スティックが完全に動かなくても、マウスカーソルが動かない「センターエリア」のようなものをセットアップする方法を知りたい中間。これにより、ゲームパッドを使用していないのにカーソルが有効になっている場合に、カーソルが少し移動することを回避できます。

2
ttoine

私はxboxdrvを試しましたが、それは一種の働きをしましたが、それは私にとって決して完璧ではなく、設定ファイルを手動で設定しなければなりませんでした。より良い解決策はAntiMicroプロジェクトのようです: https://github.com/Ryochan7/antimicro 設定は本当にシンプルです(GUIはかなり基本的ですが)、数回クリックするだけでできましたに:

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

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

1
user126406