# Maus als /dev/input/js0 angelegt

## flammenflitzer

Das Problem besteht darin, das meine neue Maus "4 Tech Co., Ltd" als /dev/input/js0 angelegt wird. Meine beiden "Logitech, Inc. Dual Action Gamepad" sind dann /dev/input/js1 und /dev/input/js2. Ich muss feststellen, warum die Maus als /dev/input/js0 angelegt wird und das unterbinden.

/etc/X11/xorg.conf

```
Section "InputDevice"

   # generated from data in "/etc/conf.d/gpm"

    Identifier     "Mouse0"

    Driver         "mouse"

    Option         "Protocol"

    Option         "Device" "/dev/input/mice"

    Option         "Emulate3Buttons" "no"

    Option         "ZAxisMapping" "4 5"

    Option         "Buttons" "5"

    Option         "SendCoreEvents" "true"

EndSection

```

Sharkoon Lasermaus FireGlider/USB 3600dpi

http://www.sharkoon.com/?q=de/node/1338

----------

## firefly

Schonmal geschaut ob eventuell eine udev regel unter /etc/udev gibt, welche deine maus betrifft?

Wird neben dem /dev/input/js0 auch ein /dev/input/mouseX angelegt?

hmm kann es eventuell sein, dass sich die maus als joystick ausgibt?

Könntest du mal bei dir folgendes Programm übersetzen und die Ausgabe hier posten. (als parameter erwartet es ein eventX device datei z.b. /dev/input/event0)

Das programm tut nichts anderes als ein paar informationen über das input gerät auszugeben (welche der evdev treiber im kernel liefert) und zu erkennen um welche Geräte klasse es sich handelt.

http://nopaste.info/9be48e250e.html

----------

## flammenflitzer

cat /etc/make.conf

```
INPUT_DEVICES="evdev keyboard joystick mouse virtualbox vmmouse"
```

Ich werde die 

```
cat /etc/X11/xorg.conf

Section "InputDevice"

    # generated from data in "/etc/conf.d/gpm"

    Identifier     "Mouse0"

    Driver         "mouse"

    Option         "Protocol"

    Option         "Device" "/dev/input/mice"

    Option         "Emulate3Buttons" "no"

    Option         "ZAxisMapping" "4 5"

    Option         "Buttons" "5"

    Option         "SendCoreEvents" "true"

EndSection
```

ändern in 

```

Section "InputDevice"

        Identifier  "Mouse0"

        Driver      "evdev"

        Option      "Device" "/dev/input/by-path/pci-0000:00:0b.0-usb-0:3:1.1-mouse"

        Option         "Buttons" "7"

        Option         "SendCoreEvents" "true"

EndSection
```

Mit dem http://nopaste.info/9be48e250e_nl.html kann ich nichts anfangen?

Was die udev-rules betrifft, habe ich mich in der Vergangenheit damit beschäftigt, wie ich einem Gerät einen Eintrag in /dev/.. zuordnen kann. Aber wie ich das unterbinde ist mir unklar.

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

I: Bus=0003 Vendor=09da Product=9090 Version=0111

N: Name="A4TECH USB Device"

P: Phys=usb-0000:00:0b.0-3/input0

S: Sysfs=/devices/pci0000:00/0000:00:0b.0/usb2/2-3/2-3:1.0/input/input3

U: Uniq=

H: Handlers=sysrq kbd event3 js0 

B: PROP=0

B: EV=12001f

B: KEY=837fff002c3027 bf00444400000000 c00000000000001 10c040b27c007 ffa67bfad941dfff febeffdfffefffff fffffffffffffffe

B: REL=40

B: ABS=ffffff01000701ff

B: MSC=10

B: LED=1f

I: Bus=0003 Vendor=09da Product=9090 Version=0111

N: Name="A4TECH USB Device"

P: Phys=usb-0000:00:0b.0-3/input1

S: Sysfs=/devices/pci0000:00/0000:00:0b.0/usb2/2-3/2-3:1.1/input/input4

U: Uniq=

H: Handlers=mouse0 event4 

B: PROP=0

B: EV=17

B: KEY=ffff0000 0 0 0 0

B: REL=143

B: MSC=10

```

Außerdem versuche ich das mit den udev.rules

```
nano /etc/udev/rules.d/91-local.rules

#neue Maus als js2 statt js0

KERNEL=="event*", ATTRS{phys}=="usb-0000:00:0b.0-3/input0" , NAME="js2"

