[HOW-TO] "Bezpieczna" konfiguracja dodatkowych przycisków większości myszy

philip100
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 14 lip 2010, 21:32
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

[HOW-TO] "Bezpieczna" konfiguracja dodatkowych przycisków większości myszy

Post autor: philip100 » 30 lip 2010, 04:50

Witam.

Na wstępie chcę zaznaczyć że treść tego tutka pochodzi z tej strony i nie jest moją własnością.

Sposób opisany poniżej polecam osobom mniej wprawionym w linuksie ponieważ w odróżnieniu od bezrozumnego żąglowania plikami typu "xorg.conf" nie grozi zamrożeniem sobie systemu na etapie ładowania splash'a :) ... Nie przeciągając:

Cała zabawa będzie polegać na przypisaniu niedziałającym przyciskom myszy skrótów klawiaturowych metodą oszukania X-serwera makrami.
Na początek trzeba się zaopatrzyć w 2 niewielkie programiki: "xmacro" oraz "xbindkeys" dzięki którym możliwe będzie "sczytanie" przycisków klawiatury oraz odtworzenie przypisanych im przez nas funkcji podczas gdy dany klawisz bądź kombinacja klawiszy zostaną użyte. W tym celu otwieramy terminal i wklejamy co następuje:

Kod: Zaznacz cały

sudo apt-get install xbindkeys xmacro
Teraz musimy dowiedzieć się jak nazywają się przyciski naszego gryzonia które domyślnie nie działają. W tym celu trzeba stworzyć plik o nazwie ".xbindkeysrc" wpisując w terminalu (gnome):

Kod: Zaznacz cały

gedit ~/.xbindkeysrc
Plik będzie ukryty i zostanie zapisany w folderze domowym. W oknie edycji pliku wklejamy (jeśli coś w tym pliku już się znajduje trzeba usunąć całą zawartość):

Kod: Zaznacz cały

"echo 'KeyStrPress Enter KeyStrRelease Enter' | xmacroplay :0"
b:1
Powyższą treść zapisujemy (nie zamykamy edytora ponieważ plik będzie nam potrzebny do dalszej edycji) i przystępujemy do "mapowania" przycisków naszej myszy ale najpierw małe wyjaśnienie co do powyższego tekstu.

"KeyStrPress"- określa że dla przycisku "b:1" myszy zostało zasymulowane wciśnięcie jakiegoś przycisku na klawiaturze, w tym przypadku klawisza - "Enter". Jednocześnie przycisk "Enter" został zwolniony poprzez polecenie - "KeyStrRelease Enter".
W skrócie oznacza to iż przycisk "Enter" został ukatywniony i zwolniony w wraz z użyciem przycisku "b:1" myszy. Pytanie który przycisk myszy to "b:1"?

