Jak z prostej myszy zrobić potężne narzędzie do pracy z komputerem

Prapoczątki

Moja przygoda z AutoHotKey (sercem niniejszego usprawnienia) zaczęła się od potrzeby użycia kilku skrótów klawiaturowych, dzięki którym pisanie dokumentów technicznych stało się łatwiejsze. Następnie próbowałem zmierzyć się z brakiem funkcji wyciszania mikrofonu w moim zestawie słuchawkowym Bluetooth. Potrzeba dodania kolejnych funkcjonalności pojawiła się, z kolei, kiedy kupiłem sobie ergonomiczną myszkę z paroma dodatkowymi przyciskami. Najpierw korzystałem z Logitech MX Master – wówczas przypisanie akcji do jej przycisków było możliwe za pomocą dedykowanego oprogramowania Logitech. Następnie, kiedy myszka uległa zużyciu, kupiłem myszkę Ugreen M751, która jednakże nie jest wspierana żadnym dedykowanym oprogramowaniem, co sprawia, że boczna rolka czy przyciski to tylko taki bajer…ale dzięki AutoHotKey można z nich wyciągnąć nawet więcej, niż z dodatkowych przycisków w Logitech i dedykowanej aplikacji producenta.

Programy wspierane przez skrypt

Programy z których najczęściej korzystam to: FreeCad, Altium Designer, przeglądarka Opera, Libre/Open Office Writer, Teams (przy czym ten ostatni ma trochę inny status, bo w jego przypadku nie o mysz ani klawiaturę się rozchodzi). Jeżeli korzystacie z innych programów, to trzeba dostosować rozpoznawane sekwencje klawiszy oraz zachowania zachowania skryptu w odpowiedzi na nie (o czym niżej).

Strategia tworzenia skryptu

Początkowo, kilka lat temu, kiedy zacząłem korzystać z AutoHotKey, skrypty pisałem własnoręcznie, korzystając z informacji jakie znalazłem w dokumentacji do programu oraz na Reddicie. Obecnie, jeżeli interesuje Was szybki efekt i łatwość modyfikacji, to taka strategia nie ma większego sensu – lepiej użyć LLM. Przedstawiony tutaj skrypt napisał dla mnie ChatGPT. Korzystałem również z Microsoft Copilot, który, na moje oko, posiada zbliżone możliwości, przez co skrypty tworzone przez te dwa LLM-y mają podobna jakość. Myślę, że DeepSeek czy Gemini dałyby sobie radę również bez problemu.

Tworzenie skryptu przebiegało na zasadzie:

  • Wymyślam jakiś mechanizm, który wstępnie wydaje się wygodny w użytku i przydatny, np. dwuklik bliższego bocznego przycisku myszy.
  • Instruuję Chata, by zmodyfikował uprzednio udostępniony mu skrypt w taki sposób, by w odpowiedzi na zdarzenie (np. w/w dwuklik) nastąpiło odpowiednie zachowanie programów, które mnie interesują:
    • Altium: zrób fit board (czyli uruchom skrót klawiaturowy, który wywołuje tę funkcję),
    • FreeCad: zrób fit object (również wywołaj odpowiedni skrót),
    • Opera: zresetuj powiększenie (przywróć powiększenie 100%, dedykowany skrót),
    • Pozostałe akcje nieprzypisane do konkretnego programu: np. pokaż pulpit.
  • itd. dla wszystkich akcji.

Skrypt może służyć jako baza do Waszych modyfikacji. Na początku konwersacji z Chatem, należy niniejszy skrypt zaimportować, a następnie poprosić o modyfikację zachowania poprzez:

  • całkowitego wyczyszczenie listy zachowań w reakcji na kliknięcia bocznych przycisków myszy, a następnie dodanie w ich miejsce swoich,
  • bądź podmienienie jedynie tego, co Wam potrzebne.

Chat może dodać komentarze wyjaśniające działanie skryptu, może dokonać faktoryzacji kodu, może też zaproponować własne usprawnienia.

Jedynym ograniczeniem jest tak naprawdę Wasza wyobraźnia.

