Portál AbcLinuxu, 30. dubna 2025 12:53
Jsem štastným majitelem klávesnice s 10 multimediálními tlačítky, myši s pěti tlačítky (tj dvě navíc) a výkyvným tlačítkem. Podpora v linuxu je více než dobrá (ve smyslu toho, že o nich systém ví, ne že rovnou fungují). Takže jak na to.
Pro úplnost, jedná se o tuto myš a klávesnici
Klávesnice vrací korektní scankódy
(narozdíl od zrůdiček Labtec které vrací sekvence ctrl+alt+...), které zjistíme a budeme ovládat pomocí skvělého programu xbindkeyes.
> xbindkeys -h
Takže například
xbindkeys 1.7.3 by Philippe Brochard
usage: xbindkeys [options]
where options are:
-V, --version Print version and exit
-d, --defaults Print a default rc file
-f, --file Use an alternative rc file
-h, --help This help!
-X, --display Set X display to use
-v, --verbose More information on xbindkeys when it
run
-s, --show Show the actual keybinding
-k, --key Identify one key pressed
-mk, --multikey Identify multi key pressed
-g, --geometry size and position of window open with -k|-mk option
-n, --nodaemon don't start as daemon
xbindkeys -mk
zobrazí okno, do kterého najedeme myší a proklikáme všechny multimediální klávesy na klávesnici. Asi je dobře zapamatovat si pořadí, abychom pak z terminálu vyčetly o jaké kláves vlastně šlo.
A výsledek:
--- Press "q" to stop. ---
"NoCommand"
m:0x14 + c:37
Control+Mod2 + Control_L
"NoCommand"
m:0x10 + c:49
Mod2 + grave
Pak už stačí vyeditovat soubor .xbindkeysrc a nastavit si akce pro jednotlivé klávesy. Použijeme scankódy, které jsme získali před chvíli. Soubor by měl existovat, a obsahuje "demo" příklady. Můj vypadá asi takto
# back
Syntaxe je tedy jednoduchá: příkaz /n scankód. Já používám téměř ke všemu programy s KDE, které jdou téměř úplně ovládat pomocí dcop.
"dcop amarok player prev"
c:234 + m:0x10
# forward
"dcop amarok player next"
c:233 + m:0x10
# volume down
"dcop kmix Mixer0 decreaseVolume 0"
c:174 + m:0x10
# volume up
"dcop kmix Mixer0 increaseVolume 0"
c:176 + m:0x10
xbindkeys umí pracovat také s myší, jen ji neumí identifikovat. "Scankód" pro myš vypadá jako 'b:číslo', tj:
b:9
pro první boční tlačítko. Vše je možné kombinovat s modifikátory jako ctr,alt ...
Jako další operační systém používám Mac OS a tam jsem si zvykl na funkci expose. Funguje naprosto perfektně, a po té co jsem si ji namapoval na boční tlačítko myši, jsem zjistil, že je pro mě nepostradatelná. Jak na to v linuxu? Expose efekt umí compiz, compiz-fusion a pak jedna skvělá KDE aplikace kompose. Ta je navíc nezávislá na 3D a compiz-like prostředí. Navíc jako správná KDE aplikace funguje pomocí dcopu. Jedna její nevýhoda je, že neumí "toggle mode". To znamená, že po té co stisknete tlačítko dvakrát, nevrátí se zpět do původního módu. Nic co by nespravil malý skriptík vložený do .xbindkeysrc:
# specify a mouse button
No ano, celý skriptík je na jeden řádek. Komu se to nelíbí, může si ho umístit do ~bin/skript.sh a ten spouštět jako příkaz z .xbindkeysr. Výsledek je že po stisknutí tlačítka 8 uvidím všechny aplikace na současné ploše. Stisknutím tlačítka 9 uvidím všechny aplikace na všech oknech, a druhý stik jakéhokoliv tlačítka mě vrátí do původního stavu.
"set=`cat ~/.kompose`; if [ $set -ne 1 ] ;then echo 1 > ~/.kompose; dcop kompose KomposeDcopIface createVirtualDesktopView; sleep 2 ; echo 0 > ~/.kompose; else echo 0 > ~/.kompose ; dcop kompose KomposeDcopIface closeCurrentView ; fi"
b:9
"set=`cat ~/.kompose`; if [ $set -ne 2 ] ;then echo 2 > ~/.kompose; dcop kompose KomposeDcopIface createDefaultView; sleep 2 ; echo 0 > ~/.kompose; else echo 0 > ~/.kompose ; dcop kompose KomposeDcopIface closeCurrentView ; fi"
b:8
Pro krátkém zkoumání, jsem zjistil, že toto obstarává jiný ovladač pro myš. Jmenuje se evdev, je běžně dostupný v distribuci. A od openSUSE 11.0 bude pro tento typ myši použit. Pro správné fungování stačí změnit xorg.conf:
Section "InputDevice"
V KDE funguje ve všech aplikacích. Firefox je potřeba přinutit"
Driver "evdev"
Identifier "Mouse[1]"
Option "Device" "/dev/input/event1"
Option "HWHEELRelativeAxisButtons" "7 6"
EndSection
about:config
mousewheel.horizscroll.withnokey.action - Set this to '1'
mousewheel.horizscroll.withnokey.numlines - Set this to '1'
"dcop kdesktop KScreensaverIface lock" - uzamkne desktop pomocí šetřiče obrazovky (tlačítko kalkulačka na právé straně).
"kmail --composer" - ukáže kmail okno pro nový email.
"dcop kmail KMailIface openReader" - ukáže (nové!) okno celého kmailu (skvělé při integraci s kontaktem).
"dcop `dcop | grep konq | head -n 1` KonquerorIface openBrowserWindow ~" - spustí nové okno konqueroru z již běžící instance. Tj. nespouští se nový konquror.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.