750 2019 03 07 KlawiaturaMakro v1 

Jeszcze od lat szkolnych chodził mi po drodze pomysł, by przygotować klawiaturę w taki sposób, by pozwoliła na natychmiastowe uruchamianie sekwencji funkcji dostępnych w jakiejś aplikacji, czyli tzw. makr. Zrealizowałem ten pomysł i serdecznie polecam go każdemu.

Zapraszam do lektury!

Zacznę od początku, czyli od przyczyny i celu całego pomysłu. Zatem po co w ogóle przygotowywać osobną, dedykowaną klawiaturę?

Przyczyn jest kilka. Po pierwsze, ogromna wygoda i wzrost prędkości, czasami kojarzonej z efektywnością pracy. Owszem, da się pracować wyłącznie za pomocą myszy i klawiatury. Sam pracowałem w ten sposób przez całe lata, by nie powiedzieć dziesiątki lat. Od dawna jednak wiedziałem, że wykonuję mnóstwo powtarzalnych czynności. Gdyby tylko dało się z nich zrezygnować...

Jednym ze sposobów na przyspieszenie działań, są tzw. skróty klawiszowe. Niektóre aplikacje umożliwiają powiązanie konkretnej funkcji z naciśnięciem kombinacji kilku klawiszy na klawiaturze, czyli właśnie ze skrótem klawiszowym. Najczęściej na skrót klawiszowy składa się co najmniej jeden klawisz modyfikujący (Shift, Control, Alt, znak Windows itp.) oraz klawisz "podstawowy", np. określonej litery. Zaletą jest możliwość szybkiego wywoływania funkcji. Niestety takie rozwiązanie ma też spore wady: po pierwsze trzeba się tych kombinacji klawiszy nauczyć na pamięć, po drugie precyzyjnie je stosować - nie mylić się, dalej  nie wszystkie skróty  klawiszowe są ergonomiczne w stosowaniu - niekiedy by je wywołać trzeba użyć obydwóch dłoni jednocześnie, wreszcie zdarza się, że zaczyna po prostu brakować wolnych / wygodnych kombinacji lub/i zaczynają się one powtarzać - są takie same, jak w innych aplikacjach.

Idąc dalej, niektóre programy pozwalają na budowanie zestawów funkcji uruchamianych przez jeden skrót klawiszowy. To właśnie są makra. Przykładowo, jeżeli w procesorze tekstu wiemy, że ustawiamy dla akapitu tekstu jednocześnie około 10 właściwości, to dlaczego nie ustawiać ich wszystkich jednocześnie?

A gdyby tak nie trzeba było pamiętać tych wszystkich skrótów klawiaturowych ale zachować możliwość wykonywania makr? Tylko jak to zrobić...

Rozwiązań jest kilka. Jednym z nich od lat posługują się "zawodowcy", którzy zawsze, przez cały czas, muszą mieć możliwość wywołania każdej dostępnej funkcji i nie muszą pamiętać, jakim skrótem klawiszowym się je uruchamia. Przykłady to piloci samolotów czy realizatorzy dźwięku. Chyba każdemu, kto chociaż raz zobaczył kokpit dużego samolotu pasażerskiego pozostaje w pamięci obraz mnóstwa przycisków, przełączników, ekraników. A no właśnie...

A gdyby tak zrobić sobie interfejs do makr, osobisty, dedykowany, w postaci drugiej klawiatury, z własnymi nalepkami, łatwymi do zapamiętania?

Na co dzień pracuję przede wszystkim z procesorem tekstu Microsoft Word 2010. Zajmuję się nie tylko wprowadzaniem treści, ale także jej formatowaniem. Ta aplikacja pozwala na daleko idące zautomatyzowanie działań poprzez zastosowanie tzw. szablonów. Szablon to abstrakcyjny zbiór: styli, tzw. bloków konstrukcyjnych i wreszcie makr napisanych w VBA (ang. Visual Basic for Applications). Nawet mając już przygotowany szablon wciąż stałem przez wyzwaniem polegającym na efektywnym wykorzystaniu narzędzia.

