Ergonomie level PRO.

Ergonomie level PRO.

Dnešní článek přímo navazuje na minulý článek o ergonomii práce na počítači. Jak jsem už nakousl, ergo klávesnice a myš je jen část toho, co jsem si kvůli bolestem rukou vyrobil. To hlavní Vám chci ukázat dnes.

To, co vidíte vlevo vedle klávesnice, sice vypadá jako numerická klávesnice, ale není to tak :). Je to kouzelná klávesnice :)).

To, o čem dnes chci psát, je způsob, jak z jakékoli další klávesnice (numerické, klasické, gaming,….) udělat speciální ovládací “pult” s naprosto odlišnými akcemi, než jaké klávesy mají dělat. Zní to složitě? Trochu. Pojďme postupně.

Když jsem řešil ergonomii, tak zatímco pravou ruku jsem vyřešil vertikální myší, levá ruka toho při programování (a především pak ladění programů) má spoustu na starosti a bohužel řada z těchto akcí se dělá šílenými kombinacemi, které je ale většinou lepší udělat jednou rukou, než neustále přendávat pravou ruku mezi myší a klávesnicí. A tak levá ruka běžně mačká všechny různé ctrl+shift+xx nebo ctrl+alt+xxx a u toho jí všelijak lámu. A to není dobře :).

První nápad, jak jsem chtěl toto vyřešit, byla koupě nějaké externí mapovatelné kávesnice, kde si budu moct na jednotlivé tlačítka namapovat makra či akce stejně jako u myši. Jenže, toto zní snadněji než to v reálu je. Různé speciální tlačítkové panely, které toto umožňují, jsou většinou za nehorázné peníze a nabízí jen pár kláves. Například tento pěkný StreamDeck vyjde v alze na 4000kč. To je na můj vkus trochu dost :).

Jako další jsem se dostal k externím single-hand gaming klávesnicím. Po projití docela dost z nich jsem došel k závěru, že vlastně jediná rozumná je Razor Tartarus, která umožnuje mapování všech tlačítek na libovolné akce. Jenže cena u nás 3000kč. Sice lepší poměr cena ku počtu tlačítek, ale pořád nic moc.

A tak jsem se dostal k Aliexpressu. Takových klávesnic tam je plný vagón, jenže, mají jednu drobnou odlišnost. Ony už nejsou plně mapovatelné, ale jsou to obyčejné uřízlé půlklávesnice, kde jsou klasická písmena ASDF. Jenže taková klávesnice pak naopak stoji jen $13 místo $150. Ale pro mé účely se úplně nehodila. A tak jsem hledal dál.

Obrázek z fóra hidmacros

Až jsem narazil na fórum HidMacros, kde byl podobný obrázek. Když se podíváte pořádně, uvidíte vlevo a vpravo klasické klávesnice, kdy každá dělá něco jiného. Hmm, tell me more. A tím sem zjistil, jakým směrem dál ubírat mé hledání. Nejde totiž o to, najít klávesnici, co umí vše, ale najít rozumnou klávesnici za rozumné peníze a celou si ji přeprogramovat.

A tím se dostáváme k aplikaci LuaMacros, což je vlastně HidMacros V2. Stojí za ním nějajký čech (nemáme ho třeba i mezi sebou zde? :)), který vyrobil aplikaci umožnující nejen namapovat různé akce na klávesy, ale co je důležitější, umí rozlišit klávesu a usb zařízení, na kterém byla tato klávesa stisknuta. To znamená, že můžete mít klidně 5 různých klávesnic, a vy jste schopni přesně určit, na které klávesnici byl stisk písmene proveden. Famózní.

A tak jsem šel testovat. První, co zjistíte, je že HidMacros aplikace již není podporovaná. To je ze začátku určitě škoda, protože ta měla údajně i GUI, kde si člověk mohl klávesy snadno namapovat. Nevýhoda naopak byla, že uměla jen základní funkce. Autor se pak rozhodl aplikaci předělat a zmodernizovat, ale protože (jeho slovy) nemá rád vývoj GUI a pro své potřeby ho nepotřebuje, rozhodl se celou aplikaci udělat jako skriptovací engine. To znamená, že v nové LuaMacros Vás nepřivítají žádné obrazovky, žádné návody nic, ale jen prázdné scriptovací okno pro Lua script.

Když si otevřete github stránku s projektem, jako první Vás uvítá varování o tom, abyste aplikaci nepoužívali :). To mne pobavilo :). Naprosto ale chápu, proč tam to varování je. Rozchodit appku není úplně snadné a naprosto rozumím autorovi, že dělat zdarma support tisícům lidí, kteří pak neumí ani zmáčknout tlačítko Donate, je složité. Stačí ale investovat trochu času a trochu hledat a po chvilce už budete umět vyrábět vlastní scripty.

Abych Vám s tím trochu pomohl, ukážu Vám zde pár příkladů jak script napsat a jak to mám nastaveno já. Toto jsou tři nejdůležitější linky, které budete potřebovat :

