# FIXED: Joystick Interface als Maus deaktiveren

## Erdie

Ich habe ein USB Stick, welcher, wenn eingesteckt, einen Joystick emuliert. Damit steuere ich einen RC - Flugsimulator. Was dabei sehr nervig ist, dass dieser auch den Mauszeiger mitbewegt. D. h. bewegt man den Steuerknüppel, tanzt die Maus hin und her. 

Das hat 2 große Nachteile:

1. Im Multimonitorbetrieb müssen alle offenen Applikationen minimiert werden, sonst verliert der Simulator den Fokus, da ich "Fokus follows mouse" aktiviert habe.

2. Um die Menüs im Simulator zu bedienen, muß  die an den Stick angeschlossene RC Fernsteuerung ausgeschaltet werden, weil sonst winzigste Bewegungen zu Mausbewegungen führen, so dass man die Menüs nicht mehr bedienen können

Die Frage ist: Kann man den Einfluß des Joysticks auf den Maus irgendwie abschalten? Fall ja, wo und wie?

----------

## musv

Ich hab einen HTPC mit einem IR-Receiver iMon Soundgraph. Das Ding besteht in Wirklichkeit aus 2 Geräten:

kbd mouse0 event2

kbd event3

Die Vendor-/Product-ID sind für beide Devices identisch (15c2:0036).

Unterschieden hab ich das über Udev-Rules und dort über das Namensattribut: 

```
cat /proc/bus/input/devices
```

Die Rules lauten dann:

```
SUBSYSTEMS=="input",ATTRS{name}=="iMON Panel, Knob and Mouse(15c2:0036)",SYMLINK="input/irknob"

SUBSYSTEMS=="input",ATTRS{name}=="iMON Remote(15c2:0036)",SYMLINK="input/irremote"
```

Prüf mal nach, ob das bei Dir auch so ähnlich funktionieren kann.

----------

## Erdie

Bei mir sieht das folgendermaßen aus:

