Billentyűzet és egér makrózás

Billentyűzet és egér makrózás
Billentyűzet és egér makrózás

A billentyűzet és egér makrózás – már volt szó róla. Mit is takar ez? Akár egy billentyű kombinációhoz, akár egy egér gombbal való kattintáshoz hozzárendelünk egy eseményt: parancs, vagy makró futtatást. Ebben semmi újdonság nincs, mert napi szinten használjuk a Ctrl+s kombinációt a mentéshez, vagy a kedvenc ablakkezelőnket vezéreljük egy-egy egér vagy billentyű kattintással.
A beállításokat jellemzően az ablakkezelő saját konfigurációs állományában tehetjük meg, ami egy nagy csapdát rejt: csak abban az ablakkezelőben fognak működni, ha váltunk, akkor a másik asztali környezetben már nem. Ideális lenne egy nagyon komplett eszközt keresni, ami tudásban és egyszerűségben is kielégíti az igényeinket.

Mi a cél a billentyűzet és egér makrózás területén?

A keresett program a billentyűzet és egér makrózás területén tudjon pár helyzetet kezelni.

  • Kezelje a billentyűkombinációkat (pld. Ctrl+a és futtasson egy programot szituáció)
  • Kezelje az egér kattintásokat (pld. jobb klikk a gombbal és futtasson egy programot)
  • Kezelje a kettőt együtt (Ctrl lenyomása mellett klikkelve egy meghatározott gombbal és…)
  • Emulálja a billentyűkombinációt egér kattintással (pld. a videóvágó, vagy más, jellemzően egerészős programban egy funkció a Crtl+Alt+p kombinációhoz van rendelve, ha egy egérgombhoz tudjuk ezt kötni, akkor nem kell elengedni az egeret)
  • Tudja az egérkattintást emulálni billentyűzetről (Nekem kevésbé hasznos, de jó ha tudja)
  • Legyen mobil, azaz ne egy adott ablakkezelő vagy asztali környezet saját programja legyen
  • Legyen disztribúció független
  • Legyen szöveges beállítású, ami egyszerű szintaktikát használ

Kicsi leegyszerűsítve semmi megkötés ne legyen értelmes szinten.

A három alap program amivel megoldhatjuk a feladatot

Az egérgombok billentyűkombinációkhoz való összekötése, és a programok stb. indításához a következő eszközöket használjuk majd:

xbindkeys : olyan program, amely megragadja a billentyűket és az egérgomb eseményeket X-ben, és elindítja a kapcsolódó shell parancsot. Ez lesz a felelős a gombok által generált jelek és a feladatok összerendelésért.
xev : olyan eszköz, amely X esemény tartalmát nyomtatja ki. Ismerjük, már használtuk is jópárszor.
xdotool : parancssori X11 automatizálási eszköz, amellyel programozottan (vagy manuálisan) szimulálhatjuk a billentyűzetbevitelt és az egéraktivitást.

Amint látni mindegyik előtt ott van az X, így már most jelzem: ez csak X11 alatt lesz működőképes, Waylanden nem működik!!

A programokat telepíteni kell

Vagy nem. Sokszor már fenn lesznek a gépeden. De mindenképp érdemes meggyőződni erről. A telepítés disztribúciónként eltérhet, én egy angol cikk nyomán bemásolom ide az ismertebbeket. Kis eltérés lehet a nevekben.

Debian, Ubuntu, Linux Mint, Pop!OS, Elementary OS és más Debian vagy Ubuntu alapú Linux disztribúciók:

sudo apt install xbindkeys x11-utils xdotool

Fedora:
sudo dnf install xbindkeys xorg-x11-utils xdotool

openSUSE:
sudo zypper install xbindkeys xev xdotool

Arch Linux vagy Manjaro:
sudo pacman -S xbindkeys xorg-xev xdotool

Más Linux használatánál meg kell keresni a tárolókból a xdotool, xev, és xbindkeys programot, és telepíti őket.
Ha már nekiállunk a billentyűzet és egér makrózás témának ez a három legyen fenn. Ne menet közben kelljen valamit felrakni, telepíteni.

Egér gombjainak azonosítása