Wypracowywanie efektywnego i wygodnego skryptu można traktować jak proces, jako że może być on modyfikowany wielokrotnie, aktualizowany, komentowany, optymalizowany itd. Chat sobie z tym poradzi: zinterpretuje poprawnie co tam się znajduje, a następnie wprowadzi modyfikacje. Działa to bardzo dobrze, rzekłbym – jakość skryptu jest dobra na 100%, ze świadomością zasady, która w przypadku LLMów sprawdza się bardzo trafnie: “garbage in – garbage out”, a zatem jeżeli prompt będzie precyzyjny, to efekty pracy Chata będą dobre, w przeciwnym razie może pójść w maliny.

Opis skryptu

Skróty klawiaturowe przydatne przy pisaniu dokumentów technicznych i naukowych

Skróty ogólnego użytku wywołuję naciskając: lewy Alt + lewy Ctrl + literkę / znak. Taka konfiguracja przycisków nie powoduje kolizji ze skrótami klawiaturowymi w programach, z których zazwyczaj korzystam.

SkrótZnakZastosowanie
Left Ctrl+ Left Alt + OΩrezystancja
Left Ctrl+ Left Alt + Uµprzedrostek mikro
Left Ctrl+ Left Alt + DΔdelta / przyrost
Left Ctrl+ Left Alt + C°stopnie Celsiusza
Left Ctrl+ Left Alt + LΛlambda
Left Ctrl+ Left Alt + Ssuma
Left Ctrl+ Left Alt + Pπliczba pi
Left Ctrl+ Left Alt + < (z Shiftem)mniejsze lub równe
Left Ctrl+ Left Alt + > (z Shiftem)większe lub równe
Left Ctrl+ Left Alt + Fϕfi
Left Ctrl+ Left Alt + Rpierwiastek
Left Ctrl+ Left Alt + + (z Shiftem)±plus/minus
Left Ctrl+ Left Alt + Aαalfa
Left Ctrl + Left Alt + Bβbeta
Left Ctrl + Left Alt + Eeuro
Left Ctrl + Left Alt + 2²2 z indeksem górnym (kwadrat liczby)
Left Ctrl + Left Alt + 3³3 z indeksem górnym (sześcian liczby)

Skrót dla Altium – obejście problemu copy-paste

Ctrl + Shift + V

W Altium Designer skrót wywołuje wysłanie standardowej sekwencji klawiszy, która z kolei otwiera okno Snippetów celem wklejenia ich do schematu.

Skrót został dodany jako obejście pojawiającego się okazjonalnie u mnie problemu copy-paste w Altiumie. Problem wynika z błędów obsługi drukarki i jest czasem jest mniej, a czasem bardziej uciążliwy. Dzięki temu można bardzo szybko otworzyć panel snippetów i wstawiać zapisane fragmenty projektu, co efektywnie działa jak funkcja Copy -> Paste w schemacie. Dla pełni szczęścia, trzeba jeszcze (już w Altium) dodać skrót klawiaturowy Ctrl+Shift+C, którego zadaniem jest skopiowanie zaznaczonego fragmentu schematu do listy snippetów.

Skrót Ctrl+Shift+V byłem zmuszony dodać w AHK (a nie w Altium) ponieważ, o dziwo, niniejsza (intuicyjna) sekwencja klawiszy nie jest poprawnie intepretowana przez Altium. Zapewniam, próbowałem różnych sposobów i różnych innych skrótów – nie działa i już 🙂

Wygaszenie monitora

Ctrl + F12

Powoduje wyłączenie monitora.

Przydatne gdy:

  • odchodzimy od komputera na chwilę,
  • chcemy szybko wygasić ekran,
  • nie chcemy usypiać całego systemu ani się wylogowywać.

Boczne przyciski myszy

Skrypt wykorzystuje dwa boczne przyciski myszy:

  • XButton1
  • XButton2

Każdy z nich obsługuje trzy typy akcji:

  • kliknięcie
  • podwójne kliknięcie
  • przytrzymanie

Akcja w postaci dwu-kliknięcia oraz przytrzymania przycisków nie są oczywiście natywnie obsługiwane przez mysz – gryzoń reaguje jedynie na proste kliki. Te dodatkowe zdarzenia są rejestrowane dzięki potędze AutoHotKey.


XButton1

pojedyncze kliknięcie

Altium Designer

Wysyła sekwencję:

v b

Zastosowanie:

Flip board: odwraca płytkę do góry nogami.


FreeCAD

Przełącza kolejne zapisane widoki.

Każde kliknięcie przechodzi do następnego widoku w cyklu.
Ułatwia to szybkie przeskakiwanie pomiędzy różnymi widokami modelu: Front -> Top -> Right itd.


Opera

Przenosi widok strony na samą górę (Home).

Przydatne na długich stronach internetowych.


XButton1 – podwójne kliknięcie

Altium Designer

Wysyła sekwencję:

Ctrl + PgDn
0

Zastosowanie:

Fit-board – powoduje że na ekranie zobaczymy cały projekt PCB bądź cały schemat. Naprawdę przydatne.


FreeCAD

Resetuje licznik widoków i wysyła:

v f 0

Powoduje szybki powrót do widoku bazowego – perspektywa, widok od strony prawego górnego rogu obiektu.


Opera

Resetuje zoom strony (Ctrl + 0).


XButton1 – przytrzymanie

Altium Designer

Wysyła:

Shift + S

Zastosowanie:

Widok pojedynczej warstwy np. Top Layer (pozostałe warstwy są wyszarzone). Ponowne użycie przywraca widok wszystkich warstw.


XButton2

XButton2 – pojedyncze kliknięcie

Altium Designer

Wysyła sekwencję:

t u n

Zastosowanie:

Unroute ścieżki, czyli rozłącz całą ścieżkę. Ja korzystam z tego dość często. Należy wpierw zaznaczyć element interesującej nas ścieżki, a następnie nacisnąć kliknąć na niej przyciskiem XButton2 – ścieżka rozłączy się.


XButton2 – podwójne kliknięcie

Altium Designer

Wywołuje “Rebuild Violating Polygons”, co wiąże się z wysłaniem sekwencji:

Ctrl+Alt+Shift+B

Zastosowanie:

No cóż – odświeżenie polygonu pod przyciskiem – przydatna rzecz 🙂 Niestety, w Altium Designerze nie jest pod tę opcję podpięty żaden domyślny skrót klawiaturowy, stąd byłem zmuszony podpiąć skrót, jak wyżej, który jest co prawda niewygodny w normalnym użytkowaniu, ale za to nie ma kolizji z żadnym istniejącym skrótem.

Globalnie

jeżeli focus jest na jakimkolwiek innym programie niż Altium, przełącza klawiaturę ekranową Windows.

Działanie:

  • jeśli klawiatura ekranowa jest uruchomiona → zostaje zamknięta
  • jeśli nie jest uruchomiona → zostaje uruchomiona

Przydatne m.in. w sytuacjach:

  • kiedy oglądamy film siedząc z dala od komputera, ale mając w pobliżu myszkę bezprzewodową,
  • jeżeli wystąpi awaria klawiatury.

XButton2 – przytrzymanie

To funkcja globalna, niezależna od aplikacji.

Podczas trzymania przycisku:

  • systemowa prędkość myszy zostaje tymczasowo zmniejszona
  • po puszczeniu przycisku zostaje przywrócona poprzednia wartość

Działa to jak przycisk precyzyjnego celowania znany z myszy gamingowych (tzw. sniper button).

Zastosowanie:

  • precyzyjne operowanie kursorem
  • dokładna praca w CAD
  • manipulacja małymi elementami interfejsu
  • precyzyjne wskazywanie

Boczna rolka myszy

Skrypt obsługuje ruch bocznej rolki:

  • w lewo
  • w prawo

oraz kombinacje z klawiszem Ctrl.


Sama rolka

RuchFunkcja
WheelLeftzmniejszenie głośności
WheelRightzwiększenie głośności

Umożliwia szybkie sterowanie głośnością bez użycia klawiatury. Chyba najbardziej przydaje się do obsługi głośności przy oglądania filmu na telewizorze.


Ctrl + rolka

Altium

Wysyła:

Numpad -
Numpad +

Zastosowanie:

Zmiana bieżącej warstwy podczas edycji PCB. Odpowiednik Ctrl+Shift+Główna Rolka. Trochę redundantne, wiem, można sobie wymienić na coś innego.


FreeCAD

Przełącza Workbench na kolejny o większym numerze oraz o mniejszym numerze.

Pozwala szybko zmieniać środowiska pracy.


