Wie kann ein Gamepad die Maus steuern?

8

Es gibt viele Fragen zu diesem Thema:

Aber der Zweck dieser Fragen / Antworten ist es, das Gamepad zum Spielen eines Spiels benutzen zu können Ich hätte gerne eine Lösung, um mit dem Gamepad die Maus zu steuern.
Um die Maus in allen Anwendungen durch das Gamepad zu ersetzen.
So konnte ich meinen Computer im Wohnzimmer von meinem Sofa aus mit einem kabellosen Gamepad steuern.

    
Boris 21.03.2012, 21:27

5 Antworten

8

Nach der Antwort von Grumbel habe ich xboxdrv mit der Unterstützung seiner link und speziell diese Seite :

1. Installieren Sie xboxdrv 0.8.2 von Ubuntu Software Center.

Installieren Sie bei Bedarf auch uinput und joydev . Ich habe es so gemacht sudo modprobe uinput + sudo modprobe joydev

2. Sie müssen das Ereignis des Gamepads kennen:

Starte udevadm monitor --udev und schließe dann das Gamepad an:

$ 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)

Ich folge, dass das Ereignis meines Gamepads / dev / input / event8

ist

3. Zeigen Sie die Namen aller Tasten, Achsen und Tasten des Gamepads an.

Die Idee ist, xboxdrv zu starten und alle Knöpfe zu testen und das Ergebnis auf Papier zu notieren.

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

In meinem Fall ist das Ergebnis:

4. Stellen Sie die Konfigurationsdatei

ein

Erstellen Sie eine Datei xboxdrv-mouse.ini , um die X Y-Achse und die linke und rechte Maustaste festzulegen.
Hier setze ich Gamepad-Tasten 2 für die linke Maustaste und 3 für die rechte Maustaste:

[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 #

Beachten Sie, dass der Wert für REl_X und REL_Y die Geschwindigkeit der Maus zu definieren scheint, und indem Sie einen negativen Wert definieren, invertiert er die Achse (siehe hier für REL_Y)

Ein anderes Beispiel mit mehr Button-Definition

[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. Starten Sie es

sudo xboxdrv --config xboxdrv-mouse.ini

Um es nicht mit sudo zu starten, erstellen Sie eine udev-Regel .

SCHLUSSFOLGERUNG

Es funktioniert gut, es ist die beste Lösung für mich.

    
Boris 13.05.2012, 11:13
3

xboxdrv sollte in der Lage sein zu tun, was Sie wollen. Es erfordert jedoch ein wenig Konfiguration mit Nicht-Xbox-Gamepads zu arbeiten, etwas in der Art von (überprüfen Sie die man-Seite für Details, verwenden Sie --evdev-debug, um die Knopf- und Achsennamen herauszufinden):

#!/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 "[email protected]"

# EOF #
    
Grumbel 27.03.2012 19:19
3

Auf ubuntu nicht getestet, aber dieses einfache Rezept funktioniert auf Debian Jessie (mit meinem iBuffalo classic usb gamepad ):

  1. Installieren Sie das richtige xorg-Modul:

$ sudo apt install xserver-xorg-input-joystick

  1. Starten Sie Ihren Display-Manager neu (oder starten Sie ihn neu)
Jocelyn delalande 31.12.2016 00:26
2

Gleiches gilt für ein Nintendo 64 Gamepad

[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

Einige Details

Mein Ziel war es, das für Ego-Shoot-Spiele zu spielen, da ich nicht gewohnt bin, mit Maus und Tastatur zu spielen. Die meisten Spiele unter GNU / Linux unterstützen das Gamepad jedoch nicht sehr gut. Ich habe versucht, das zu tun, wie den fortgeschrittenen Gamepad-Modus auf dem berühmten N64 Spiel 007 - GoldenEye.

Auf diese Weise können Sie auch das Gamepad verwenden, um Ihre Maus zu ersetzen.

Meine Auswahlmöglichkeiten

  • emulieren Sie die Maus auf dem Main Stick
  • gelbe C (x2 y2) Tasten sind auf UP, DOWN Tastaturtasten und die Tasten auf einem Azerty Keypad zur seitlichen Bewegung eingestellt (Q und D; ändern Sie den Buchstaben für Ihre Tastaturbelegung)
  • oben rechts unten sind dem Kreuz
  • zugeordnet
  • Klicken Sie mit der linken Maustaste auf Z (zurück), um zu schießen, und klicken Sie mit der rechten Maustaste auf R (rb). Je nachdem, welches Spiel du spielst, möchtest du vielleicht die R-Taste auf KEY_SPACE setzen, um zu springen.
  • A und B sind auf dem Mausrad, damit du deine Waffen leicht wechseln kannst.
  • Die L-Taste (lb) bleibt nicht gesetzt

Ich hoffe, dies wird anderen Spielern helfen.

Todo Wenn jemand weiß, wie es geht, würde ich gerne wissen, wie man eine Art "Center Area" einrichtet, wo sich der Mauszeiger nicht bewegt, auch wenn der Stick nicht perfekt in der Mitte ist. Dies würde verhindern, dass sich der Cursor ein wenig bewegt, wenn Sie das Gamepad nicht benutzen, aber es ist immer noch aktiviert.

    
ttoine 13.08.2014 16:16
1

Ich habe das xboxdrv versucht und es hat irgendwie funktioniert, aber es war nie perfekt für mich und ich musste die Konfigurationsdatei manuell konfigurieren. Die bessere Lösung scheint das AntiMicro-Projekt zu sein: Link Die Konfiguration ist wirklich einfach (obwohl die GUI ziemlich einfach ist), mit ein paar Klicks konnte ich:

  • Konfigurieren Sie mein Pad (F710 Wireless) als Maus - Sie müssen nur die richtigen Tasten / Sticks der gewünschten Funktion in einem Set zuweisen;
  • Holen Sie sich die zentrale "Logitech-Logo" -Taste, um zwischen Maus- und Pad-Betrieb zu wechseln - ich habe einfach den zweiten Satz, wo keiner der Schlüssel zugewiesen ist und die zentrale Taste schaltet zwischen diesen beiden Modi um, sodass ich das Spiel mit "Maus" starten kann Modus "und wechseln Sie dann zu" Pad-Modus "zu spielen;
  • AntiMicro scheint die "tote Zone" auch automatisch anzuwenden - als ich die xboxdrv benutzte, musste ich das manuell in der Konfigurationsdatei machen, weil der Cursor die ganze Zeit in eine Richtung driftete, hier ist alles gut.

Ich denke, das Projekt ist ziemlich neu, aber für mich scheint es fast perfekt zu funktionieren. Das kleine Problem ist, dass es das "Tray" -Symbol erzeugt, das es ermöglicht, Profile in der oberen linken Ecke zu wechseln, die nicht gut in Ubuntus globales Menüschema passen.

    
user126406 30.09.2014 00:10

Tags und Links