Joystick działa jak mysz; nie przestanie


14

Joystick działa jak mysz, nawet gdy gram w grę, w której używa się joysticka, więc mam losowe zdarzenia myszy.

Podłączyłem joystick, aby zagrać w Spiral Knights, zainstalowałem także joystick i jcalibrate. Wszystko działa dobrze, z wyjątkiem domyślnego joysticka, który porusza myszą, a przycisk aktywuje klawisze myszy.

Teraz normalnie byłoby to dobre zachowanie, gdybym korzystał z Mitu lub czegoś w tym stylu, niestety, kiedy gram w Spiral Knights za pomocą joysticka, widzę, że kursor myszy porusza się w tle, a kiedy nacisnę przycisk, wydaje mi się, że nacisnę kliknij prawym przyciskiem myszy, aby wszystko zminimalizować. Tworzy również foldery i prawdopodobnie usuwa rzeczy.

Więc w zasadzie, jak, u licha, mam powstrzymać to od działania jak mysz?


Czy możesz pokazać, jakiego masz komputera i joysticka? Również jaka wersja Ubuntu.
Luis Alvarado,

Używam adaptera Playstation 2 na USB, pod jscalibrate jest wymieniony jako: Joystick USB GreenAsia Inc. Używam Ubuntu 10.10
Shazzner

Odpowiedzi:


15

Odinstaluj xserver-xorg-input-joystick.

Jest to pakiet do sterowania myszą za pomocą joysticka. Zainstalowałem go tylko raz, aby go przetestować i doprowadzało mnie to do szału, więc może to jest problem. Myślę, że joystick bez niego działałby tak samo.


Brawo, że to zrobiło! Myślę, że zostało to rozwiązane, gdy dodałem pakiet joysticka w Synaptic. Teraz działa świetnie!
Shazzner,

Miałem również ten problem i to go rozwiązało. Wielkie dzięki za odpowiedź, bardzo cenione!
b1ackcrow

Czy istnieje sposób na wyłączenie / włączenie tej funkcji? Fajnie jest sterować myszką za pomocą gamepada, ale fajnie byłoby go włączyć, gdy go potrzebuję
chepe263

dziękuję, to działało również na Arch Linux! Próbowałem grać w Dustforce, a to mnie naprawdę denerwowało.
Marco Scannadinari,

1
Do Twojej wiadomości musiałem się wylogować i zalogować ponownie. W Linuksie Manjaro nazwa pakietu to joystick xf86-input-input.
Peter,

4

umieść ten kod w pliku:

#!/bin/bash
id=`xinput list | grep "↳ DragonRise Inc.   Generic   USB  Joystick     id=" | cut -c58-59`
props_mouse=`xinput list-props $id | grep "Generate Mouse Events (" | cut -c25-27`
props_teclado=`xinput list-props $id | grep "Generate Key Events (" | cut -c23-25`
xinput set-prop $id $props_mouse 0
xinput set-prop $id $props_teclado 0

zapisz go, prawym przyciskiem myszy i zaznacz „zaznacz ten plik jako program”

Wykonaj go, a będziesz miał joystick „jak dżojstik ponownie” (a najlepiej, możesz ponownie mieć joystick jako mysz, jeśli zmienisz „0” w dwóch ostatnich wierszach za pomocą „1”).


Wygląda na to, że zmienił się format linii „listy xinput”.
Phoeey,

Ten kod wymaga zmian, aby działał pod Ubuntu 18.04 LTS. Dane wyjściowe uległy zmianie.
Hans Deragon

2

Właśnie miałem ten sam problem, ale z kontrolerem Playstation 3. Wykorzystując odpowiedzi jako szablon, rozwinąłem rozwiązanie:

#!/bin/bash
id=`xinput list | grep -P "PLAYSTATION.*pointer" | grep -oP "id=\d+" | grep -oP "\d+"`
props=`xinput list-props $id`
# echo "$props"
props_mouse=(`echo "$props" | grep "Generate Mouse Events" | grep -oP "\d+"`)
props_keyboard=(`echo "$props" | grep "Generate Key Events" | grep -oP "\d+"`)
xinput set-prop $id ${props_mouse[0]} $[1-${props_mouse[1]}]
xinput set-prop $id ${props_keyboard[0]} $[1-${props_mouse[1]}]

Ta wersja skryptu włącza lub wyłącza kontroler, w zależności od bieżących ustawień, takich jak przełącznik.


Ponieważ jest to nowe rozwiązanie dla a) innego kontrolera ib) ma inną funkcjonalność niż podane skrypty. Nie rozumiem, jak edytowanie istniejącej odpowiedzi mogłoby to zmienić.
hochl

Wystarczająco dobrze dla mnie! Poparto głosowanie, aby wspiął się na szczyt! ;-)
Fabby

1

