Teraz o jednej z moich ulubionych funkcji w AHK - skrótach klawiszowych - tzw. hotkeys
Dla przypomnienia: ogólnie o AHK - możliwości i podstawowe przykłady i o hotstringach - rozwinięciu/zastąpieniu wpisywanego tekstu
Modyfikatory klawiszy
Skrót | klawisz |
---|---|
# | Win |
! | Alt |
^ | Ctrl |
+ | Shift |
Czyli ^+w::Hello World!
oznacza - wciśnięcie CTRL
+SHIFT
+w
wypisze Hello World!*
Pełna lista klawiszy dostępna jest w dokumentacji.
Podstawy
!.:: ;; wielokropek
Send …
Return
F1::Send {Ctrl Down}{PgUp}{Ctrl Up} ;;ff - poprzednia karta
Konfiguracja klawisza CapsLock
Bardzo wygodnym rozwiązaniem jest używanie klawisza CapsLock jako kolejnego klawisza modyfikatora. Jest on w poręcznym miejscu i w sumie na co dzień nie jest używany. Szkoda, żeby się marnował. By takie rozwiązanie działało sprawnie, na początku naszego pliku polecam dodać linię, która ustawi CapsLock zawsze na wyłączony - dzięki temu klawisz będzie działał jak zwykły i wciśnięcie skrótu nie będzie nam przełączało jego stanu.
SetCapsLockState, AlwaysOff ;; set CapsLock to be always off. Usefull for use it as moddifier
Zawieszanie działania skryptu
Czasami ustawione skróty mogą nam kolidować z tymi z którejś aplikacji. By to zweryfikować, możemy zamknąć skrypt poprzez menu w zasobniku. Możemy też zawiesić działanie samych skrótów - opcja Suspend Hotkeys dostępna w tym samym menu.
Możemy też użyć skrótu:
^#s::Suspend
CTRL
+WIN
+s
Zawiesi działanie kolejnych skrótów. Dla wznowienia musimy się posłużyć menu.
Nadpisywanie skrótów programów
AHK możemy użyć do prostego nadpisywania skrótów w danym programie (albo skrótów globalnych jeżeli program takie oferuje) - przydatne jeżeli, sam program nie pozwala na modyfikacje skrótów, albo modyfikacja ta jest ograniczona.
CapsLock & q:: ;; wysyła ^+a dla wywołania okna quick add ticktick
Send ^+a
Return
CapsLock & w:: ;; wysyła ^+o dla wywołania okna zadań ticktick
Send ^+o
Return
Czyli wciśnięcie CAPSLOCK
+q
wyśle nam skrót CTRL
+SHIFT
+a
co spowoduje przywołanie okna szybkiego dodawania zadania w aplikacji ticktick. (link polecający do świetnej aplikacji do organizacji zadań).
Drugi skrót przywoła nam okno z listą zadań.
Przywołanie aplikacji i wykonanie akcji/skrótu
Jeżeli aplikacja sama w sobie, nie oferuje skrótów globalnych, nic straconego. Możemy to łatwo osiągnąć.
CapsLock & 1:: ;; aktywowanie okna chrome i pierwszej karty
IfWinActive ahk_exe chrome.exe
{
Send ^1
return
}
IfWinExist ahk_exe chrome.exe
{
WinActivate
Send ^1
}
else
{
Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --profile-directory="Profile 1"
}
return
CapsLock & 2:: ;; activate/run chrome and go to second tab
SetTitleMatchMode, 2
IfWinActive Google Chrome
{
Send ^2
return
}
IfWinExist Google Chrome
{
WinActivate
Send ^2
}
else
{
Run C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --profile-directory="Profile 1"
}
return
Czyli jeżeli założymy, że używamy przeglądarki chrome, i mamy tam otwartą pierwszą kartę zawierającą mail i drugą zawierającą kalendarz, to dzięki powyższym skrótom błyskawicznie przełączymy się w odpowiednie miejsce. Dokładniej - jeżeli mamy uruchomioną i aktywną przeglądarkę, to CAPSLOCK
+1
przeniesie nas do pierwszej karty wysyłając skrót CTRL
+1
. Jeżeli okno, nie jest aktywne, ale przeglądarka jest uruchomiona (zobacz uwagi niżej), to ww. skrót aktywuje nam okno przeglądarki i przeniesie nas do pierwszej karty. Jeżeli przeglądarka nie jest uruchomiona, to ją uruchomimy (tutaj z określonym profilem). Jednak z uwagi na, to, że proces ten może potrwać nie wykonuje już dalszych operacji.
Ograniczanie działania skrótu/hotstringa do określonej aplikacji / okna
Działanie hotkeys (i hotstringów też) możemy ograniczyć tylko do określonych programów / okien o danym tytule, albo okien danej klasy. Możemy też sprawdzić czy określone okno jest aktywne. Podstawowa składnia zaprezentowana jest w rozdziale wyżej. Parametry dotyczące okna możemy zobaczyć za pomocą programu Window Spy dostępnego w zasobniku systemowym.
SetTitleMatchMode, 2
Pozwala nam określić jak ma być sprawdzany tytuł okna. Możliwe opcje, to:
- 1 = Tytuł okna musi zaczynać się od podanego ciągu.
- 2 = Tytuł okna musi zawierać podany ciąg.
- 3 = Tytuł okna musi dokładnie odpowiadać podanemu ciągowi.
Możemy też użyć RegExp - SetTitleMatchMode - Syntax & Usage
Uwaga na aplikacje electrona np. vscode czy teams, które wszystkie przedstawiają się jak chrome.exe - trzeba odwoływać się wtedy do tytułu okna, albo pełnej ścieżki programu.
Repozytorium z przykładami - github
Jak już zaznaczyłem wyżej, wszystkie przykłady z artykułów, wraz z komentarzami będą uaktualniane w repozytorium na GitHubie.