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
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.
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
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.
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.
Dalším krokem je přesunutí touchpadu (ID = 15) pod nového mastera (ID = 17).
xinput reattach 15 17
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
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.