Blog (7)
Komentarze (191)
Recenzje (1)

Zautomatyzuj swoje życie, czyli prosty blog o AutoHotKey — epizod 6

@BriHecatoZautomatyzuj swoje życie, czyli prosty blog o AutoHotKey — epizod 612.07.2018 21:36

Dzisiaj poopisujemy sobie Hotkeye z użyciem własnych modyfikatorów.

Poprzedni Epizod znajdziecie - tutaj. A zaczynamy dziś od krótkiego powtórzenia.

Hotkey raz jeszcze

Hotkey zapisujemy stosując dwa dwukropki - kod hotkeya po lewej stronie wywołuje akcję po prawej stronie - może mieć dowolną długość - zawrzeć się w jednej linijce lub opisać rozbudowaną funkcję na 300 wierszy nie licząc podprocedur ;)

r::w

taki hotkey spowoduje że wasza klawiatura przy każdym naciśnięciu "r" będzie wysyłała do komputera znak "w". Ten oneliner pozwala na łatwe przemapowanie klawiszy - np. coś z czego sam korzystam w AutoCAD czyli zamiana przecinka z klawiatury numerycznej na kropkę:

NumPadDot::.

Oczywiście znajduje się to wewnątrz dyrektywy #IfWinActive ahk_exe acad.exe.

Dzięki onelinerom można zablokować klawisz w tym sensie że Windows nie odbierze żadnego znaku (zostanie przechwycony i zniwelowany przez działający skrypt):

x::
x::Return

zadziałają obie wersje, z tym że gdzieś przeczytałem że ta z "returnem" jest bardziej elegancka.

To co ma się dziać po wciśnięciu waszego hotkeya zależy tylko od was. Już w 2 epizodzie napisaliśmy skrypt który zawierał 5 linijek a który pozwalał na kopiowanie bocznym klawiszem myszki:

XButton1::			;; kopiuj
	ClipBoard =
	Send, ^c
	ClipWait, 0.5
Return,

zakończenie Returnem jest istotne w takim wypadku.

Hotkeye budowane z modyfikatorami

Hotkey można zbudować (częściej trzeba, ze względu na to by nie zamieniać normalnie działających i potrzebnych przycisków) z jakimś dodatkowym klawiszem. W użyciu mamy zatem:

  • hasz lub płotek - "#" - jest modyfikatorm rozumianym jako wciśnięcie klawisza "Windowsa"
  • daszek - "^" - jest rozumiany jako wciśnięcie "Control"
  • plus - "+" - jest rozumiany jako wciśnięcie "Shift"
  • wykrzyknik - "!" - jest rozumiany jako wciśnięcie "Alt"
  • nawiasy trójkątne = "<" ">" - pozwalają wskazać który ze zdublowanych klawiszy ma być brany pod uwagę - lewy czy prawy (dotyczy Control, Shift, Alt)

Dzięki tym modyfikatorom, które, można ze sobą łączyć otrzymujemy kombinacje hotkeyów takie jak:

^c   - czyli Control+C
#m  -  czyli  Windows+M
!+r  -  czyli Alt+Shift+R

Zwiększa nam to ilość potencjalnych hotkeyów i zabezpiecza przed wykonywaniem skryptów przy normalnym wprowadzaniu tekstu.

Prefiksy

Gwiazdka - "*" - pozwala na uruchomienie skryptu danym hotkeyem bez względu na użyty modyfikator, jednak uruchomi wszystkie inne zawierające ten hotkey. Ok wyjaśnijmy to sobie, zakładając że mamy:

^m:: hotkey nr1
+m:: hotkey nr2
!^m:: hotkey nr2

Każdy hotkey będzie odpalał swoje osobne akcje. Jednakże dopisanie nowego hotkeya ze swoim zestawem poleceń, do tych trzech, w postaci:

*m:: hotkey nr4

zadziała tak, że wciśnięcie dowolnego z hotkeyów od 1 do 3 spowoduje uruchomienie dodatkowo hotkeya 4.