```

----------

## firefly

 *flammenflitzer wrote:*   

> 
> 
> Mit dem http://nopaste.info/9be48e250e_nl.html kann ich nichts anfangen?

 

Ups da hätte ich wohl eine kleine anleitung dazu legen sollen  :Smile: .

Einfach die Zeilen in eine datei (z.b. evdev_test.c) kopieren und diese dann einfach mit

```
gcc evdev_test.c -o evdev_test
```

übersetzen.

danach dann einfach das programm starten (als root, da es lesenden zugriff auf das als parameter angegebene eventX device benötigt)

In deinem Falle wäre es dann

einmal

```
./evdev_test /dev/input/event3
```

und dann nochmal, da scheinbar deine mouse sich als multi device ausgibt

```
./evdev_test /dev/input/event4
```

Ich vermute mal, dass beim aufruf mit event3 dann eine Ausgabe kommt das es sich um ein joystick oder gamepad handelt. (Das würde auch erklähren wiso /dev/input/js0 für dieses device angelegt wird.)

----------

## Max Steel

 *firefly wrote:*   

> http://nopaste.info/9be48e250e.html

 

[little-OT]

psst, bei deinen printf() Funktionen fehlt das \ (oder wars doch /) vor dem Steuerzeichen n  :Wink: 

[/little-OT]

----------

## firefly

 *Max Steel wrote:*   

>  *firefly wrote:*   http://nopaste.info/9be48e250e.html 
> 
> [little-OT]
> 
> psst, bei deinen printf() Funktionen fehlt das \ (oder wars doch /) vor dem Steuerzeichen n 
> ...

 

hmm da hat wohl nopaste die geklaut bei mir lokal sind diese noch vorhanden  :Smile:  Und es ist \n (für neue zeiel)

----------

## flammenflitzer

```
nano /etc/udev/rules.d/91-local.rules

#neue Maus als js2 statt js0

KERNEL=="event*", ATTRS{phys}=="usb-0000:00:0b.0-3/input0" , NAME="js2"
```

funktioniert nicht.

(Kann ich das http://nopaste.info/9be48e250e.html noch einmal fehlerfrei haben? Ich habe alle n" in \n" geändert, funktioniert aber nicht.)

----------

## firefly

 *flammenflitzer wrote:*   

> 
> 
> ```
> nano /etc/udev/rules.d/91-local.rules
> 
> ...

 

was heißt funktioniert nicht?

----------

## flammenflitzer

```
 gcc inputdevice.c -o inputdevice

inputdevice.c:15: Fehler: expected identifier or »(« before »sizeof«

inputdevice.c: In Funktion »GetRelAxisInfo«:

inputdevice.c:30: Fehler: »for« loop initial declarations are only allowed in C99 mode

inputdevice.c:30: Anmerkung: use option -std=c99 or -std=gnu99 to compile your code

inputdevice.c:31: Fehler: expected expression before »)« token

inputdevice.c:71: Fehler: expected »)« before »}« token

inputdevice.c:71: Fehler: expected »)« before »}« token

inputdevice.c:71: Fehler: expected expression before »}« token

inputdevice.c: In Funktion »PrintInputType«:

inputdevice.c:76: Fehler: »evbit« nicht deklariert (erste Benutzung in dieser Funktion)

inputdevice.c:76: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt

inputdevice.c:76: Fehler: für jede Funktion in der er auftritt.)

inputdevice.c:76: Fehler: expected expression before »||« token

inputdevice.c:205: Fehler: verirrtes »\« im Programm

inputdevice.c:208: Fehler: expected declaration or statement at end of input
```

----------

## franzf

Das ist arg komisch, evtl. hast du darin rumeditiert  :Very Happy: 

Kopiers einfach nochmal neu, speicher es ab. Dann kommt nur noch der Fehler mit dem "C99". Wenn du den Hinweis im Output anschaust, kannst du diesen Fehler aber leicht beheben. (gcc wie vorgeschlagen die Option mitgeben).

Das mit dem "n" ist weniger tragisch (nur unschön). Wenn du den Hinweis umsetzen willst, editiere nur manuell die "n"s in den printf-Aufrufen am Ende in ein "\n" - das ist die Escape-Sequenz für "neue Zeile".

----------

## flammenflitzer

olaf@flammenflitzer ~/Downloads/Input $ gcc inputdevice.c -o inputdevice

inputdevice.c: In Funktion »GetRelAxisInfo«:

inputdevice.c:29: Fehler: »for« loop initial declarations are only allowed in C99 mode

inputdevice.c:29: Anmerkung: use option -std=c99 or -std=gnu99 to compile your code

inputdevice.c: In Funktion »main«:

inputdevice.c:153: Fehler: »for« loop initial declarations are only allowed in C99 mode

olaf@flammenflitzer ~/Downloads/Input $ gcc inputdevice.c -std=c99 -o inputdevice

olaf@flammenflitzer ~/Downloads/Input $ /home/olaf/Downloads/Input/inputdevice

invalid amount of paramsno

----------

## franzf

 *flammenflitzer wrote:*   

> olaf@flammenflitzer ~/Downloads/Input $ /home/olaf/Downloads/Input/inputdevice
> 
> invalid amount of paramsno

 

Aufruf natürlich wie hier beschrieben mit dem device als Parameter.

----------

## flammenflitzer

olaf@flammenflitzer ~ $ /home/olaf/Downloads/Input/inputdevice  /dev/input/event4

evdev open: Permission denied

----------

## firefly

 *flammenflitzer wrote:*   

> olaf@flammenflitzer ~ $ /home/olaf/Downloads/Input/inputdevice  /dev/input/event4
> 
> evdev open: Permission denied

 

entweder das ganze als root starten oder die rechte des devices so anpassen, dass der benutzer lesend darauf zugreifen kann

----------

## flammenflitzer

Als root die gleiche Ausgabe.

```
 ls -la /dev/input/event4

crw-r----- 1 root root 13, 68  4. Sep 2011  /dev/input/event4
```

----------