Program není zas tak složitý, ale pojdmě si ho trochu okomentovat. Jako první musíte pojmenovat danou klávesnici nějakým názvem. Nejprve potřebujete zjistit identifikátor dané klávesnice. Na to je funkce lmc_assign_keyboard(‘MACROS’); a lmc_print_devices();

První příkaz Vám v aplikaci ukáže okno, které Vás vyzve ke stisku klávesy na dané klávesnici, druhý příkaz pak vypíše všechny zařízení i s jeho přiřazeným identifikátorem “MACROS”.

Version: 0.1.1.122
unassigned : \\?\HID#VID_0566&;amp;PID_3019&;MI_00#9&;1B07498&;0&;0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [638197749] : keyboard 
unassigned : \\?\HID#VID_046D&;PID_C232#2&;6BACD57&;0&;0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [459531] : keyboard 
unassigned : \\?\HID#VID_1050&;PID_0407&;MI_00#A&;A18C4AB&;0&;0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65613] : keyboard 
unassigned : \\?\HID#VID_046D&;PID_C52B&;MI_00#9&;3AD9A56&;0&;0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65611] : keyboard 
MACROS: \\?\HID#VID_045E&;PID_00DB&;MI_00#9&;2EFD0B1A&;0&;0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65609] : keyboard 
unassigned : \\?\HID#VID_046D&;PID_C537&;MI_01&;COL01#9&;5E731AC&;0&;0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65607] : keyboard 
unassigned : \\?\HID#VID_045E&;PID_07B2&;MI_00#9&;3B937931&;0&;0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65605] : keyboard
Total number of devices: 7

Nyní už víte, že Vaše klávesnice má kód 2EFD0B1A a proto použijete příkaz lmc_device_set_name(‘MACROS’, ‘2EFD0B1A ‘).. (toto ID najdete v řetězci cca v první třetině za PID_xxx&MI_xxx&;).

Toto byla defakto ta nesložitější část. Nyní si už jen namapujete akce na klávesy. Jelikož jde o scriptovací jazyk, můžete udělat cokoli.  Jednoduchý příklad namapování je například tento:

-- assign logical name to macro keyboard
lmc_assign_keyboard('MACROS');

-- define callback for whole device
lmc_set_handler('MACROS',function(button, direction)
  if (direction == 1) then return end -- ignore down
  if (button == string.byte('C')) then lmc_spawn("calc")
  elseif (button == string.byte('N')) then lmc_spawn("notepad", "C:\\test.txt")
  elseif (button == string.byte('H')) then lmc_send_keys('Hello world')
  else print('Not yet assigned: ' .. button)
  end
end)

Tento script Vám namapuje klávesy C, N a H na spuštění kalkulačky, poznámkového bloku a H na napsání “Hello world”. Jak vidíte, v této podobě zatím script nijak nerozlišuje, která aplikace je aktuálně spuštěná a obsluhuje klávesy vždy stejně.  Na to je pak potřeba script rozšířit například o detekci názvu aktuálního okna či jinak zjistit, jaká aplikace zrovna běží. I toto všechno lze udělat a pokud budete na fóru hledat, jsou na to ukázky. Já sám zatím toto rozběhané nemám, jelikož používám zkratky jen ve Visual Studiu, takže je mi jedno, co to dělá v ostatních aplikacích.

Další script je pak mé mapovací schéma pro Visual Studio namapované na numeriku. Význam jednotlivých zkratek najdete v dokumentaci, jak vidíte, mapuji hlavně různé Shift+F10, CTRL+SHIFT+F10 a podobně.

lmc_device_set_name('MACROS', '1B07498')

-- define callback for whole device
lmc_set_handler('MACROS',function(button, direction)
  if (direction == 1) then return end  -- ignore down
    if     (button == 103 or button == 36) then lmc_send_keys('+{F11}') --7
    elseif (button == 104 or button == 38) then lmc_send_keys('{F10}') --8
    elseif (button == 105 or button == 33) then lmc_send_keys('{F11}')--9
    elseif (button == 111) then lmc_send_keys('{F5}')  -- /
    elseif (button == 106) then lmc_send_keys('{F9}')  -- *
    elseif (button == 109) then lmc_send_keys('^<{F10}')  -- -
    elseif (button == 107) then lmc_send_keys('^<+<{F10}')  -- -
    elseif (button == 100 or button == 37) then lmc_send_keys('%<o')  --4
    elseif (button == 101 or button == 40) then lmc_send_keys('%g')  --5
    elseif (button == 102 or button == 39) then lmc_send_keys('%t%t')  --6

    elseif (button == 110) then lmc_send_keys('%<{TAB}') --.

    elseif (button == 98 or button == 144) then lmc_send_keys('%<t%<p') --2
    elseif (button == 99 or button == 144) then lmc_send_keys('%<t%<n') --3
    elseif (button == 144 or button == 96) then lmc_send_keys('%<{TAB}')  --0

    elseif (button == 13) then lmc_send_keys('{ENTER}')                --Enter
    elseif (button == 8) then lmc_send_keys('{BACKSPACE}')                --BACKSPACE
    else print('Not yet assigned: ' .. button)
    end
end)