Nasza mysz składa się z szeregu przycisków których nazwy będą rozpoczynać się od:
"b"
Dla mojej myszy (Logitech Performance MX) niektóre nazwy to:
b:1 - lewy przycisk (przycisk działa)
b:2 - środkowy przycisk (przycisk działa
b:3 - prawy przycisk (przycisk działa)
...
...
b:10 - przycisk pod kciukiem (przycisk nie działa)
b:11 - brak
b:12 - brak
b:13 - przycisk przełączający rozdzielczość myszy (przycisk nie działa)
Generalnie w gryzoniu Performance MX po instalacji ubuntu 10.04 nie działają tylko 2 przyciski "b:10" i "b:13" więc skupiłem się tylko na nich.

Sprawdźmy więc który przycisk myszy będzie się nazywał "b:1". W tym celu wklejamy w terminal polecenie:

Kod: Zaznacz cały

xbindkeys -n -v

i potwierdzamy enterem.

W tym momencie "b:1" - jeden z przycisków myszy (domyślnie b:1 jest to lewy) przestanie działać w sposób dotychczasowy i po każdorazowym jego wciśnięciu zobaczymy w termnalu odpowiedź typu:
"echo 'KeyStrPress Enter KeyStrRelease Enter' | xmacroplay :0"
m:0x0 + b:1 (mouse)
got screen 0 for window ab
Start program with fork+exec call
XTest for server ":0.0" is version 2.2.

KeyStrPress: Enter
KeyStrRelease: Enter
Unknown tag: Enter
xmacroplay: pointer and keyboard released.
Button release !
e.xbutton.button=1
e.xbutton.state=256
Dowiedzieliśmy się właśnie iż przycisk "b:1" jest lewym przyciskiem naszej myszy :) . Teraz musimy przywrócić domyślne ustawienie lewego przycisku myszy aby dało się go używać, wracamy więc do terminala (klik prawym przyciskiem na terminal, lewym na jego belkę i wykonujemy skrót klawiszowy CONTROL+C
Operację wykrywania nazw przycisków myszy powtarzamy edytując nasz docelowy plik ".xbindkeysrc", zmieniając w nim "b:1" na "b:2" i uruchamiając ponownie polecenie:

Kod: Zaznacz cały

xbindkeys -n -v
Procedurę powtarzamy do momentu w którym znajdziemy przycisk domyślnie w naszym systemie nie działający i zapamiętujemy jego nazwę (dla mnie były to: "b:10" i "b:13").

Następny etap to przypisanie skrótów klawiszowych wybranym przyciskom myszy.W tym celu otwieramy terminal wklejamy polecenie:

Kod: Zaznacz cały

xmacrorec2 > dump.txt
potwierdzamy polecenie enterem i wciskamy klawisz "scroll lock" (bądź jakikolwiek którego nie będziemy chcieli przypisać myszy). Teraz "mapujemy" (wciskamy) pojedyncze klawisze które będą nam potrzebne do skonfigurowania gryzonia, np. "CTRL", "SHIFT", "SUPER", "ALT", "A", "B", "C","itp...". Kiedy uznamy że mamy już wystarczającą ilość zmapowanych klawiszy wciskamy ponownie "scroll lock" (bądź ten którego użyliśmy do zainicjowania polecenia) i przechodzimy do następnego polecenia które wyświetli nam nazwy zmapowanych klawiszy, w tym celu:

Kod: Zaznacz cały

cat dump.txt
Potwierdzamy enterem oraz odczytujemy i zapamiętujemy/zapisujemy to co po "KeyStrPress" "wypluł" nam terminal, np.:

Kod: Zaznacz cały

philip@philip-laptop:~$ cat dump.txt
MotionNotify 477 361
KeyStrPress Control_L
KeyStrRelease Control_L
KeyStrPress Shift_L
KeyStrRelease Shift_L
KeyStrPress Super_L
KeyStrRelease Super_L
KeyStrPress Alt_L
KeyStrRelease Alt_L
KeyStrPress a
KeyStrRelease a
KeyStrPress b
KeyStrRelease b
KeyStrPress c
KeyStrRelease c
...
philip@philip-laptop:~$
Na podstawie wszystkich powyższych danych możemy zająć się naszym plikiem który przypisze niedziałającemu przyciskowi myszy jakiś skrót klawiszowy :)
W tym celu ponownie edytujemy plik ".xbindkeysrc" Zamieniając poprzedne dane tymi które będą dla nas użyteczne. W moim przypadku dwa niedziałające przyciski gryzonia użyłem do obsługi skrótów klawiszowych compiz'a. Potrzebowałem kombinacji klawiszy do Expo- Super(Win) + l oraz przełączania między oknami- Control + l więc w swoim pliku wpisałem:

Kod: Zaznacz cały

#Compiz: inicjuj - Expo:
"echo 'KeyStrPress Super_L KeyStrPress l KeyStrRelease Super_L KeyStrRelease l' | xmacroplay :0"
b:13

#Compiz: Szybki Wybór - Inicjuj przeglądanie wszystkich okien:
"echo 'KeyStrPress Control_R KeyStrPress l KeyStrRelease Control_R KeyStrRelease l' | xmacroplay :0"
b:10
Zmodyfikowany przez nas plik zapisujemy i ponownie wklejamy w terminal polecenie które przetestuje nasze ustawienia:

Kod: Zaznacz cały

xbindkeys -n -v
Zatwierdzamy enterem i sprawdzamy czy nasz dotychczas niedziałający przycisk myszy działa tak jak to sobie ustawiliśmy, jeśli wszystko jest okey możemy ustawić nasz skrypt aby uruchamiał się automatycznie podczas startu systemu, więc: System -> Preferencje -> Programy startowe, kliamy "dodaj", wpisujemy nazwę (jakąkolwiek) oraz polecenie: "xbindkeys" (bez cudzysłowu oraz -n -v).
Jeśli coś nie działa polecam przeczytać tutek jeszcze raz lub zapoznać się z oryginałem na tej stronie ;) .

Pozdrawiam i życzę powodzenia !.
ODPOWIEDZ

Wróć do „Hardware-Inne”