Ustaw mysz leworęczną, a touchpad prawą

10

Widzę, że mogę skonfigurować mysz i touchpad w jednym panelu (Ubuntu 13.10, domyślne, Gnome). Co do pewnego stopnia. Mianowicie, chcę, aby touchpad był inaczej skonfigurowany niż mysz i ...

Kiedy mam podłączoną mysz (USB), używam jej zwykle leworęcznej. Dlatego przełączam przyciski na leworęczne. Ale kiedy używam touchpada, czuję się trochę zagubiony przy tego rodzaju konfiguracji. Dlatego chcę mieć to prawo.

Czy istnieje sposób na osiągnięcie następujących celów: kiedy podłączam mysz (odpowiednio po wykryciu) automatycznie przełącza się na leworęczny, a kiedy odłączam ją, przełączam automatycznie na praworęczny?

Lew
źródło

Odpowiedzi:

10

Rozumiem twoją frustrację, ale ten problem można rozwiązać bardzo prosto za pomocą xinputnarzędzia.

Najpierw podłącz mysz USB, a następnie uruchom następujące polecenie:

xinput list

aby zobaczyć idmysz. Wyjście powyższej komendy może być podobne do:

xinput | kot
⎡ Identyfikator wirtualnego wskaźnika rdzenia = 2 [wskaźnik główny (3)]
↳ ↳ Wskaźnik wirtualnego rdzenia XTEST id = 4 [wskaźnik slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [wskaźnik slave (2)]
Mouse ↳ Identyfikator myszy USB = 11 [wskaźnik slave (2)]
⎣ Identyfikator wirtualnej klawiatury rdzenia = 3 [klawiatura główna (2)]
    ...

W powyższym przykładzie mysz USB ma id=11. Użyjemy tego idw następującym poleceniu, które zamieni przyciski, które będą leworęczne tylko dla myszy USB (a nie dla tauchpad):

xinput set-button-map 11 3 2 1

Ogólnie:

xinput zestaw-przycisk-mapa id 3 2 1

Aby cofnąć zmianę, użyj:

xinput zestaw-przycisk-mapa id 1 2 3

Aby wprowadzić zmianę na stałe, dodaj następujące polecenie w aplikacjach startowych (wyszukaj w Dash dla aplikacji startowych ):

sh -c "xinput set-button-map id 3 2 1"

Aktualizacja:

Ponieważ identyfikator może się zmienić po ponownym uruchomieniu komputera, ale nazwa myszy USB nie, możesz również wyszukać nazwę myszy i zastosować ją. Aby pominąć szczegóły reg. wybranie nazwy wygląda ostateczne rozwiązanie:

dla id w liście `/ usr / bin / xinput | / bin / grep „ Mysz USB ” | / bin / grep -o [0-9] [0-9] `; wykonaj xinput set-button-map $ id 3 2 1; gotowy;

spakuj go do wyżej wymienionych aplikacji startowych , które w końcu otrzymasz:

sh -c "dla id w` / usr / bin / xinput list | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; do xinput set-button-map $ id 3 2 1; gotowe; "
Radu Rădeanu
źródło
2
Nie wiem, czy powinienem edytować Twój post, czy nie. Twoje podejście dało mi właściwy kierunek, ale problem polegał na tym, że ponowne uruchomienie może zmienić identyfikator myszy. Dlatego zmieniłem go na sh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"i to działa (być może trzeba dbać o właściwe łączniki). Dziękuję za podpowiedź.
LeO
@LeO W moim przypadku ponowne uruchomienie komputera nie zmienia identyfikatora myszy. Nie testowałem z większą liczbą myszy ani nie zmieniłem położenia portu USB.
Radu Rădeanu
@LeO W każdym razie twój pomysł jest bardzo dobry, więc proszę, edytuj odpowiedź. Jeśli nie, zrobię to później.
Radu Rădeanu
8

Jest jeszcze prostszy sposób niż w odpowiedzi Radu Rădeanu . xinputakceptuje nazwę urządzenia wejściowego jako alternatywę dla jego identyfikatora numerycznego. Ponieważ mysz USB jest prawdopodobnie traktowana ogólnie, najprawdopodobniej jej nazwa USB Mouse. Dlatego prawdopodobnie nawet nie musisz biegać xinput list.

W ten sposób Twój xinput set-button-map, z tą nazwą zamiast identyfikatora numerycznego, staje się:

xinput set-button-map "USB Mouse" 3 2 1

To zajmuje miejsce i powinno osiągnąć to samo, czyniąc z niego leworęczną mysz, tak jak w przypadku użycia metody numerycznej identyfikacji . (Zastąpienie go nadal będzie działać, aby zmienić go w mysz praworęczną).xinput set-button-map id 3 2 13 2 13 2 11 2 3

Ma to tę zaletę, że pod warunkiem, że działa początkowo, będzie nadal działać po ponownym uruchomieniu komputera, bez konieczności uzyskiwania numeru identyfikacyjnego urządzenia za pomocą długich, złożonych poleceń.

reedstrm
źródło
1
Ta odpowiedź zasługuje na więcej pochwał.
Mephisto,
W moim przypadku mam bezprzewodową mysz + klawiaturę, więc xinput listpokazuje 2 wpisy o tej samej nazwie („Bezprzewodowa klawiatura i mysz 2.4G”), z wyjątkiem tego, że jeden mówi „[wskaźnik slave (2)]”, a drugi mówi „[klawiatura slave (3) )] ”. Więc z twoim rozwiązaniem mam ten błąd: „Istnieje wiele urządzeń o nazwie„ Bezprzewodowa klawiatura i mysz 2.4G ”.”. W tej chwili korzystam z dodawania rozwiązania Radu grep 'slave pointer'. Zastanawiam się, czy xinput pozwala w jakiś sposób określić, że mamy na myśli wskaźnik bez robienia tego wszystkiego.
matiascelasco
1

Odkryłem, że komenda uruchamiania w drugiej odpowiedzi działa tylko wtedy, gdy id jest dwucyfrową liczbą. Oto moje modyfikacje, które powinny działać dla liczb jedno- i dwucyfrowych:

W aplikacjach startowych

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"
robbie
źródło
0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

Oto bardziej szczegółowe rozwiązanie, które rozwiązuje dwa problemy:

  • Działa dla identyfikatorów urządzeń z dowolną liczbą cyfr (to samo co rozwiązanie @robbie, ale napisane nieco inaczej)
  • Uważa, że ​​nazwa urządzenia może być zduplikowana. W moim przypadku mam bezprzewodową mysz + klawiaturę, więc xinput listpokazuje 2 wpisy o tej samej nazwie („Bezprzewodowa klawiatura i mysz 2.4G”), z wyjątkiem tego, że jeden mówi „[wskaźnik slave (2)]”, a drugi mówi „[klawiatura slave (3) )] ”. Tak więc z rozwiązaniem @reedstrm miałem ten błąd: „Istnieje wiele urządzeń o nazwie„ Bezprzewodowa klawiatura i mysz 2.4G ”.”, Podczas gdy w rozwiązaniu @Radu Rădeanu foriterowano ponad 2 identyfikatory, jedno dla myszy i jedno dla klawiatury, mając Komunikat o błędzie „urządzenie nie ma przycisków” z drugim.
matiascelasco
źródło