Poslední věc, která by stála za zmínku, je způsob, jak mapovat různé klávesy pro různé aplikace. Jak jsem říkal, sám to ještě nepoužívám. Ale když jsem si s LuaMacros hrál, tak jsem i toto testoval. Toto je zhruba způsob, jak můžete okna od sebe odlišit pomocí titulku okna:

function string.starts(String,Start)
   return string.sub(String,1,string.len(Start))==Start
end

-- define callback for whole device
lmc_set_handler('MACROS',function(button, direction)

  windowTitle=lmc_get_window_title()
  print(windowTitle)
  
  if string.starts(tt,"LuaMacros") then
    ...
  end
end

Tenkrát se mi nepovedlo najít, jestli lze přes script nějak vyčíst také window class, nejen window title. Ale protože jsem to extra nepotřeboval, tak jsem se s tím nezdržoval.

 

A nyní zpět ke klávesnicím. Jelikož už víme, že lze použít jakoukoli, objednal jsem z Aliexpresu na zkoušku jednak tuto druhou numeriku a pak nahoře ukázanou červeno-černou gaming klávesnici. Zatím mi dorazila jen ta bezdrátová numerická a ta určitě není špatná. Jsou na ni super ty druhé šipky, takže se lze pohybovat v kódu i levou rukou. S větším testem chci ale počkat i na tu gaming klávesnici, abych to otestoval celé najednou.

Co se samotného use-case týká, tak díky této klávesnici je pro mne práce ve Visual Studiu o dost pohodlnější. Co šlo jsem si namapoval na jednotlivé klávesy, takže nyní například celý debugging dělám jen skrz tuto klávesnici. Takže za sebe určitě doporučuji. Chce to ale věnovat tomu čas. Jednak na pochopení celého scriptovacího systému, dále pak hlavně na vymyšlení a zvyknutí si na novou klávesnici a nové rozmístění zkratek. Osobně jsem několikrát celé schéma předělával a stále ho ještě ladím. Investovaný čas se ale rozhodně vyplatí.

Další ukázka úpravy klávesnice z fóra HidMacros

Co se týká využití, tak nemusí jít nutně jen o mnou zmiňované Visual Studio, můžete si takto namapovat jakoukoli jinou aplikaci, kde potřebujete hromadu zkratek (například Photoshop, Ilustrator či cokoli jiného), stejně tak lze použít právě třeba na hry, kdy zde to autor používá na FlightSimulator. K tomu si pak pěkně polepit tlačítka konkrétníma akcemi a klávesnice je naprosto dokonalá :).

Pomohl Vám náš blog? Chcete nás podpořit? I málo udělá radost 😉
0 0 votes
Hodnocení články
Subscribe
Notify of
guest
11 Komentáře
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
msk
msk
8 months ago

No, keby si bezal na linuxe a nie na tom posranom biose na videohry, tak by si si 90% tychto oserov usetril. Napad so samostatnou num klavesnicou na makra zvazim, ale som asi lenivy to konfigurovat, uz takto na klavesnici nepouzivam ziadne makro tlacitka.

vacko
8 months ago

Fight, fight !!
🙂

Petr
Petr
8 months ago

Používám tuhle klávesnici a bolest zápěstí je pryč https://kinesis-ergo.com/shop/freestyle2-mac/

Kuba92
4 months ago

Na mapování kláves jsem vždycky používal AutoHotKey, po přečtení článku mě napadlo, jestli tam taky není možnost rozlišit více klávesnic.
A kupodivu existuje AutoHotInterception, který přesně tohle řeší. Nemám to vyzkoušené, ale kdyby někdo hledal alternativu k LuaMacros, tak:
https://www.autohotkey.com/ + https://github.com/evilC/AutoHotInterception

Kubrt_CZ
10 days ago

Já (za dob hraní IL2 Šturmovika) používal herní klasiku – Nostromo N52 – v defaultu to byla taky “uříznutá” levá část klávesnice, ale cokoliv šlo nahradit nějakým makrem, takže na programování byla taky super.

Jako hlavní klávesnici používám už 20 let (nekecám) Microsoft Natural Keyboard Pro. Mám 2 kusy a opatruju jak oko v hlavě. Nedávno jsem je rozdělal, všechny plasty umyl v myčce, nalepil nové CZ přelepky a vypadá a stále funguje jako nová.

Kubrt_CZ
Reply to  L
10 days ago

Mmch tu Ergo mám taky na “chalupě” ale už to není ono. Díval jsem se a na ebay v USA či DE se dají ještě ty původní (=moje) koupit, ale nedávno v DE se vydražila za 60€ ?!? V USA je prodával i DELL pod svou značkou, tam jich je poměrně dost, jen to nějak dostat sem. Taky se to mechanicky liší, některé mají velký enter a některé malý, mé dva kusy taky nejsou (z hlediska elektroniky uvnitř) totožné, a to je mám z CZ distribuce obě dvě.

11
0
Would love your thoughts, please comment.x
()
x