Nowe posty

Autor Wątek: Konfiguracja dodatkowych przyciskow myszy.  (Przeczytany 146 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2334
  • 1709
    • Zobacz profil
Konfiguracja dodatkowych przyciskow myszy.
« dnia: 2020-01-04, 17:56:09 »
Przypisanie klawiszy myszki, konfiguracja dodatkowych przycisków myszy, mapowanie przycisków.

Znajdziesz tego typu poadniki np. po wpisaniu w wyszukiwarke
" linux how-to-bind-mouse-buttons-to-keyboard "
Ten poradnik ma na celu pokazanie własnego doświadczenia.
Może komuś się przyda.


Narzędzia:
xbindkeys - jako taki powiedzmy "serwer" który przechwytuje wciśnięte klawisze i przyciski
xev (x11-utils) - narzędzie do identyfikowania klawiszy i przycisków myszki
xdotool lub xte (xautomation) - narzędzia symulujące wciśnięcie klawiszy i przycisków
xbindkeys-config - to wersja graficzna programu w którym możesz skonfigurować klawisze myszki.

* Oprócz tego w swojej dystrybucji czasem możesz także czasami znaleźć inne oprogramowanie dedykowane danemu producentowi sprzętu.


Info:
- Pewnych rzeczy nie znajdziesz w man i musisz przetestować sam, bo mogą działać u Ciebie inaczej.
- Instalacje narzędzi w tym obsługę programu graficznego pominę, wydaje mi się ze sobie poradzisz.

1. Spróbuj najpierw zidentyfikować przyciski myszy.
Samo uruchomienie komendy xev daje dość duży wynik danych z których ciężko znaleźć numer przycisku, dlatego użyj
xev | grep button

Klikając w białe nowo otwarte okienko otrzymasz numer przycisków,
poniżej otrzymałem numery 1 i 3 które u mnie odpowiadają
przyciskom lewym i prawym myszy.
$ xev | grep button
    state 0x0, button 1, same_screen YES
    state 0x100, button 1, same_screen YES
    state 0x0, button 3, same_screen YES
    state 0x400, button 3, same_screen YES

Info: W podobny sposób możesz uzyskać informacje o wciśniętym klawiszu klawiatury
$ xev | grep key
    keys:  1   0   0   0   16  0   0   0   0   0   0   0   0   0   0   0   
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
    state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
    state 0x0, keycode 40 (keysym 0x64, d), same_screen YES,
    state 0x0, keycode 40 (keysym 0x64, d), same_screen YES,

Info: W niektórych myszkach przy pomocy dodatkowych przycisków, możesz zmienić jej tryb działania.
W tym innym trybie, przy kliknięciu myszka może nadal wysyłać jakiś "sygnał", ale nie znajdziesz numeru przycisku przy pomocy
 " xed | grep button "  i musisz to wziąć pod uwagę przy mapowaniu przycisków.


2. Spróbujmy zasymulować wciśnięty klawisz.
Ja użyję prawy przycisk, ponieważ odrazu otwiera u mnie menu kontekstowe.
Użyj do tego komend xdotool lub xte. W tym celu zapoznaj się odpowiednio z
man xdotool
man xte

Dla przykładu w man xdotool w sekcji " MOUSE COMMANDS " znajdziesz wszystkie opcje myszki jakie możesz użyć.
xdotool click  3
Uruchomiło mi menu kontekstowe myszki.

Info:
- Jeśli sprawdziłeś przy pomocy xev lub przeczytałeś w man xdotool
to rolka przyjmuje odpowiednio numery przycisków: góra = 4 , dol = 5 , wciśnięcie / klikniecie = 2
-  I tu nie popełniaj mojego błędu. Wciśniecie i przytrzymanie przycisku 4 lub 5 nie spowoduje przewiniecie strony.
Podejrzewam ze jest to podyktowane budowa myszki,
 w której kawałek obrotu rolki powoduje wysłanie tylko jednego krótkiego sygnału.
W nowszych myszkach zazwyczaj można to wyczuć, czując opór kręcąc rolką i myszy.
Nawet w myszkach dotykowych, ponieważ pasek dotykowy naśladuje rolkę myszki i dlatego przewijanie nie jest płynne.
Przytrzymanie tego przycisku czasami może zdestabilizować środowisko graficzne.

Info: Jesli potrzebujesz opóźnić wykonanie komendy możesz użyć komendę sleep, np.
 sleep 2 ; xdotool click  3
odczeka 2 sekundy po czym zasymuluje klikniecie 3 przycisku myszy


3. Konfiguracja pliku ".xbindkeysrc".

Info:
- Mapowanie nie programuje myszki. Mapowanie potrafi zmienić działanie klawisza / przycisku tylko w danym systemie operacyjnym.
- Do mapowania potrzeba co najmniej dwóch narzędzi.
xbindkeys do przechwytywania i jakiegoś narzędzia do symulowania przycisków

Tworzenie nowego pliku konfiguracyjnego:

xbindkeys -d > ~/.xbindkeysrc

Edytuj plik ~/.xbindkeysrc i wklej lub wpisz " # " na początku komend, w których nie użyto " # ",
aby te komendy wyłączyć / zakomentować.
Ja znalazłem te linie w ten sposób:

$ xbindkeys -d | grep -v ^"#"

"xbindkeys_show"
  control+shift + q

"xterm"
  c:41 + m:0x4

"xterm"
  control + b:2

Przyjrzyj się tym przykładom, które były domyślnie aktywne w tym pliku konfiguracyjnym.
- Każde ustawienie jest oddzielone pusta linia
- W cudzysłowie znajduje się komenda która zostanie wykonana
- Niżej natomiast przyciski i klawisze które spowodują uruchomienie wyżej komendy.
-  " b:2 " oznacza przycisk myszy nr.2

Info:
"$" --> w terminalu znak zachęty użytkownika
"#" --> w terminalu znak zachęty administratora root
" # " --> w pliku (gdy jest na początku linii) oznacza komentarz, czyli wpis za tym znakiem wpis nie będzie wykonany i ma zadanie tylko informacyjne gdy będziemy czytać plik.
" ~/ " --> oznacza katalog domowy użytkownika
" ~/.xbindkeysrc " --> kropka przed nazwą pliku oznacza że plik jest ukryty
- Działanie komend symulujących wciśnięcie danego przycisku możesz najpierw sprawdzić w terminalu, zanim użyjesz ich w ~/.xbindkeysrc


# Symulowanie rolki myszki przy pomocy przycisków 8 i 9
# == Do Góry ==
"xdotool click --delay 24 --repeat 22 4"
   b:9

# == Na Dół ==
"xdotool click --delay 24 --repeat 21 5"
   b:8

Czyli coś w stylu:  Przyciskiem nr.8 kliknij przycisk nr.5 w czasie 24ms i powtórz klikniecie 21 razy w dol.
Dlaczego 21 razy? Ponieważ jedno klikniecie to tylko fragment obrotu rolki. Przetestuj, a sam zobaczysz.
I tu male ostrzeżenie.
 
Info:
- Komendy xdotool i xte o ile działają dobrze "mi" w terminalu, to nie zawsze z ~/.xbindkeysrc
np. Komenda " "xte 'mouseclick 4'" " na jednym z systemów moich nie działa, wiec użyłem xdotool.
np. Zmniejszenie liczby (czasu) w opcji delay w xdotool oprócz przyspieszenia przewijania, w pewnym momencie ma skutek uboczny.
Próba przyspieszenia przewijania , może powodować skrócenie odległości przewijania.
Może nawet się wydawać że komenda nie działa.


Kilka innych sposobów.
# Sterowanie suwakiem za pomocą klawiszy Page_Up i Page_Down
# == Do Góry ==
"xdotool key Page_Up"
   b:9

# == Na Dół ==
"xdotool key Page_Down"
   b:8

# Powrót na sama gore strony dzięki klawiszowi Home 
# == Do Gory ==
"xdotool key Home"
   b:9

# == Na dol ==
"xdotool key Page_Down"
   b:8

Info:  Wspomniane wyżej klawisze klawiatury można wykorzystać jako zastępstwo
do przewijania strony w przeglądarce,ale nie zadziałają one np. w terminalu
 i w niektórych innych programach, ponieważ spełniają tam inne zadanie.
 Należy wziąć to pod uwagę przy mapowaniu klawiszy.


4. Uruchamianie xbindkeys

xbindkeys

Info:
- Usługę uruchamiasz z konta użytkownika, ponieważ nie wymaga dodatkowych uprawnień
- Jeśli edytujesz plik, powinieneś zresetować proces xbindkeys

$ killall xbindkeys
$ xbindkeys
I to wszystko. Po uruchomieniu xbindkeys twoje zmapowane przyciski powinny już działać.



5. Bezpieczeństwo.
Plik ~/.xbindkeysrc możesz spróbować uczynić niezmiennym (immutable),
czyli zabezpieczyć z konta root żeby plik był nie nadpisywany z konta użytkownika,
np. w ten sposób, ale zmieniając odpowiednio ścieżkę na swoja...
chattr +i -V /home/sciezka_do_pliku/.xbindkeysrc

* Tak, będąc na koncie root powinieneś podać pełną ścieżkę,
 wpisując znak tyldy pomylimy katalog domowy z katalogiem root.

« Ostatnia zmiana: 2020-01-06, 16:10:03 wysłana przez 1709 »
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122