Hyper is the new Super

Na tohle (at uz to je cokoliv) by se hodila klavesova zkratka. Jenomze jaka? Ctrl+pismeno, nebo cislo, muze kolidovat s nekterymi aplikacemi a s ovladanim terminalu (zvlast Ctrl+C,Z,Q a S je velmi neprakticke odchytavat). Alt+pismeno pouzivaji jine aplikace. Alt+F-klavesa se pouziva na prepinani pracovnich ploch. Mackat vice modifikatoru je docela nepohodlne (i kdyz uzivatele Emacsu trenuji, co mohou).

Docela prakticke je pouzit jako modifikator klavesu Wokno, kterou X prijme jako Super_L, nebo Super_R (levou a pravou) a dale ji mapuje na X-ovy modifikator Mod4. Pak takova klavesova zkratka v konfiguraku fluxboxu vypada napriklad takto:

Mod4 x :Exec xterm

Ale ne na kazde klavesnici takova klavesa je. Treba na psani velmi pohodlna IBM model M ji nema.

Behem techto uvah jsem si znovu uvedomil, jak me stve CapsLock. Uz pred nekolika lety doslo k deCapsLockizaci jedne klavesnice sroubovakem, protoze se na ni povedlo az prilis casto tuhle klavesu strefit omylem spolecne s pismenem “a”. Po nalezeni redukce z velkeho DINu na PS/2 a prechodu na jiz zminenou IBM Model M CapsLock opet vyvstal, znovuzrozen, jako Fenix. Model M mi, narozdil od scheisse-membranovky, bylo lito nicit. A to byla idealni prilezitost pro sber statistiky o vyuzivani teto klavesy.

Vyuziti CapsLock
umyslne neumyslne
------------------
0       mockrat

Nesel by CapsLock predefinovat na neco uzitecnejsiho? Pry se dal prohodit s Ctrl, jako to mely stare layouty klavesnic. Nezbylo, nez zacit hledat.

Nakonec jsem se dostal az sem: https://en.wikipedia.org/wiki/Space-cadet_keyboard. Dobre si prohlednete modifikatory z pred-UNIXove doby a jejich rozmisteni. Vsechny ctyri modifikatory jsou na obou stranach klavesnice, zrcadlove proti sobe a v jedne rade. Takze bylo mozne zmacknout jejich kombinaci i bez polydaktilie, kterou si dnes preji k vanocum ctyri z peti uzivatelu Emacsu.

Takze to mame do prostredka do kraje: Ctrl: jasne, ten mam na klavesnici taky, ne? Meta: ne, tahle ne. Vetsinou (a defaultne) se jako Meta mapuje na PC klavesnici Alt. Super: tam je namapovana klavesa s wokynkem, tucnakem, nebo jinum obrazkem jako v materske skolce. Hyper: WTF, to jsem jeste nevidel.

Klavesu Hyper jde na PC klavesnici namapovat treba na klavesy s wokynkem a nebo prave na zmineny CapsLock. Staci v Xkach pustit:

setxkbmap -option caps:hyper

a je to. Jenomze se chova stejne, jako klavesa Super (wokynko). Proc?

To, ze do Xek prijde scankod klavesy Hyper jeste mnoho neznamena, Xka zmaji 8 modifikatoru (a vic jich mit nemohou, protoze modifikatory jsou v bitove maper v jednom Byte) a do toho se pocita i Shift, CapsLock, NumLock a prepinac layoutu klavesnice. Hyper je na vsech pocitacich, na ktere jsem se koukal, defaultne nastaveny na Mod4 stejne jako Super.

Takze nasleduje prehozeni na (defaultne prazdny) Mod3.

xmodmap -e "remove Mod4 = Hyper_L" -e "add Mod3 = Hyper_L"

a hned to vypada lepe:

$ xmodmap -pm

xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Hyper_L (0x42),  Hyper_L (0xcf)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

A ted uz staci pouzit klavesovou zkratku s Hyper na neco uzitecneho, takze do ~/.fluxbox/keys zapiseme treba:

Mod3 b :Exec xmessage -center -timeout 2  "$(/home/username/bin/bt)"
Mod3 i :Exec xmessage -center -timeout 5  "$(/home/lhc/username/show_ip_addrs)"

a jeste naplnime oba soubory a zapneme jim executable flag (chmod +x jmeno_souboru):
/home/username/bin/bt:

for bat in /sys/class/power_supply/BAT*; do
        cat "$bat"/energy_now | tr '\n' ' '
        echo -n 'from '
        cat "$bat"/energy_full | tr '\n' ' '
        echo -n '= '

        (
                cat "$bat"/energy_now | tr '\n' ' '
                echo -n '*100/'
                cat "$bat"/energy_full  | tr '\n' ' '
                #rounding
                echo '+0.005'
        ) | bc -l | sed 's/\([^.]\...\).*/\1 \%/'
done

Na ruznych notebookach muze byt informace o bateriich v ruznych adresarich, takze je nutne si prohlednout /sys/ a nahradit /sys/class/power_supply/ spravnou cestou.

/home/lhc/username/show_ip_addrs (na jeden radek):

/sbin/ifconfig | sed 's/        inet /#inet /;s/^\([^# ]\)/#@\1/' | tr '@\n' '\n#' | sed 's/^\([^:]*\)[^#]*#*/\1\t/; s/inet//; s/netmask.*//' | grep -v '^#'

Pak uz staci jenom zmacknout Hyper b (teda vlastne CapsLock b) a uprostred monitoru se na dve sekundy objevi informace o stavu akumulatoru. Misto prehistoricke xmessage se da samozrejme pouzit treba mnohem modernejsi notify-send, ale ten se neumi zobrazit doprostred monitoru (bacha, prijima timeout v milisekundach).

A pokud jste behem cteni nezapomneli, proc jsem s vyzkumem alternativnich vyuziti CapsLocku zacal, je vam asi jasne, ze klavesova zkratka Hyper a zustava neobsazena. Technicky samozrejme nic nebrani tomu namapovat na ni shozeni Firefoxe (aspon by se restartoval driv, nez stihne vyzrat celou RAM). Hlavne si nezapomente namapovat nejakou dulezitou funkci na Hyper Super Shift Ctrl Alt H. Jiste to ocenite, az ji budete potrebovat zmacknout mene, nez trema rukama :-).

Poznamka: pokud by se jednalo pouze o klavesnici IBM Model M, stacilo by namapovat na CapsLock Super_L timto prikazem: “setxkbmap -option caps:super”, ale pracuji na vice pocitacich s ruznymi klavesnicemi, takze chci vyuzit najednou Hyper i Super na klavesnicich bez numerickeho bloku.

Posted by zelenohlav

2 comments

Osobne jsem prisel na jedine vhodne pouziti capslocku. Namapovat tam escape. Normalni escape je celkem daleko, pri spravnem posazeni deseti prstu na klavesnici je pro zmacknuti escape nutne toto posazeni opustit. Ale capslock je na tom spravnem miste…
takze
Caps Lock is the new Escape.

K>: Pokud clovek pise vsemi deseti, tak se tam ten Esc hodi. Zvlaste pak ve VIMu. Dokonce na to ma xmodmap parametr.

Otazka je, jestli by pak slo jednuduse (= bez libevfd) namapovat Hyper na puvodni klavesu Esc.