Ha régebben nem tetted volna meg, akkor:

xev | grep button

Ezután fókuszálj a felugró kis ablakra, és figyeld a terminál kimenetét. Majd nyomd meg azt az egérgombot, amelyhez meg szeretnéd kapni a kódot. A gomb megnyomása után látni kell a kódját (számát) abban a terminálban, ahol az xev-t fut.

Valami ilyent kapsz:

state 0x10, button 8, same_screen YES

Logikusan a nyolcas számú gombot nyomtad meg. Érdemes rögvest feltérképezni az összes gombot.

A billentyű kódok beszerzése

Ha billentyű kombinációkat is szeretnénk, akkor azok kódja is kellenek. Bár itt is futtathatjuk a xev parancsot paraméter nélkül, de hasznosabb, ha így felparaméterezve indul el:

xev | sed -ne '/^KeyPress/,/^$/p'

Lényegesen kevesebb felesleges kiírást kapunk, ami gyorsítja a munkánkat. Az egérmozgás és egyéb felesleges eseményről nem kapunk infót.

xev | sed -ne '/^KeyPress/,/^$/p'

KeyPress event, serial 36, synthetic NO, window 0x4800001,
root 0x6c0, subw 0x0, time 24821523, (714,105), root:(2009,138),
state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

Ebből három információ fontos, illetve a három közül egy, amit szabadon választhatsz ki.

A fenti bal Ctrl lenyomásával kapott 37, 0xffe3, vagy a Control_L amit érdemes ismerni.
Ebben a cikkben a kulcs nevét fogom használni (pl. Control_L a bal oldali vezérlőgombhoz), mivel könnyebben olvashatóak. De bármelyiket használhatnám.

Igen, tudom, de nem használom: a xbindkeys is használható. De ha a Caps_Lock vagy Num_Lock be van kapcsolva akkor a xev adja a jobb eredményt! Majd később használjuk ezt is!

A multimédiás billentyűk billentyűkódjait/billentyűzet-szimbólumait sem xed, sem xbindkeys -k parancsra nem jelennek meg. Abban az esetben, ha a multimédiás billentyűket szeretnénk név szerint használni itt kereshetünk rá a nevekre: https://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols

Eddig nem volt semmi újdonság és ezután sem lesz semmi olyan, amihez hasonlót már ne tettünk volna.

Az xbindkeys konfiguráció alapjai

A billentyűzet és egér makrózás teljes körben megoldható a xbindkeys helyes konfigurálásával. Nem nehéz, inkább a precizitás, mint a magas szintű szakmai tudás az elvárás.

Első lépésben létre kell hozni a konfigurációs állományt, ami vagy egy üres .xbindkeysrc fájl létrehozása a saját könyvtárban, vagy a

xbindkeys -d > ~/.xbindkeysrc

parancs futtatásával készíthető el. Én ezt a másodikat tartom jobbnak, mert kapsz egy mintabeállítást, plusz pár információt a kommentekben. Ezeket érdemes elolvasni.

Ezután nyisd meg ~/.xbindkeysrc állományt kedvenc szövegszerkesztőddel. Érdemes olyan használni, ami kiemeli a szintaxist, mert így kényelmesebb a munka.
A .xbindkeysrc egy rejtett fájl a saját könyvtárban, ezért ha nem találod a fájlkezelődben, akkor a rejtett fájlok megjelenítését kapcsold be. Bár javaslom, hogy szokd meg, hogy akár parancssorból is meg tudj nyitni egy konfigurációs fájlt. Ami valóban egyszerű, pld nvim .xbindkeysrc ha a $HOME könyvtárban vagy.

Most jön a favágó munka, fel kell tölteni az állományt. De előtte az összes olyan nem kikommentelt sort érdemes kitörölni, amire nem lesz szükséged. Nem lenne túl kellemes, ha a minta konfiguráció minta parancsai fura működésre kényszerítené a rendszeredet.

Egy egérgombot összekötni a billentyűkombinációval

Példa: ha megnyomom a button 8-ast, ami az én egeremnél például a webböngészőben vissza gombként használható gomb, akkor küldje el a gépnek azt a jelet, amit akkor kapna, ha a Control_L + Alt_L + Down gombokat nyomnám le egyszerre.

