Strona 1 z 1

[Solved] Joystick - jak to jest zrobione - Logitech RumblePad 2

: 23 gru 2011, 21:47
autor: uggp
Witam,

Podłączyłem gamepad "Rumble Pad 2" do gry X Plane 9 (Jest natywna na Windows/Linux/Mac). GamePad ma 2 joysticki analogowe i 10 przycisków. Mam taki problem, że 4 przyciski po lewej zgrupowane w krzyżyk w grze rozpoznawane są jako joystick analogowy a nie jako 4 przyciski. Oczywiście jest to bez sensu bo mamy wtedy tylko skrajne pozycje.
I tak kombinuje, czy to gra coś źle robi (na windowsie jest ok) czy to driver tak ma. W zasadzie to nawet nie wiem jaki driver. Rumble Pad działa od razu bez żadnego kombinowania. Gdzie w ogóle szukać info jak te joysticki są obsługiwane na Ubuntu?

Re: Joystick - jak to jest zrobione

: 24 gru 2011, 01:37
autor: mario_7
Testowanie i kalibracja - np. takie narzędzie się przyda: http://www.getdeb.net/software/jstest-gtk
A gdyby to było za mało, to możesz podpiąć pod przyciski na joysticku klawisze z klawiatury - wtedy przyda się jeden z tych programów: http://www.playdeb.net/software/rejoystick http://www.playdeb.net/software/QJoyPad

To wszystko w teorii, w praktyce nie miałem okazji testować. ;)

Re: Joystick - jak to jest zrobione

: 24 gru 2011, 14:14
autor: uggp
@mario_7
DZIĘKI !!! Działa! Wystarczy ten pierwszy program.

Klucz do rozwiązania jest w zakresach. Jeżeli jakaś oś "cyfrowa" wykrywana jest jako analogowa, to osiąga tylko wartości skrajne. U mnie "Hat" jest cyfrowy. Czyli wciskam "krzyżyk" i pilot kręci głową 180stopni w lewo do góry na dół itd, bez sensu.

Odpalam program do kalibracji. I okazuje się, że normalne osie analogowe mają od 15-239 (środek 112). A ta cyfrowa, która emulowana jest jako analogowa to -1 do 1 (środek 0).
Zamieniam -1 na -4 a 1 na 4 (oczywiście można inaczej). I teraz jak wciskam powiedzmy "krzyżyk" w lewo, to w grze pilot kręci o 1/4 (45 stopni). Czyli lewo prawo to lekkie skręcenie, góra dół (niebo/zegary). Pełny bajer lepiej niż na Windowsie :)
Zmieniając te wartości można tak dostroić że te "głowa" patrzy tak... naturalnie ;)