Pomysł – podpinamy do komputera drugą (trzecią, czwartą 🙂 ) klawiaturę, i niestety – system traktuje wszystkie naciśnięcia klawiszy, pochodzące z tych różnych klawiatur tak, jakby pochodziły z jednej standardowej klawiatury.
A fajnie byłoby mieć niezależną, dedykowaną klawiaturę tylko do obsługi TRX-a (np. wysyłającą po naciśnięciu wybranego klawisza wybrane komendy CAT do radia, czy skomplikowane kombinacje klawiszy wysyłane do logera contestowego), bez angażowania podstawowej klawiatury.
Szukając swego czasu sposobu, jak obejść w/w problem w AHK (czyli jak sprawdzać w skrypcie, że akurat wcisnąłem klawisz „A” na klawiaturze numer 3, a nie na klawiaturze nr 1 – co się okazało wcale nie takie proste w samym AHK), trafiłem na bardzo proste, i skuteczne rozwiązanie, które może być użyte samodzielnie, lub w powiązaniu z AHK:
HIDmacros to programik, umożliwiający np. przemapowanie klawiszy konkretnej klawiatury USB podłączonej do komputera (z jej pełną identyfikacją), na interesujące nas ciągi lub kombinacje znaków i kodów klawiaturowych, i wysyłanie ich do systemu operacyjnego w takiej „przemapowanej” formie.
Co ciekawe, w programie można również wskazać, że konkretna kombinacja klawiszy na wybranej klawiaturze może wywołać interesujący nas program, w szczególności skrypt AHK.
(jeżeli chcesz pobrać program, to pobieramy HIDmacros v.2.3, a nie LUAmacros; LUA.. jest zaawansowanym środowiskiem skryptowym; my do naszych celów wykorzystamy przyjaźniejszy graficznie HIDmacros )
Załóżmy, że mamy podpiętą do komputera dodatkową klawiaturkę numeryczną USB, np. takie „coś” za 18 zł:
Mapowanie klawiszy
Chcemy, żeby po naciśnięciu na tej konkretnej klawiaturce np. środkowego klawisza „5” nastąpiło wysłanie do systemu kombinacji Alt-F5 (porównaj wpis dotyczący przemapowania klawiszy w N1MM); Co robimy?
Uruchamiamy HIDmacros;
W zakładce Devices mamy podgląd wszystkich urządzeń typu HID, które program zidentyfikował w naszym systemie;
u mnie wygląda to mniej więcej tak:
Nie, nie mam 7 klawiatur 🙂
Program rozpoznaje wszystkie sterowniki HID obecne w systemie;
Nie jest to istotne – przechodzimy od razu do zakładki Macros:
Zdefiniujemy nowe makro:
Klikamy New
W sekcji Edit Macro, w pole Name: wprowadzamy naszą nazwę makra
W sekcji Action zaznaczamy Radiobutton – „send keyboard sequence” – i wprowadzamy kombinację klawiszy, która ma być wysłana do systemu ( u nas to %{F5} – co oznacza Alt-F5; pełna lista kombinacji w zakładce Help) )
I najważniejsze – teraz w sekcji Trigger klikamy klawisz Scan – w tym momencie HIDmacros wyświetli „okienko” i będzie czekał na wciśnięcie na wybranej klawiaturze klawisza bądź kombinacji klawiszy, które będą „wyzwalać” to makro.
W naszym przykładzie wciskamy na małej klawiaturce klawisz „5”.
Program odczyta numer klawiatury wywołującej i kod klawisza, i zapamięta to w polach sekcji Trigger
Gotowe.
W w/w sposób możemy zaprogramować kolejne mapowania.
Na koniec zapisujemy to, co zrobiliśmy, opcją „Save configuration”
Od tego momentu, mając uruchomiany HIDmacros z w/w konfiguracją, możemy poprzez klawisz 5 na osobnym keypadzie – niezależnie od podstawowej klawiatury – sterować przełączaniem VFO w programie N1MM (jeżeli oczywiście będzie uruchomiony).
Uruchomienie programu – np. SerialSend
Przykład drugi – chcemy klawiszem „*” na klawiaturce, uruchomić wybrany program (np: wysłanie do naszego radia komendy CAT, zgodnie z metodą podane we wpisie o wysyłaniu danych do portu szeregowego, jak również we wpisie o komendach CAT)
Definiujemy nowe makro w HIDmacros, ale zamiast określania, jaka kombinacja klawiszy ma być wysłana do systemu, w pole „run application” wprowadzamy ścieżkę do programu, który chcemy uruchomić (poniżej przykład użycia SerialSend.exe i wysłanie komendy CAT: BU0; do portu COM6)
Jeżeli program będzie w tym samym katalogu, co HIDmacros.exe, możemy pominąć pełną ścieżkę:
W szczególności, wskazanym programem może być jak najbardziej skrypt AHK:
Przykładowa zawartość skryptu gui_test.ahk, który z wykorzystaniem serialsend wysyła komendę BU0; do radia (port i BR zmień wg potrzeb pod swoje radio):
SetWorkingDir %A_ScriptDir% port := 6 ;numer Twojego portu COM dla komend CAT BR := 19200 ;używany przez Ciebie Baudrate komenda := "BU0;" ;komenda CAT -> przełącz pasmo "w górę" RunWait %ComSpec% /c serialsend.exe /devnum %port% /baudrate %BR% %komenda%,,Hide Return
Ale trochę bez sensu byłoby pisać do każdej kombinacji klawiszy osobny skrypt.
Przekażmy komendy CAT jako parametr wywołania skryptu w HIDmacros, czyli mała zmiana w gui_test.ahk:
SetWorkingDir %A_ScriptDir% port := 8 ;numer Twojego portu COM dla komend CAT BR := 19200 ;używany przez Ciebie Baudrate komenda := A_Args[1] ;komenda CAT jako parametr wywołania skryptu! RunWait %ComSpec% /c serialsend.exe /devnum %port% /baudrate %BR% %komenda%,,Hide Return
A_Args[1] jest pierwszym tzw. parametrem, który będzie przekazywany w wywołaniu skryptu – czyli np. nasze testowe „BU0;”
możemy teraz wprowadzić do HIDmacros taką zmodyfikowaną komendę:
Od tego momentu możemy jednym skryptem i HIDmacros wysyłać do radia dowolne komendy CAT, przekazywane jako parametr wywołania tego skryptu.
To działa 🙂
Powodzenia w zabawie!