Uživatelské nastavení tlačítek myši v Linuxu

Linux Logo

Pracujete-li převážnou část dne s počítačem, určitě se vyplatí investovat trochu energie a optimalizovat si nejen prostředí ale i vstupní zařízení. Jednou z možností je např. koupě myši s dodatečnými tlačítky. Existují-li k myši ovladače pro Linux, pak máte usnadněnou práci a patřičné změny v nastavení můžete realizovat přes obslužnou aplikaci. Nepodporuje-li výrobce myši Linux, lze použít univerzální aplikaci určenou pro mapování akcí na jednotlivé ovládací prvky myši.

Pro experimenty použijeme aplikace xinput, xev a imwheel.

XINPUT

Velmi šikovný program, pomocí kterého můžete experimentovat se vstupními zařízeními, se jmenuje xinput. V našem případě jej využijeme k experimentům s myší.

Nejprve si zobrazíme všechny vstupní zařízení, které jsou v systému k dispozici

xinput list

XINPUT List devices

Na obrázku vidíme, že se připojená myš hlásí systému pod dvěma ID. Ponechme stranou proč tomu tak je a zapamatujeme si, že experimenty budeme provádět se zařízením s ID = 12.

Možná někoho napadne otázka, jak jsme zjistili, že myš se „schovává“ pod ID = 12? Jednoduše si spustíme následující příkaz

xinput disable 12

Pohneme-li myší, kurzor se nepohne. Myš je deaktivovaná.

xinput enable 12

Kurzor opět reaguje na pohyb myši.

XEV

Druhým pomocníkem při experimentech je program xev. Po spuštění se zobrazí malé okno, které zachytává události (pohyb myši, stisk tlačítka myši, stisk klávesy, atp.) a vypisuje je do terminálového okna (příp. souboru). Abychom se tedy ve výstupu vyznali, vyfiltrujeme si pouze události, které nás budou zajímat.

xev | grep button

Myší najedeme nad zobrazené okno a postupně stiskneme levé, střední (kolečko) a pravé tlačítko myši. Pohneme kolečkem dopředu a dozadu. Nakonec ještě stiskneme obě boční tlačítka. Na výstupu vidíme čísla, pod kterými jsou tlačítka namapována v systému.

XEV Show button identification

Experiment – zákaz skrolování

Nyní, když jsme se seznámili s namapovanými tlačítky myši, můžeme začít experimentovat. Nejprve se podíváme jak vypadá mapa tlačítek.

xinput get-button-map 12

XINPUT Button map

Na obrázku vidíme, že jsou všechna tlačítka aktivní. Každé tlačítko má nenulové pořadové číslo. Budeme-li chtít tlačítko deaktivovat, nastavíme nulu v příslušném pořadí tlačítka. Na příkladu si ukážeme, jak lze deaktivovat reakci systému na pootočení kolečka myši. Kolečko tedy bude fungovat pouze jako prostřední tlačítko na zmáčknutí. Nikoliv na pootočení.

xinput set-button-map 12 1 2 3 0 0 6 7 8 9

Opět si můžeme pomocí get-button-map zobrazit aktuální stav namapovaných ovládacích prvků myši.

XINPUT Changed button map

Na čtvrtém a pátém pořadí vidíme nastavenou nulu. V libovolném programu si můžete vyzkoušet, že skutečně při otáčení kolečkem se stránka neposouvá dolů ani nahoru.

Experiment – přidání druhého kurzoru

V seznamu vstupních zařízení si můžete povšimnout existence touchpadu (ID = 15). Někoho může napadnout, že pokud máme dvě HW zařízení (touchpad a myš), jež ovládají jeden kurzor, mohli bychom mít pro obě zařízení vlastní kurzor.

Vyzkoušíme tedy co se stane po spuštění

xinput create-master MY

Vytvoří se dvojice vstupních zařízení myš + klávesnice s prefixem MY.

XINPUT My devices

Dalším krokem je přesunutí touchpadu (ID = 15) pod nového mastera (ID = 17).

xinput reattach 15 17

XINPUT Remapped touchpad

Výsledkem jsou dva nezávislé kurzory ovládané dvěma HW zařízeními.

Vrácení systému do původního stavu s jedním kurzorem se provede přesunutím touchpadu (ID = 15) pod původní master (ID = 2).

xinput reattach 15 2

Smazání nového mastera (ID = 17) s prefixem MY.

xinput remove-master 17

Aktivace skrolování pomocí kolečka.

xinput set-button-map 12 1 2 3 4 5 6 7 8 9

IMWHEEL

Konečně se dostáváme k původnímu úkolu. Imwheel je univerzální aplikace, která překládá zaznamenané události, vyvolané kombinací klávesnice a ovládacích prvků myši, na události vyvolané stiskem klávesy. Jinými slovy po stisku bočního tlačítka myši v okně Firefoxu systém dostane stejnou informaci jako při stisku klávesy Home nebo End pro přesun na začátek nebo konec stránky.

Aplikace imwheel má standardně konfigurační soubory v adresáři /etc/X11/imwheel

V souboru /etc/X11/imwheel/startup.conf nastavte

IMWHEEL_START=1

Povšimněte si též možnosti deaktivace vybraných ovládacích prvků myši v parametru

IMWHEEL_PARAMS='-b "0 0 0 0 8 9"'

Tuto volbu však ponecháme zakomentovanou.

Soubor imwheelrc v témže adresáři obsahuje předdefinované nastavení platné pro všechny uživatele. V domovském adresáři si však vytvoříme vlastní konfigurační soubor platný pouze pro jednoho uživatele.

touch ~/.imwheelrc

Vložíme do něj následující nastavení

".*Firefox$"
None, Thumb1, End
None, Thumb2, Home

".*"
None, Thumb1, Page_Down
None, Thumb2, Page_Up

Zkusme si trochu rozebrat, co jednotlivé řádky nastavení znamenají.

".*Firefox$"

Jedná se o obyčejný regulární výraz, který je aplikován na jméno okna. Odpovídá-li jméno okna výrazu, je použito příslušné nastavení.

None, Thumb1, End

None – klávesa nebo kombinace kláves, které jsou stisknuty současně s ovládacím prvkem myši
Thumb1 – ovládací prvek myši
End – vyvolaná událost odpovídající charakteru stisknuté klávesy na klávesnici

Z manuálových stránek k imwheel je patrné, že boční tlačítka hlásící se systému jako button 8 a button 9, jsou programem interpretovány jako Thumb1 a Thumb2.

Pro zjištění názvu klávesy End jsem použil

xev | grep keysym

XEV Show key identification

Jak je vidět na obrázku, stiskl jsem postupně na své klávesnici klávesy zleva mezerníku Ctrl, Windows Key, Alt a zprava mezerníku Alt Gr, Menu key, Ctrl.

Výše uvedené nastavení tedy po stisku bočních tlačítek myši v okně Firefoxu posune stránku na začátek nebo konec. V ostatních oknech se simuluje stisk kláves Page Up a Page Down. Při aplikaci pravidel se postupuje odshora dolů. Není-li aplikovatelné první pravidlo, aplikuje se druhé v pořadí, atp.

Zájemce o detailnější informace odkazuji na manuálové stránky xinput, xev a imwheel.