Bezpośrednią inspiracją do podjęcia działań stał się film Tarana znaleziony na portalu youtube:

   

Autor pokazuje, w jaki sposób wykorzystać konwerter USB o nazwie HASU. Fajne, małe urządzenie elektroniczne, dzięki któremu można zamienić każdą klawiaturę USB w klawiaturę programowalną, czyli taką, gdzie każdemu naciśniętemu przyciskowi można przypisać dowolne makro.

Strasznie uprościłem, wiem, dlatego już tłumaczę, co i jak. W systemach operacyjnych Microsoftu wszystkie klawiatury są widoczne jako... jedna klawiatura, z wszystkimi tego konsekwencjami. Znamy zapewne dobrze tę cechę z pracy, gdzie dla wygody do notebooka dołączamy "dużą" klawiaturę. Wszystko jedno, na której z tych klawiatur nie wciśniemy klawisza, np. na pierwszej klawiaturze "a" i na drugiej "a", system operacyjny wciąż rozpoznaje, że wcisnęliśmy "a", nie identyfikując, z której klawiatury pochodzi. No właśnie... A przecież nagle chcemy, by po naciśnięciu klawiszy z drugiej klawiatury, stało się coś innego, by wywołało się makro. Hm... jak to zrobić?

Nie tłumacząc dokładnie, jak działa sama klawiatura, trzeba oszukać system operacyjny! Niech wszystkie klawisze naciśnięte na drugiej klawiaturze (makro) będą widziane przez system operacyjny jak naciśnięcia np. klawisza F24. Po F24 niech wysyłany będzie już kod faktycznie naciśniętego klawisza. Czyli przykładowo jeżeli nacisnę "a" na drugiej (makro) klawiaturze, to do systemu operacyjnego trafi ciąg F24 "a".

Czym będzie to "coś", co zamieni "a" na F24 "a"? Np. będzie to urządzenie HASU, czyli odpowiednio zaprogramowany mikrokontroler, który "opakuje" kod klawisza i prześle go dalej.

Jest jeden haczyk: urządzenie HASU jest dosyć drogie ($63 + koszty przesyłki i cła) oraz trudno dostępne (jeden dostawca). A nie można taniej i prościej?

Można. Okazało się bowiem, że ten sam kod osadzony (ang. firmware), który działa na HASU, działa też na Arduino! Dodam jeszcze od razu, że nie wymaga napisania ani linijki kodu, nie wymaga znajomości programowania, rozumianego jako pisanie programów.

Jak to zatem zrobić, co będzie potrzebne i ile to kosztuje? (Wszystkie podane niżej ceny obowiązywały w marcu 2019).

 

Sprzęt:

Arduino Leonardo. Tak, koniecznie Leonardo. Dlaczego? Bo Leonardo wykorzystuje mikrokontroler ATmega32u4, który potrafi obsługiwać USB bez zastosowania dodatkowych układów peryferyjnych. Oryginalny moduł to koszt €18, od dostawcy w Polsce: 88 pl, klon z dalekiego wschodu: $4.28. Dostawca dalekowschodni dorzuca od razu kabelek USB, którego BRAK w zestawie oryginalnym oraz NIE dolicza kosztów transportu.

images/stories/2019/20190309_KlawiaturaDoMakr/750_2019-02-11_AVR_BASp_v1.jpg

Programator do układów Arduino. Ja wykorzystałem programator USBasp. Koszt od dostawcy w Polsce: 27 pln + przejściówka 4,90 pln. Klon z dalekiego wschodu: $1.72. Dostawca dalekowschodni dorzuca przejściówkę gratis i NIE pobiera kosztów transportu.

 

 
images/stories/2019/20190309_KlawiaturaDoMakr/750_2019-02-11_22-10-15_v1.jpg
Przejściówka m.in. do USBasp.