```

cat /proc/bus/input/devices 

I: Bus=0019 Vendor=0000 Product=0001 Version=0000

N: Name="Power Button"

P: Phys=PNP0C0C/button/input0

S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0

U: Uniq=

H: Handlers=kbd event0 

B: PROP=0

B: EV=3

B: KEY=10000000000000 0

I: Bus=0019 Vendor=0000 Product=0001 Version=0000

N: Name="Power Button"

P: Phys=LNXPWRBN/button/input0

S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1

U: Uniq=

H: Handlers=kbd event1 

B: PROP=0

B: EV=3

B: KEY=10000000000000 0

I: Bus=0003 Vendor=046d Product=c03f Version=0110

N: Name="Logitech USB-PS/2 Optical Mouse"

P: Phys=usb-0000:00:12.0-3/input0

S: Sysfs=/devices/pci0000:00/0000:00:12.0/usb4/4-3/4-3:1.0/0003:046D:C03F.0001/input/input5

U: Uniq=

H: Handlers=mouse0 event2 

B: PROP=0

B: EV=17

B: KEY=f0000 0 0 0 0

B: REL=103

B: MSC=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Front Mic"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input8

U: Uniq=

H: Handlers=event5 

B: PROP=0

B: EV=21

B: SW=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Rear Mic"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input9

U: Uniq=

H: Handlers=event6 

B: PROP=0

B: EV=21

B: SW=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Line"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input10

U: Uniq=

H: Handlers=event7 

B: PROP=0

B: EV=21

B: SW=2000

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Line Out Front"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input11

U: Uniq=

H: Handlers=event8 

B: PROP=0

B: EV=21

B: SW=40

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Line Out Surround"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input12

U: Uniq=

H: Handlers=event9 

B: PROP=0

B: EV=21

B: SW=40

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Line Out CLFE"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input13

U: Uniq=

H: Handlers=event10 

B: PROP=0

B: EV=21

B: SW=40

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Line Out Side"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input14

U: Uniq=

H: Handlers=event11 

B: PROP=0

B: EV=21

B: SW=40

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA ATI SB Front Headphone"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:14.2/sound/card0/input15

U: Uniq=

H: Handlers=event12 

B: PROP=0

B: EV=21

B: SW=4

I: Bus=0003 Vendor=046d Product=080f Version=0009

N: Name="UVC Camera (046d:080f)"

P: Phys=usb-0000:00:13.2-1/button

S: Sysfs=/devices/pci0000:00/0000:00:13.2/usb2/2-1/2-1:1.0/input/input16

U: Uniq=

H: Handlers=kbd event13 

B: PROP=0

B: EV=3

B: KEY=100000 0 0 0

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA NVidia HDMI/DP,pcm=3"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:02.0/0000:01:00.1/sound/card1/input17

U: Uniq=

H: Handlers=event14 

B: PROP=0

B: EV=21

B: SW=140

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA NVidia HDMI/DP,pcm=7"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:02.0/0000:01:00.1/sound/card1/input18

U: Uniq=

H: Handlers=event15 

B: PROP=0

B: EV=21

B: SW=140

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA NVidia HDMI/DP,pcm=8"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:02.0/0000:01:00.1/sound/card1/input19

U: Uniq=

H: Handlers=event16 

B: PROP=0

B: EV=21

B: SW=140

I: Bus=0003 Vendor=046d Product=c31c Version=0110

N: Name="Logitech USB Keyboard"

P: Phys=usb-0000:00:12.0-5/input0

S: Sysfs=/devices/pci0000:00/0000:00:12.0/usb4/4-5/4-5:1.0/0003:046D:C31C.000E/input/input48

U: Uniq=

H: Handlers=sysrq kbd leds event3 

B: PROP=0

B: EV=120013

B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe

B: MSC=10

B: LED=1f

I: Bus=0003 Vendor=046d Product=c31c Version=0110

N: Name="Logitech USB Keyboard"

P: Phys=usb-0000:00:12.0-5/input1

S: Sysfs=/devices/pci0000:00/0000:00:12.0/usb4/4-5/4-5:1.1/0003:046D:C31C.000F/input/input49

U: Uniq=

H: Handlers=kbd event4 

B: PROP=0

B: EV=1b

B: KEY=2010000 397ad801d001 1e000000000000 0

B: ABS=100000000

B: MSC=10

I: Bus=0003 Vendor=127f Product=e027 Version=0100

N: Name="IPACS easyFly2 Interface"

P: Phys=usb-0000:00:13.0-4/input0

S: Sysfs=/devices/pci0000:00/0000:00:13.0/usb5/5-4/5-4:1.0/0003:127F:E027.0011/input/input51

U: Uniq=

H: Handlers=event17 js0 

B: PROP=0

B: EV=1b

B: KEY=3f00000000 0 0 0 0

B: ABS=7f

B: MSC=10

```

Das letzte Interface ist der USB Joystick Dongle. Aber so ganz werde ich nicht schlau, wie ich dem jetzt abgewöhnen kann auch die Maus zu bewegen.

----------

## firefly

Wie sieht das log von Xorg aus?

AFAIK kann XOrg auch joysticks als primary input verwenden.

Es gibt auch den dedizierten joystick xorg input treiber.

Vermutlich hast du ihn aber nicht installiert. Eher hat der evdev xorg treiber das gerät erkannt und entsprechend eingebunden.

Was sagt die ausgabe von xinput (übers paket x11-apps/xinput installierbar)

Das tool listet alle von xorg bekannte input geräte auf und man kann diese darüber auch konfigurieren.

Wenn der joystick darüber auftaucht könnte man eventuell über das tool als primary input deaktivieren.

Desweiteren könnte man xorg/evdev treiber so konfigurieren, dass es joystick devices ignoriert als input

EDIT: Für das deaktivieren von joysticks als mouse/key input könnte das helfen: https://bbs.archlinux.org/viewtopic.php?id=119421, https://wiki.archlinux.org/index.php/Gamepad#Disable_joystick_from_controlling_mouse

