Kilka klawiatur

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

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!