Az alapszintaxis egyszerű:

“xdotool key ‘KEY-COMBINATION'”
b:MOUSE-BUTTON-CODE

Ahol a

KEY-COMBINATION az előbb megkapott billentyűleütések kódjai, ha több együttes lenyomását akarjuk szimulálni, akkor a billentyűket + jel válassza el.
MOUSE-BUTTON-CODE az egérgomb kódja, amelyet lekérdeztünk az előbb

"xdotool key 'Control_L+Alt_L+Down'"
b:8

Összetett? Szerintem nem. Minimális gyakorlattal villámgyorsan beállítható még az olyan egér is, mint a Redragon Impact RGB Gaming egér is, aminek oldalt egy tucat gombja van.
Bár nagyon vonzó minden gombot átkonfigurálni, de sem a két nagy (jobb és bal klikk) sem pedig a görgetéshez tartozó button # értékeket nem kellene állogatni. Azok alapvető, standardizált feladatokat látnak el, melyekre a programok támaszkodnak.

Kis kitérő

A billentyűzet és egér makrózás önmagában nem egy agysebészet. A legtöbb beállítási lehetőség igen egyszerű, és átlátható formátumot vár el. De nem lehet ész nélkül keverni vele, mert abból gondok lesznek. Egyrészt a ablakkezelő. asztali környezetnek lehetnek beállításai, másrészt mi is definiálhattunk ezekhez plusz beállítást. Illetve értelemszerűen a programoknak is annak billentyűzet és egér makrózás beállításai. Ezeket napi szinten használjuk, nem is nagyon gondoljuk át, hogy a megszokott Ctrl + s billentyűkombináció a billentyűzet és egér makrózás témakörébe tartozik. De igen! Mielőtt bármilyen beállítást megtennénk győződjünk meg róla, hogy esetleg nem használtuk azt máshol, vagy valamelyik program alapbeállításainál nem használták azt fel. Bár biztos van valami logika és rendszer abban, ha itt is beállítunk egy kombinációt, ugyanazt, de más parancshoz az ablakkezelőben is és egy felhasználói programban is, melyiket hajtja végre a programban a rendszered, de én nem kísérleteznék ezzel.
Alapvető elvárás, hogy a olyanhoz ne nyúljunk, ami hagyományos, standardizált kötés. A billentyűzet és egér makrózás nem arról szól, hogy minél nagyobb káoszt okozzunk magunknak, hanem a kényelmesebbé tehető munkakörnyezetről!

Parancs, szkript vagy program egérgombhoz kötése

A célunk, hogy a kilences egérgomb megnyomásával induljon el a kedvenc böngészőnk.

Itt a szintaxis:

“COMMAND”
b:MOUSE-BUTTON-CODE

COMMAND Egy parancs, parancsfájl, vagy program. Amit indítani akarunk. Bár elméletileg ez leget egy nagyon sok paramétert tartalmazó parancs is, de én azt javaslom, ha hosszabb paraméterezés szükséges, akkor inkább írjuk be egy szkriptbe és azt indítsuk el.
A billentyűzet és egér makrózás területén pár programot és az ablakkezelőm (I3wm) ilyen lehetőségeit próbálgatva ráébredtem, hogy jobb ha nem a billentyűzet és egér makrózás beállításaiba erőltetem bele a nagyon összetett parancsokat. A szkript előny, hogy az első sorban definiálva van az a parancsértelmező, amit használ, így sokkal jobban hordozható gépek közt, mintha ide írnánk be. Nagyon kicsi az esélye, hogy belefutunk valami komolyabb problémába, de rend a lelke mindennek.
Ami nem szerencsés, ha alias-t akarnánk használni. Az aliasok a parancsértelmező indításakor jönnek létre, ami itt nem feltétlen lesz jó!
MOUSE-BUTTON-CODE Az egérgomb kódja

"firefox"
b:9

Ez elindítja a Firefoxot az egér 9-es gombjának megnyomásakor. Nagyszerű, mert egyszerű.

Parancs, szkript vagy program billentyű kombinációhoz kötése