Nakładka (ang. shield) na układ Arduino Leonardo, który posiada funkcję USB Host. Uwaga! Nie każda płytka USB Host będzie działać. Na pewno działa taka i jej klony. Ja zakupiłem klona z dużym napisem Hayes. Oryginalny moduł to koszt $25, klon dostępny w kraju: 39,50 pln, klon z dalekiego wschodu: $7.78. Dostawca dalekowschodni NIE dolicza kosztów tranportu.

Druga klawiatura, najlepiej z interfejsem USB. Ja wykorzystałem starą klawiaturę mechaniczną z dużym złączem DIN. By ją podłączyć do powyższego zestawu musiałem zastosować dwie przejściówki: z dużego DIN na PS/2 i z PS/2 na USB, patrz poniższe zdjęcia.

 

Oprogramowanie:

Oprogramowanie osadzone (ang. firmware), które należy wgrać do pamięci mikrokontrolera. Jeden plik, który należy pobrać stąd (F24_with_modifiers.hex).

Narzędzie do wgrania oprogramowania osadzonego do mikrokontrolera: sterowniki Zadig USB do USBasp oraz aplikacja programująca avrdude.

AHK, czyli AutoHotkey. To jest "serce" całego pomysłu. Aplikacja AutoHotkey zasługuje na odrębny artykuł. Maksymalnie upraszczając: AutoHotkey za pomocą odpowiedniego skryptu "przechwytuje" kody wysłane przez mikrokontroler i podłącza pod nie makra, które sami sobie przygotowujemy.

Skrypt  QMK_F24_macro_keyboard.ahk przygotowany dla AutoHotkey, który współpracuje z oprogramowaniem osadzonym mikrokontrolera.

 

Jak to zrobić?

1. Pobrać oprogramowanie Zadig i je zainstalować.

usb krok1 Zadig  2. Dołączyć programator USBasp do komputera. Wybrać z menu Zadig Options ->  "List All Devices". 

Nie jestem pewny, czy kolejność kroków 2 i 3 nie powinna być odwrotna.

usb krok2 Zadig  3. Zainstalować sterownik USB. W moim przypadku zadziałał libusb-win32 (v.1.26.0).

4. Umieścić w jednym folderze pobrany plik z programem osadzonym (F24_with_modifiers.hex), avrdude.exe oraz avrdude.conf.

5. Połączyć programator USBasp z Arduino Leonardo.

images/stories/2019/20190309_KlawiaturaDoMakr/750_2019-02-11_USBaspOrientacja_v1.jpg
Większość wtyczek pasuje do gniazd w tylko jeden sposób. Z wyjątkiem jednej, przedstawionej na sąsiednim zdjęciu.

6. Otworzyć terminal Windows (uruchom -> cmd.exe). Przejść do folderu z kroku 4.

7. Wykonać polecenie i zaczekać, aż się wykona:

avrdude –c usbasp –p m32u4 –u –U flash:w:F24_with_modifiers.hex

8. Odłączyć programator od komputera oraz do Arduino Leonardo.

9. Połączyć Arduino Leonardo i nakładkę USB Host.

10. Podłączyć przewodem  USB komputer z Arduino Leonardo. Na komputerze już musi działać system operacyjny Microsoft Windows. System operacyjny powinien zasygnalizować wykrycie urządzenia HID lub/i klawiatury.

11. Podłączyć klawiaturę do złącza USB nakładki USB Host.

images/stories/2019/20190309_KlawiaturaDoMakr/750_2019-03-04_Kanapka_v1.jpg
Mniej więcej powinno to wyglądać w ten sposób.

12. Uruchomić skrypt QMK_F24_macro_keyboard.ahk.

Test: po naciśnięciu klawiszy na drugiej klawiaturze na ekranie komputera powinny pojawić się w miejscu, w którym znajduje się kursor myszy, niewielkie etykietki tekstowe zaczynające się od [F24]. Koniec...

images/stories/2019/20190309_KlawiaturaDoMakr/750_2019-03-04_InterfejsyKlawiatury_v1.jpg
Zaprezentowane rozwiązanie działa nawet ze starymi klawiaturami. Konieczne może być jednak zastosowanie dodatkowych przejściówek. Na sąsiednim zdjęciu przejściówka DIN - PS/2 oraz PS/2 - USB.

