Nie wszystkie kombinacje klawiszy proponowane przez popularny program N1MM Logger + mogą być dla nas przyjazne.
Korzystając z prostego skryptu AHK możemy spróbować ułatwić sobie życie, i dokonać małych roszad na klawiaturze podczas pracy w programem.
Zaprezentowany poniżej sposób możemy użyć do „wysyłania” kombinacji klawiszy do dowolnego uruchomionego programu, w celu wywołania w nim określonych tą kombinacją klawiszy akcji (np. wybór określonej pozycji z menu).
Przykład:
Kombinację Alt+F5 programu N1MM, czyli zamianę VFO A z VFO B, chcę zamiennie wywoływać kombinacją: prawy Ctrl + kursor w lewo
AutoHotkey jest idealnym językiem to zbudowania takiej mini aplikacji. Użyjemy do tego tzw. AHK Hotkeys
Najprostsza wersja skryptu załatwiający temat (jedna linijka kodu, po zapisaniu do pliku z rozszerzeniem .ahk jest już działającym skryptem):
RControl & Left:: Send !{F5}
br>To może troszkę bardziej zaawansowanie :
SetTitleMatchMode, 2 #IfWinActive FTDX RControl & Left:: Send !{F5} #IfWinActive
Krótka analiza kodu:
SetTitleMatchMode, 2
w/w oznacza poinformowanie interpretera AHK, że okna programów będziemy rozpoznawać po ich nazwach lub fragmentach nazw;
#IfWinActive FTDX ..code .. #IfWinActive
w/w oznacza, że fragment kodu znajdujący się pomiędzy w/w liniami wykona się TYLKO, gdy aktywne będzie okno zawierające w nazwie ciąg znaków FTDX
Okno N1MM Entry w tytule podaje zawsze nazwę obsługiwanego radia; oczywiście do testów wprowadź do tego skryptu swoją nazwę radia, którą widzisz na belce programu N1MM (zamiast mojego „FTDX”); zadziała również ciąg znaków „VFO A” – bo też jest obecny na tej belce:
i najważniejszy fragment:
RControl & Left:: Send !{F5}
po naciśnięciu kombinacji prawy Ctrl + ⬅ (kursor w lewo) wysłana do programu zostanie (komendą SEND) kombinacja Alt-F5, i funkcja skojarzona w programiew z Alt-F5 zostanie wykonana.
Do pokazanego skryptu możemy dołożyć oczywiście kolejne funkcje „mapujące” – np. Ctrl+ESC ma wywołać kombinację Alt+F8 („powrót do poprzedniej częstotliwości”) – co da nam taki skrypt:
SetTitleMatchMode, 2 #IfWinActive FTDX RControl & Left:: Send !{F5} Ctrl & ESC:: Send !{F8} #IfWinActive
Dzięki temu, że stosujemy dodatkową parę dyrektyw:
#IfWinActive
to jeżeli N1MM nie będzie aktywny, przykładowa kombinacja Ctrl-ESC będzie dalej spełniała swoją pierwotną funkcję, czyli otwarcie menu start systemu Windows.
Możemy zupełnie zrezygnować z pary dyrektyw #IfWinActive, wtedy „zamiany klawiszy” będą dostępne niezależnie od programu (co nie zawsze jest oczywiście pożądane)
A co w przypadku, gdy chcemy wywołać daną funkcję programu, jeżeli program nie jest aktywnym oknem? Pomysł na zmodyfikowany skrypt poniżej. W pierwszej kolejności, po pojawieniu się kombinacji klawiszy, skrypt sprawdzi: czy okno zawierające w tytule na „belce” ciąg znaków, określony tym razem zmienną win_id, w ogóle istnieje: IF WinExist() , (czyli – czy program jest uruchomiony?) jeżeli tak, to czyni je aktywnym: WinActivate, czeka na pełną gotowość okna: WinWait i dopiero wtedy wysyła do okna interesującą nas kombinację klawiszy:
DetectHiddenWindows, On SetTitleMatchMode, 2 win_id := "FTDX" RControl & Left:: if WinExist(win_id) { WinActivate WinWait, %win_id% Send !{F5} } Return Ctrl & ESC:: if WinExist(win_id) { WinActivate WinWait, %win_id% Send !{F8} } Return
I na koniec – jeszcze inny sposób na wysłanie kombinacji klawiszy niezależnie, jaki mamy status aktywności okna:
DetectHiddenWindows, On SetTitleMatchMode, 2 win_id := "FTDX" RControl & Left:: if WinActive(win_id) Send !{F5} else ControlSend, , !{F5}, FTDX Return Ctrl & ESC:: if WinActive(win_id) Send !{F8} else ControlSend, , !{F8}, FTDX Return
Właśnie za tą elastyczność lubię język AHK
Ważne:
Ponieważ lista kombinacji klawiszy i skrótów w programie N1MM jest na prawdę imponująca, należy mieć świadomość, że możemy przez przypadek „przykryć” niektóre z nich naszym skryptem – i pierwotna funkcja z nimi skojarzona może przestać być dla nas dostępna.
Przygotowany skrypt możemy „na stałe” podpiąć do programu – i będzie uruchamiany razem z N1MM. > Opis podpięcia skryptu AHK do N1MM
Przydatne linki:
https://n1mmwp.hamdocs.com/appendices/third-party-software/#autohotkey-ahk
https://n1mmwp.hamdocs.com/setup/keyboard-shortcuts/
https://www.autohotkey.com/docs/Hotkeys.htm#Symbols
https://www.autohotkey.com/docs/misc/Remap.htm