AutoHotkey - hotkeys

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.

AHK tray

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.

Załadować komentarze?