Hasonlóan egyszerű a feladat, de itt már kissé más a gyors megoldás.

A szintaxis ismerős lehet

“COMMAND”
associated key

COMMAND Logikusan a futtatandó parancs.
associated key A billentyűkombináció.

Ha megvizsgáljuk a mintafájlt találunk benne egy mintát:

"xterm -geom 50x20+20+20"
Shift+Mod2+alt + s

Rögvest látni, hogy itt nem a xev által mutatott névvel illetik a módosító billentyűket. A kikommentelt első részben leírják, hogy mi milyen néven ismert itt:

List of modifier:
Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
Mod3 (CapsLock), Mod4, Mod5 (Scroll).

Ezután már nem fog senkinek semmi gondot jelenteni, hogy összeállítson bármilyen billentyűkombinációt. Ez az olvashatóbb verzió, de van ennél egyszerűbb is!

A hatékonyabb megoldás

Az xbindkeys profi program, nem várja el tőlünk a felesleges gépelést, a tartsuk fejben az összes módosító gombot! Képes legenerálni a megfelelő kulcs kombinációt, ha elindítjuk a

xbindkeys --multikey

parancsot, majd a megjelenő panelbe begépeljük a kívánt kombináció sorozatot. A terminálban megjelenik a

"(Scheme function)"
m:0x5 + c:44
Control+Shift + j

kiírás, amit csak be kell másolni és a (Scheme function) rést átírni a parancsra.

A billentyűzet és egér makrózás együtt

Logikusan elvárható, hogy egy, vagy több módosító billentyű és egy egérgomb kattintás is működjön. Ez természetes egy fejlett rendszerben!

A mintafájlban kapott példa nem szorul magyarázatra:

"xterm"
control + b:2

Az ilyen hibrid megoldásoknál nagy előny, hogy ezeket viszonylag ritkán alkalmazzák programokban, ha nem a fő egérgombokkal állítjuk be a kombinációt. A nyolcas feletti gombokat ritkán konfigurálják be módosító gomb + kattintásra.

Kommentelés?

Igen, ez fontos lehet, ha pár bejegyzésnél többet, főleg ha összetettebbet használsz. Ahogy a példa fájlban látni itt a kettős kereszt a komment jele.
Bár csak olvasmányaim során találkoztam vele, de előfordulhat, hogy bár a disztribúciód leírásában azt találod, hogy ha van egy .xbindkeysrc állományod, ami nem üres, akkor azt betölti. De mégsem tesz ilyent. Ilyen esetben töröld ki az összes kommentelt sort. Van esélyed, hogy működni fog és külön indítás nélkül is megy a dolog.

Az indítás

Most elindíthatjuk az xbindkeys-t egy terminál használatával:

xbindkeys

Abban az esetben, ha az xbindkeys fut, az új konfiguráció használatára a következő parancs kiadásával vehetjük rá:

xbindkeys --poll-rc

Ha valami oknál fogva nem olvassa be az új konfigurációt, a xbindkeys folyamat leállításával és újra futtatásával lehet rákényszeríteni:

killall xbindkeys xbindkeys

Ha az xkexbinds nem indul el automatikusan a használt Linux terjesztésben, akkor a folyamatos használat érdekében a megszokott mód hozzá kell adni az indítási folyamathoz.

Pár hasznos kapcsoló

Az xbindkeys -h és a man xbindkeys hasznos infókat ad.

-f, –file Use an alternative rc file. Ha több konfigurációt is használni szeretnénk, akkor ezzel megadhatjuk azt a fájlt, amiben a kívánt beállítások vannak. Nagyon hasznos lehet, ha a célunk egy-egy adott program gyorsbillentyűinek az egérgombhoz kötése. Egy program, egy beállítófájl megoldással gyorsan váltani tudjuk az egérgomb összerendelést.

-s, –show Show the actual keybinding. Megmutatja az összerendeléseket, bár ahogy látom nem tesz mást, csak a kommentek nélkül kilistázza a beállítófájlt. Pár beállítás esetén ez hasznos, de több tucatnál már a konfigurációs állomány megnyitása szövegszerkesztővel jobb eredményt ad.

Related Posts