joystick

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Ausbaufähige Anleitung

Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.


Anmerkung: Im Abschnitt "Signale des Joysticks werden unter Xenial nicht erkannt" sollte noch hinzugefügt werden, welche Kernelversionen dies betrifft.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Pakete installieren

  2. Ein Terminal öffnen

  3. Ein Programm starten

Inhaltsverzeichnis
  1. Installation
  2. Kalibrieren
  3. Ermitteln der richtigen Gerätedatei
  4. Problembehebung

Wiki/Icons/joystick.png Das Paket joystick stellt Programme zum Kalibrieren und Testen von Joysticks bereit.

Installation

Folgendes Paket muss installiert [1] werden:

Paketliste zum Kopieren:

sudo apt-get install joystick 

Oder mit apturl installieren, Link: apt://joystick

Hinweis:

Bei Problemen im Zusammenhang mit Emulatoren, VM, etc., ist es ratsam vorher zu testen, ob der Joystick richtig kalibriert ist, oder zumindest brauchbare Signale empfängt. Wenn dort alles in Ordnung ist, spricht vieles dafür, das Problem woanders zu suchen, nämlich bei den betreffenden Emulatoren, VM, etc.

Kalibrieren

Programm starten

Um einen Joystick zu kalibrieren, muss nach der Installation von joystick das Programm jscal über ein Terminalfenster[2] aufgerufen werden:

jscal -c /dev/input/js0 

Der Parameter "-c" weist das Programm dabei an, eine Kalibrierung vorzunehmen. "/dev/input/js0" ist die Gerätedatei des Joysticks: Über diese kann das Programm das Gerät ansprechen. Sind mehrere Joysticks an den Rechner angeschlossen, werden sie entsprechend über "/dev/input/js1" usw. angesprochen. Die Ermittlung der richtigen Gerätedatei wird weiter unten beschrieben.

Durchführung der Kalibrierung

Nachdem das Programm gestartet wurde, versucht es, die Tasten und Achsen des Joysticks zu erkennen. Währenddessen sollte der Joystick nicht berührt werden. Nach einer kurzen Zeit erscheint folgende Aufforderung:

"Move axis 0 to minimum position and push any button."

Die einfachen Joysticks/Steuerknüppel verfügen meist nur über 2 Achsen pro Steuerknüppel (von Links nach Rechts, von Oben nach Unten). Normalerweise geht es mit der X-Achse (von Links nach Rechts) los. Im Idealfall reagiert das Programm nur auf jene Bewegung, die mit der zugehörigen Achse und Richtung zu tun hat. Man kann austesten, was passiert, wenn man den Joystick in alle Richtungen bewegt und sollte dies auch tun, um herauszufinden, was die erreichbare kleinste und höchste Zahl ist. Diese Achse muss nun bei der Aufforderung von 'Minimum' in eine Position gebracht werden, für die das Programm den kleinstmöglichen Wert ausgibt und anschließend durch eine (Feuer-)Taste des Joysticks bestätigt werden. Danach wird jscal 2 weitere Positionen der gleichen Achse des Joysticks abfragen. Wobei 'Center' die Mitte sein sollte, d.h. der Joystick befindet sich in der Ausgangsposition und anschließend 'Maximum' in der entgegengesetzten Richtung zum vorherigen 'Minimum'. Jede dieser Vorgänge muss mit der (Feuer-)Taste bestätigt werden. Die erreichbaren Werte können bspw. zwischen 0-255, -128 bis 128 oder auch -1 bis +1 sein, um 3 Beispiele zu nennen. Dies ist vom Joystickmodell abhängig. Das gleiche geschieht dann auch für die Achsen des Cooliehats (sofern vorhanden).

Am Ende der Prozedur speichert jscal die ermittelten Daten.

Hinweis:

Ist eine Achse zu viel vorhanden, oder Bewegungen des Steuerknüppels werden als drücken der Feuertaste interpretiert o.ä., dann hat der Kernel Probleme die Daten des Joysticks richtig auszulesen (siehe Hinweis unten). Kalibrieren ist in solch einem Fall ggf. nur teilweise machbar.

Testen

Zum Testen der Kalibrierung steht das Programm jstest bereit. Auch diesem Programm muss die korrekte Gerätedatei übergeben werden:

jstest /dev/input/js0 

jstest gibt nun fortwährend den Status der verschiedenen Achsen und Knöpfe aus:

Axes:  0:   218  1:     20  2:   128  3:   128  4:     0  5:     0 Buttons:  0:on   1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off

In diesem Beispiel wurde der Haupt-Steuerknüppel nach rechts-oben bewegt (Achsen 0 und 1). Zeitgleich wurde Knopf 1 betätigt.

Die Darstellung wirkt auf den ersten Blick recht unübersichtlich, lässt sich aber schnell erschließen, wenn man beobachtet, wie die Aktionen am Joystick sich auf die Bildschirmausgabe auswirken.

Ermitteln der richtigen Gerätedatei

Es gibt eine einfach Methode um zu ermitteln, welche Gerätedatei zu einem Joystick gehört. Dazu wird folgender Befehl in der Konsole ausgeführt:

cat /proc/bus/input/devices 

Dadurch werden alle angeschlossenen und erkannten Eingabegeräte aufgeführt. Der Abschnitt für ein angeschlossenes Gamepad könnte wie folgt aussehen:

I: Bus=0003 Vendor=054c Product=0268 Version=0111
N: Name="PS3/USB Corded Gamepad"
P: Phys=usb-0000:00:1d.7-6.2.1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6.2/1-6.2.1/1-6.2.1:1.0/input/input10
U: Uniq=
H: Handlers=event6 js0 
B: EV=1b
B: KEY=fff0000 0 0 0 0 0 0 0 0 0
B: ABS=30027
B: MSC=10

In diesem Fall sind besonders die Abschnitte "N: Name" und "H: Handlers" interessant: Über den Namen kann das richtige Gerät identifiziert werden; der Abschnitt Handlers gibt an, welche Gerätedatei dem Gerät zugeordnet wurde - in diesem Fall js0. Da die Gerätedateien zu den Eingabegeräten immer im Verzeichnis /dev/input/ liegen, lautet die korrekte Gerätedatei zu dem Gamepad in diesem Fall also /dev/input/js0.

Problembehebung

Signale des Joysticks werden unter Xenial nicht erkannt

Bei manchen Kernelversionen von Ubuntu 16.04 kann es zu Problemen mit dem Einlesen der Daten/Signale von einigen Joysticks kommen. Dies kann dazu führen, dass in solchen Fällen beim Kalibrieren eine Achse mehr angegeben wird, und/oder eine Joystick-Bewegung als Feuerknopftätigkeit vom Kalibrierungs-Programm/Kernel interpretiert wird.

Abhilfe schafft, eine andere Kernelversion zu nutzen.