Obejście sterowania mikrofonem w Microsoft Teams

Korzystam z następującego interfejsu Bluetooth do słuchawek. Zapewnia niskie opóźnienie oraz jakość dźwięku taką, że w ślepym teście trudno byłoby go odróżnić od karty dźwiękowej USB. Ponadto łączy się jednocześnie z dwoma komputerami i automatycznie odtwarza dźwięk z tego urządzenia, które ten dźwięk generuje. Trzeba go jednakże ładować, stąd też wykorzystuję go jedynie wtedy, kiedy potrzebuję mieć audio w słuchawkach i przebywam z dala od komputera.

Interfejs figuruje pod nazwą Lavodio R80 albo Glazata R80 i można go kupić na Aliexpress w cenie około 80 zł.

Ten układ działa po prostu świetnie, ma jednakże dwie wady:

  • łatwo uszkodzić klips do mocowania na ubraniu (dlatego na zdjęciu widać klips, który wydrukowałem na drukarce 3D),
  • nie posiada dedykowanego przycisku do włączania / wyłączania mikrofonu.

I ten właśnie drugi problem starałem się rozwiązać za pomocą AHK – niestety z mieszanym skutkiem 🙂

Teams nie udostępnia wygodnego globalnego skrótu do mute/unmute, dlatego skrypt wykorzystuje kombinacje klawiszy i sygnały dźwiękowe jako potwierdzenie. Niestety – zachowanie jest trochę inne, zależnie czy korzystamy z Teams dla firm, czy do użytku prywatnego – to są różne programy.


Przełączanie wyciszenia mikrofonu

Powiązane z klawiszami:

  • VKB1
  • Ctrl + VKB1
  • Media_Prev
  • Ctrl + Media_Prev

Działanie:

wysyłany jest skrót:

Ctrl + Shift + M

co przełącza stan mikrofonu: jedno kliknięcie załącza mikrofon, drugie – wyłącza. Jednocześnie odtwarzany jest krótki sygnał dźwiękowy.

Niestety, nie można mieć pewności co do aktualnego stanu mikrofonu – w sensie nie ma pewności, czy dane kliknięcie właśnie załączyło, czy też wyłączyło mikrofon. Ponadto aplikacja Teams musi mieć “focus”, czyli być okienkiem na wierzchu (aczkolwiek to można by obejść, AHK potrafi aktywować właściwe okienko znając nazwę programu albo tzw. uchwyt okna).

Ta opcja działa to zarówno w aplikacji firmowej i do użytku domowego.


Funkcje do jednoznacznego załączania i wyłączania mikrofonu – tylko Teams dla firm

Powiązane z klawiszami:

  • VKB0 / Media_Next

Wysyłany jest wówczas odpowiednik naciśnięcia i przytrzymania klawiszy Ctrl+Space, co aktywuje mikrofon.

oraz

  • VKB3 / Media_Play_Pause

Wysyłany jest wówczas odpowiednik puszczenia klawiszy Ctrl+Space, co dezaktywuje mikrofon:

Naciśnięcie VKB0 powoduje jednocześnie wygenerowanie dźwięku narastającego, podczas gdy naciśnięcie VKB3 powoduje wygenerowanie dźwięku opadającego. Działa to jednak chimerycznie i zależnie od aktualnej aktualizacji Teams. Teraz akurat działa, ale był czas, kiedy to Teams nie reagował na te przyciski. Teams musi mieć “focus”, i o ile pamiętam, należy w opcjach wyłączyć przechwytywanie klawiszy multimedialnych.

Trzeba pamiętać, że naciśnięcie VKB0 / Media_Next wywoła naciśnięcie i przytrzymanie klawiszy w Windows, przez co, do czasu użycia przycisku “zwalniającego” VKB3 / Media_Play_Pause, Windows zachowuje się dziwnie, dokładnie tak, jakby powyższe przyciski były przytrzymane.

Interfejs Audio Bluetooth musi być połączony tylko z jednym komputerem, gdyż w przypadku połączenia z dwoma komputerami, żadne naciśnięcie klawiszy nie jest rejestrowane: w uproszczeniu – interfejs nie wie, do którego komputera ma wysłać informację o naciśnięciu przycisków.

Leave a Comment