images/stories/2019/20190309_KlawiaturaDoMakr/750_2019-03-07_Calosc_v1.jpg

Na sąsiednim zdjęciu zestaw, który wykorzystuję w codziennej pracy. Czarna klawiatura to klawiatura "podstawowa". Nic specjalnego - klawiatura membranowa firmy Logitech.Służy mi jako klawiatura do ogólnych zastosowań, w tym do wprowadzania treści.

"Szara" klawiatura to klawiatura "do makr". Po naciśnięciu klawiszy, na których znajdują się nalepki, wywołuje zdefiniowane przeze mnie wcześniej operacje. Na lewo od tej klawiatury "kanapka", czyli Arduino Leonardo dźwigające na plecach nakładkę USB Host.

images/stories/2019/20190309_KlawiaturaDoMakr/750_2019-03-07_KlawiaturaMakro_v1.jpg
Zbiżenie na klawiaturę do makr.

 

Kilka porad:

1. Ddo Arduino Leonardo polecam zakupić dedykowaną obudowę, względnie chociaż stosowne nalepki-nóżki. Pozwoli to ochronić elektronikę chociaż w pewnym stopniu przed uszkodzeniem mechanicznym, a biurko przed porysowaniem.

2. Nalepki na klawisze wykonuję za pomocą drukarki laserowej. W sklepach papierniczych dostępne są kartki np. A4, które są już nalepkami. Można je zadrukować z jednej strony. Koszt: 0,70 pln / kartka. Na jednej kartce mieści się ponad połowa wszystkich klawiszy.

3. Warto nauczyć się AHK... nawet jeżeli nie korzysta się z drugiej klawiatury. Ta aplikacja ma kolosalne możliwości i jest łatwa, podkreślam: łatwa do opanowania.

 

Uwagi końcowe.

Rewelacja. Za kilkanaście złotych można wyposażyć się zestaw realnie zmieniający życie na lepsze. Nie waham się tak napisać. Dzięki temu rozwiązaniu pracuję szybciej, efektywniej, bardziej świadomie. Nie ma się w ogóle co zastanawiać, tylko korzystać. Taran, dziękuję za inspirację!

Drugi wniosek: skoro ja mogłem to zrobić, ty również potrafisz to zrobić.

Są takie przedmioty z naszego otoczenia, które zasługują na wyraźnie więcej uwagi człowieka od innych. Należy do nich na pewno rower. Okazuje się, że klawiatura również. Na świecie jest co najmniej jedno forum poświęcone wyłącznie klawiaturom. Są dedykowane sklepy. Wreszcie kanały na youtube poświęcone tylko temu tematowi.

Idealnie, gdyby istniała klawiatura z klawiszami "zmiennej treści", by nie trzeba było stosować nalepek. Wtedy jedna klawiatura znowu mogłaby służyć zarówno do pisania (jako klawiatura podstawowa) oraz do wprowadzania makr. Wystarczyłoby wykorzystać jeden przycisk, który służyłby do przełączania "warstw" takiej klawiatury: warstwa pierwsza - oznaczenia jak dla klawiatury podstawowej, warstwa druga - oznaczenia jak dla klawiatury makr - makra np. do Microsoft Worda, warstwa trzecia - makra np. do Microsoft Excel, warstwa kolejna - układ klawiszy Dvoraka itp. itd. Okazuje się, że już dawno temu ludzie wpadli na takie rozwiązanie. Proszę wpisać w wyszukiwarkę "Optimus Maximus keyboard" lub poszukać "oled keyboard keys" lub "lcd keyboard keys". Dzisiaj to rozwiązania prototypowe, bardzo kosztowne. Coś mi jednak mówi, że już za kilka lat w każdym polskim domu...

 

Artykuł dedykuję Adamowi M.

embed video plugin powered by Union Development

Komentowanie za pomocą rozszerzenia JComments zostało wyłączone. Zapraszam do dodawania komentarzy za pomocą aplikacji Disqus.