----------

## Erdie

xinput ist ein guter Punkt. Was es nicht alles für Helferlein gibt  :Smile: 

xinput gibt folgendes aus:

```

~ # xinput 

⎡ Virtual core pointer                          id=2    [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]

⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=8    [slave  pointer  (2)]

⎜   ↳ IPACS easyFly2 Interface                  id=12   [slave  pointer  (2)]

⎣ Virtual core keyboard                         id=3    [master keyboard (2)]

    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]

    ↳ Power Button                              id=6    [slave  keyboard (3)]

    ↳ Power Button                              id=7    [slave  keyboard (3)]

    ↳ UVC Camera (046d:080f)                    id=11   [slave  keyboard (3)]

    ↳ Logitech USB Keyboard                     id=9    [slave  keyboard (3)]

    ↳ Logitech USB Keyboard                     id=10   [slave  keyboard (3)]

```

Die Hilfe von xinput gibt u. a. folgendes aus:

```

...

xinput disable <device>

...

```

Was meint <device>? Ist es die ID? Und, ganz wichtig, ist die  Einstellung persistent? Ich möchte mir nicht versehentlich die Maus abschießen. Die ID wäre zumindest eindeutig.

UPDATE:

Google sagt mir gerade, dass dieses der richtige Weg sei:

```

xinput --set-prop "your device as it spears in the list" "Device Enabled" 0

```

UPDATE:

Das hat funktioniert!

Danke  :Smile: 

----------

## Erdie

INFO

Folgende udev Regel sorgt nun dafür, dass der Stick nach dem Einstecken automatisch deaktiviert wird:

```

cat 91-disable_ipacs_as_mouse 

ACTION=="add", ATTRS{idVendor}=="127f", ATTRS{idProduct}=="e027", RUN+="/usr/local/bin/disable_joystick"

```

Das Skript "disable_joystick" enthält den nötigen Befehl.

UPDATE:

Ich muß zurückrudern. Die Regel funktioniert nicht, das Skript schon. Warum weiß ich noch nicht. Manuell funktioniert es schon.

----------

## firefly

wenn das script xinput aufruft dann kann es nicht funktionieren.

Denn wenn udev das script aufruft ist null x-server context vorhanden.

Und was ist mit den anderen links die ich gepostet habe?

----------

## Erdie

Die lösen das in beiden Fällen mit xorg Mitteln. IMHO matched das in meinem Fall nicht, da ich keinen dedizierten Treiber verwende. Aber mit der manuellen Methode kann ich ganz gut leben.

----------

## firefly

 *Erdie wrote:*   

> Die lösen das in beiden Fällen mit xorg Mitteln. IMHO matched das in meinem Fall nicht, da ich keinen dedizierten Treiber verwende. Aber mit der manuellen Methode kann ich ganz gut leben.

 

Stimmt. Die binden fix joysticks an den joystick driver welcher eine option hat keine mouse input events zu generieren.

Wobei es kann auch sein das ein neuerer xorg evdev treiber fixes für solche fehl erkennungen hat

----------

## Christian99

so spontan hätte ich gesagt, dass es automatisch über die xorg-conf funktionieren könnte. Hab jetzt keine Anleitung dazu, wenn du aber weitersuchen willst, würde ich in der Richtungn suchen.

----------

## Erdie

Ich habe das jetzt so gelöst, dass ich das Kommando in den Starter des Simulator aufrufe. Für nichts anderes brauche ich diese Funktion und wenn sie mehrfach aufgerufen wird, passiert auch nix.

Die udev Regel deaktiviert und aktiviert das CPU stepping, denn mit CPU Stepping ruckelt der Simulator, irgendwie scheint die Last, die  der Simulator generiert, "nice" zu sein und die CPU taktet von allein nicht hoch. Das Verhalten ist auch seltsam.

----------