Być może powinieneś używać jscal do kalibracji joysticka - możesz użyć opcji -u jak na stronie podręcznika, aby skonfigurować joystick tak, aby nie używał przycisków myszy.

Jest także kilka interesujących rzeczy na temat różnych joysticków i padów na ubuntuforum .


Czy istnieje sposób na skonfigurowanie tego bez generowania, a następnie edytowania pliku xorg.conf? (Już używam jscal do kalibracji joysticka)
Shazzner

Używam jstest-gtk, jak sądzę, w repozytoriach.
animaletdesequia

1

Wypróbuj Qjoypad lub (jeśli nie chcesz używać QT) nieco mniej funkcjonalny rejoystick (GTK). W ten sposób nie musisz edytować / tworzyć xorg.conf.

Oba są dostępne na PlayDeb

Zrozumienie sterowników joysticka jest swego rodzaju bałaganem, wszystko wydaje się albo przestarzałe, albo niedokończone ... Powodzenia!


1
Są to świetne programy, ale niestety nie rozwiązały mojego problemu, ponieważ ponowne powiązanie ich nie rozwiązało problemu.
Shazzner,

1

Używam Linux Mint 17.3 i miałem ten sam problem. Miałem jedyną konsolę i zamierzałem wyrzucić kontroler. Nie wiedziałem, że to zadziała, ale łatwo się łączyło przez bluetooth. Lewy joystick kontrolował mysz, a ja szukam i próbuję różnych metod, ale żadna z nich nie działała. Wysyłam to, aby mogło pomóc innym ludziom. Postępowałem zgodnie z poprawką ze strony konfiguracji Ubuntu Sixaxis . Musiałem dodać tę konfigurację do pliku xorg.conf:

Section "InputClass"
    Identifier "joystick catchall"
    MatchIsJoystick "on"
    MatchDevicePath "/dev/input/event*"
    Driver "joystick"
    Option "StartKeysEnabled" "False"       #Disable mouse
    Option "StartMouseEnabled" "False"      #support

EndSection

Działa idealnie po wylogowaniu. Jedynym problemem jest to, że jeśli xorg.conf zostanie zaktualizowany, tak jak po zainstalowaniu nowego sterownika graficznego, zostanie utracony. Czy ktoś może mi wyjaśnić, jak utworzyć skrypt sprawdzający, czy konfiguracja znajduje się w pliku, jeśli nie, napisz go po każdym ponownym uruchomieniu? Z góry dziękuję.


0

1- Najpierw powinieneś zobaczyć numer joysticka ... więc uruchom Terminal i wpisz listę xinpute, poszukaj numeru joysticka i zastąp jego numer zamiast 10 w poniższym przykładzie.

#!/bin/bash id=xinput list | grep "↳ DragonRise Inc. Generic USB Joystick id=10" | cut -c58-59 props_mouse=xinput list-props 10 | grep "Generate Mouse Events (" | cut -c25-27 props_teclado=xinput list-props 10 | grep "Generate Key Events (" | cut -c23-25 xinput set-prop 10 $props_mouse 0 xinput set-prop 10 $props_teclado 0

2- Utwórz nowy dokument, następnie umieść w nim kod, a następnie zmień jego nazwę na name.sh Format 3- Uruchom Terminal, a następnie umieść ścieżkę w miejscu, w którym zapisujesz plik.

Przykład: cd Desktop (ponieważ zapisałem mój na pulpicie)

4- Wpisz bash name.sh (kliknij Enter i gotowe)

Uwaga 1: Aby włączyć ponownie, po prostu zmień 0 w ostatnich 2 liniach na 1 Uwaga 2: jeśli to nie zadziała, usuń joystick xserver-xorg-input-i i /usr/lib/X11/xorg.conf.d / 10-joystick


0

Odpowiedź Matiasa Parmigianiego była dla mnie kluczem. Jednak xinput listzmienił się format , przynajmniej na Ubuntu 13.04 LTS ...

⎜   ↳ DragonRise Inc.   Generic   USB  Joystick     id=12   [slave  pointer  (2)]
    ↳ DragonRise Inc.   Generic   USB  Joystick   (keys)    id=11   [slave  keyboard (3)]

W związku z tym musiałem użyć następującego skryptu blokującego:

#!/bin/bash
id=`xinput list | grep -P "DragonRise Inc.   Generic   USB  Joystick\s+id=" | grep -oP "id=\d+"| cut -c4-5`
props_mouse=`xinput list-props $id | grep "Generate Mouse Events" | grep -oP "\(\d+"| cut -c2-5`
props_teclado=`xinput list-props $id | grep "Generate Key Events" | grep -oP "\(\d+"| cut -c2-5`
xinput set-prop "$id" "$props_mouse" 0
xinput set-prop "$id" "$props_teclado" 0

Mam nadzieję że to pomoże!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.