Tylda - "~" - daje do zrozumienia interpreterowi AHK że nie chcemy blokować czy zastępować domyślnego działania klawisza (czy hotkeya), a jedynie dodać jakąś naszą własną fukcję. Możemy np. chcieć otworzyć dialog zapisu pliku w jakimkolwiek programie i podstawić automatycznie w tym dialogu nazwę którą wcześniej skopiowaliśmy do schowka - taki kod powinien zadziałać:

~^s::
    Sleep, 1000
    Send, ^v
Return,

Dolar - "$" - ma znaczenie w takich skryptach które zawierają polecenie Send. załóżmy taką sytuację - dwa jakieś hotkeye które działają zgodnie z naszym założeniem:

h::Send, ribbon

g::Send, house

Wykonanie hotkeya pod klawiszem "g" wysyła nam do aplikacji tekst "house" - w tej sytuacji gdy nie użyliśmy dolara w momencie "publikacji" litery "h" z napisu "house" automatycznie zostanie wykonany ciąg poleceń hotkeya spod klawisza "h".

Aby tego uniknąć przed hotkeyem "h" dopisujemy dolara i inne hotkeye wysyłające literę "h" nie wywołają tego hotkeya..

Jeśli nie mamy żadnego jedno-znakowego hotkeya nie musimy się obawiać niczego.

Jeszcze więcej modyfikatorów

Możemy użyć dowolnej pary klawiszy do hotkeya z czego pierwszy traktowany jest jako modyfikator i nie podlega działaniu prefiksów. Łączenie dwóch klawiszy dokonujemy znakiem "&" ampersanda. Np. tak:

d & f:: akcja!

Działa to tak samo jak używanie shift czy control. Wciskamy pierwszy klawisz trzymając go wciskamy drugi - wtedy skrypt wykonuje swoje działanie a my możemy puścić klawisze. Jednakże pierwszy klawisz będzie zablokowany i samodzielnie nie wyśle swojego znaku. Doszedłem do tego że stosowanie prefiksów nic tu nie daje a wyjście to "uwolnienie" pierwszego klawisza - przypisanie go do siebie samego. Sam posiadam podobny działający zestaw:

d & r:: polecenie 1
d & t:: polecenie 2
d & f:: polecenie 3
d & g:: polecenie 4
d & c:: polecenie 5
d & v:: polecenie 6
d::d  ;;"uwolnienie" pierwszego klawisza

Nie ma absolutnie przeszkód aby takie sekwencje zrobić z przyciskami na myszcze, i to w obie strony:

XButton1 & q:: Send, pierwszy hotkey
q & RButton:: Send, drugi hotkey

Oczywiście należy (jak powyżej) "uwolnić" klawisz, albo przypisać mu własne inne polecenie domyślne.

Wysyłając więcej niż jeden znak (czyli tak właściwie to nie jest remapowanie klawiszy a podawanie do aplikacji całego tekstu) musimy się posłużyć komendą Send:

^h::Send,Bri tu był
g & h::Send, Bri tu był
::gh::Bri tu był

Oczywiście zawsze tez możemy użyć hotstringa ;)

Triki

Jeśli chcesz zamienić klawisz CapsLock w zwykły shift - napisz tak:

CapsLock::Shift

Chcesz szybko sterować skryptem bez potrzeby klikania w menu w zasobniku - napisz np. tak:

~CapsLock::Reload
~ScrollLock::Suspend
+Esc::ExitApp

Są to wewnętrzne polecenia AHK:

Reload - przeładowuje skrypt (i w tym wypadku włącza capslocka, więc trzeba pacnąć go raz jeszcze żeby nie przeszkadzał), bardzo użyteczne gdy coś zmodyfikowaliście w skrypcie i potrzeba sprawdzić to w akcji,

Suspend - zawiesza działanie skryptu a ikonka w zasobniku zmienia się z "H" na "S",

ExitApp - to zamknięcie skryptu. I kropka.

Następny - Odcinek 7

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.