Mouse e keyboard macro e hotkey.

Download

Documentation

Changelog

Tutorial in italiano

Support

Forum  |  wiki

English Deutsch Français Russian Japanese 


all words  exact phrase

Hotkeys (Scorciatoie per Mouse, Joystick e Tastiera)

 

 Indice


Introduzione e semplici esempi

Le Hotkey spesso si associano ai tasti di scelta rapida per la loro capacità di innescare facilmente un'azione (come lanciare un programma o una macro della tastiera). Nel seguente esempio, la Hotkey Win+N è configurata per lanciare il Notepad. Il segno cancelletto[#] corrisponde al tasto di Windows,  è conosciuto come un modificatore:

#n::
Run Notepad
return

Il comando return assolve alla funzione di fine-Hotkey. Tuttavia, se una Hotkey esegue una singola linea,  questa puo' essere scritta alla destra dei doppi-due-punti.  Ossia il return e' implicito:

#n::Run Notepad

Per utilizzare piu' di un modificatore con una Hotkey, elencali consecutivamente (l'ordine non conta nulla). Il seguente esempio utilizza  ^! per indicare Control+Alt:

^!s::
Send Sincerely,{enter}John Smith ; Questa linea invia la combinazione di tasti alla finestra attiva.
return

Tabella dei simboli-prefisso di Hotkey (Modificatori):

Simboli Descrizione
# Win (Tasto Windows)
! Alt
^ Control
+ Shift (Maiuscolo)
& Un & puo' essere usato tra due key o mouse- button per combinarli in una Hotkey personalizzata. Vedere sotto per i particolari. Tali hotkeys sono ignorate da Windows 95 /98/Me. 
< Usare il simbolo minore-di <!a e' simile a !a, eccetto che solo il tasto Alt di sinistra richiamera' l' Hotkey. Questo simbolo e' ignorato da  Windows 95/98/ME.
> Come sopra; mutatis mutandis.
<^>!

AltGr (alternate graving). Se sulla tua tastiera e' presente il tasto AltGr al posto di Alt(sinistro), questa serie di simboli puo' essere usata per  AltGr (necessarie Windows NT/2k/XP). Per Esempio:

<^>!m::MsgBox Hai premuto AltGr+m.
<^<!m::MsgBox Hai premuto LeftControl+LeftAlt+m.

Altrimenti, per trasformare lo stesso AltGr in una Hotkey, usare il seguente Hotkey(senza alcune hotkey come le suddette):

LControl & RAlt::MsgBox You pressed AltGr itself.
*

Metacarattere: richiama la Hotkey anche se viene premuto un altro modificatore. Viene spesso utilizzato per rimappare key e bottoni

*#c::Run Calc.exe ; Win+C, Shift+Win+C, Ctrl+Win+C, etc. Richiamano tutti questa Hotkey.
*ScrollLock::Run Notepad ; Premendo Scrolllock verra' richiamata questa Hotkey anche se contemporaneamente viene premuto un altro tasto-modificatore.

Questo carattere viene ignorato da Windows 95/98/ME.

~

Tilde: Quando viene lanciata la Hotkey, questa non blocchera' la funzione nativa di quel tasto. In entrambe gli esempi che seguono, il click-destro del mouse  verra' inviato alla finestra attiva:

~RButton::MsgBox Hai cliccato il tasto destro del mouse
~RButton & C::MsgBox Hai premuto C tenendo giu' il tasto destro del mouse.

Nota: 1) Diversamente dagli altri simboli puo' essere presente in alcune varianti di Hotkey ma assente in altre variants; 2) Speciali Hotkey che sostituiscono alt-tab ignorano sempre il carattere Tilde; 3) Il carattere tilde viene ignorato da Windows 95/98/ME

$

Questo generalmente e' necessario solamente se lo script usa il comando send per inviare la key che contiene in se' la Hotkey. L'esatto comportamento dell $ varia a seconda del sistema operativo:

On Windows NT4/2k/XP or later: The $ prefix forces the keyboard hook to be used to implement this Hotkey, which as a side-effect prevents the Send command from triggering it. The $ prefix is equivalent to having specified #UseHook somewhere above the definition of this Hotkey.

On Windows 95/98/Me: The Hotkey is disabled during the execution of its thread and re-enabled afterward. As a side-effect, if #MaxThreadsPerHotkey is set higher than 1, it will behave as though set to 1 for such hotkeys.

UP

La parola UP puo' seguire il nome di una Hotkey, per richiamarla al rilascio del tasto anziche' alla sua pressione. L'esempio seguente remaps LWin a divenire LControl:

*LWin::Send {LControl Down}
*LWin Up::Send {LControl Up}

"Up" puo' anche essere usato nelle normali Hotkey come nell'esempio: ^!r Up::MsgBox Hai premuto e rilasciato Ctrl+Alt+R. Funziona anche con  combination hotkeys (es. F1 & e Up::)

Questa caratteristica non funziona con i  joystick buttons. Necessario Windows NT/2k/XP.

 

Una tecnica simile alla precedente e' quella di fare una Hotkey in una key. Il vantaggio e' che anche se la Hotkey viene richiamata a rilascio del tasto, andra' in esecuzione soltanto se non viene premuta un' altro tasto prima del rilacio. Per es.:

LControl & F1::return ; Trasforma il left-control in un prefisso usandolo prima di "&" almeno una volta.
LControl::MsgBox Hai rilasciato LControl senza aver richiamato un' altra Hotkey.

(Guarda la Key List per una lista completa di keyboard keys e di bottoni del mouse/joystick)


Hotkey multipli possono essere impilati verticalmente per fare loro richiamare la stessa azione. Per esempio: 

^Numpad0::
^Numpad1::
MsgBox Sia premendo Control+Numpad0 che Control+Numpad1 verra' visualizzato questo messaggio.
return

Una key o una key-combination puo essere disabilitata dell' intero sistema assegnandogli di non compiere nulla. Il seguente esempio disabilita il tasto Windows di destra: 

RWin::return


Hotkeys sensibili al contesto [v1.0.41+]

Con la direttiva #IfWinActive/Exist si può far compiere ad una Hotkey un'azione differente (o anche nessuna) a seconda del tipo di finestra che è attiva o esistente. Per esempio: 

^a::
IfWinActive, ahk_class Notepad
{
SendInput hai premuto ctrl-a con notepad attivo
}
else
{
MsgBox hai premuto ctrl-a con notepad attivo
}
return


Combinazioni personalizzate e altre Features [Windows NT/2000/XP or later]

Puoi definire combinazioni personalizzate di due tasti (tranne che per i joystick-button) usando " & " tra di loro. Nei prossimi esempi per richiamare le Hotkey, bisogna prima premere Numpad0 e poi l'altro tasto mentre si continua a premere il primo.

Numpad0 & Numpad1::MsgBox Hai premuto Numpad1 mentre tenevi premuto Numpad0.
Numpad0 & Numpad2::Run Notepad

Nel precedente esempio, Numpad0 diviene un prefix key. I Prefix keys possono anche essere  assegnati alle loro propie-azioni come nel seguente esempio, ma le loro propie-azioni vengono richiamate quando il tasto viene rilasciato e solo se non hai spinto altri tasti mentre il primo era premuto:

Numpad0::WinMaximize A ; Maximize la finestra attiva.

Numlock, Capslock, and Scrolllock: Queste key possono essere forzate ad essere "AlwaysOn" o "AlwaysOff". Per esempio: SetNumlockState AlwaysOn

Overriding Explorer's hotkeys: Le Hotkey integrate in Windows come Win-E (#e) e Win-R (#r) possono essere sovrascritte semplicemente assegnando loro una azione nello script. Guarda la override page per maggiori dettagli.

Sostituti per Alt-Tab: Hotkey puo' fornire alternative al alt-tab. Per esempio, le due seguenti Hotkey ti consentono di fare alt-tab con la mano destra:

RControl & RShift::AltTab ; Tenendo premuto right-control premere right-shift ripetutamente per muoversi in avanti.
RControl & Enter::ShiftAltTab ; Senza bisogno di rilasciare right-control, premi Enter per tornare indietro.

Per maggiori dettagli: Alt-Tab.


Hotkeys per la rotellina del mouse  [Windows NT/2000/XP or later]

Le Hotkey richiamate dal movimento della rotellina del mouse sono supportate da le key WheelDown e WheelUp. Per esempio:

MButton & WheelDown::MsgBox Hai girato la rotellina tenendo premuto il tasto sotto la rotellina (tasto centrale).
^!WheelUp::MsgBox Hai girato la rotellina tenendo premuto Control+Alt.

In v1.0.43.03+, La variabile integrata A_EventInfo contiene il numero di tacche da cui la rotella è stata girata, che è sempre almeno 1. Un intero maggiore di 1 si ottiene ruotando la rotellina velocemente, benche' questo possa cambiare da mouse a mouse a seconda dell' hardware. Esempio: ~WheelDown::ToolTip %A_EventInfo%

Una delle Hotkey maggiormente comoda per la rotellina del mouse, e' quella di sfuttarla per scorrere anche lateralmente il testo nelle finestre. Per esempio, la seguente coppia di Hotkey scorre orizzontalmente il testo anziche' verticalmente quando si tiene premuto il tasto control di sinistra mentre si ruota la rotellina:

~LControl & WheelUp:: ; Scroll a sinistra.
ControlGetFocus, fcontrol, A
Loop 2 ; <-- Aumenta questo valore per scorrere piu' velocemente.
SendMessage, 0x114, 0, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINERIGHT.
return

~LControl & WheelDown:: ; Scroll a destra.
ControlGetFocus, fcontrol, A
Loop 2 ; <-- Aumenta questo valore per scorrere piu' velocemente.
SendMessage, 0x114, 1, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINELEFT.
return

Le Hotkey per la rotellina del mouse possono generare solamente down-events, non possono essere utilizzati come key-up hotkeys.


Note e osservazioni su Hotkey

Ogni tasto del Tastierino numerico puo' essere usato per richiamare due differenti subroutine Hotkey a seconda dello stato di Numlock. Altrimenti, un tasto del Tastierino numerico (numpad key) puo' richiamare sempre la stessa subroutine indipendentemente dallo stato di Numlock. Per esempio:

NumpadEnd::
Numpad1::
MsgBox, Questa Hotkey viene lanciata sia se bloc-Num (Numlock) e' attivo o meno.
return

Se il simbolo tilde (~) viene utilizzato in una Hotkey con una prefix key almeno una volta, Questo prefisso verra' sempre richiamato e inviato alla finestra attiva. Per esempio, in entrambe i seguenti esempi, la finestra attiva ricevera'  anche l'azione tasto destro, anche se solo una delle definizioni contiene la tilde:

 ~RButton & LButton::MsgBox Hai premuto il tasto sinistro del mouse tenendo premuto il destro.
RButton & WheelUp::MsgBox Hai girato la rotellina del mouse tenendo premuto il tasto destro.

Il comando Suspend puo' disabilitare temporaneamente tutte le Hotkey tranne per quelle che rendiate esenti. Per maggiori propieta', guarda  #IfWinActive/Exist.

Per mezzo di comandi Hotkey, possono essere create Hotkey dinamiche mentre lo script e' in corso. I comandi possono anche modificare, inabilitare, o permettere individualmente le Hotkey dello stesso script . 

Le Hotkey per il Joystick attualmente non supportano modificatori-prefisso quali ^ (Control) e # (Win). Tuttovia, puoi adoperare  GetKeyState per simulare questo effetto, come mostrato nel seguente esempio:

Joy2::
if not GetKeyState("Control") ; Neither the left nor right Control key is down.
return ; i.e. Do nothing.
MsgBox You pressed the first joystick's second button while holding down the Control key.
return

Ci possono essere casi in cui un Hotkey puo' aspettare che le relative key vengano rilasciate prima di continuare. Considerare il seguente esempio: 

^!s::Send {Delete}

Premendo Control-Alt-S indurrebbe il sistema a comportarsi come se premeste Control-Alt-Canc (due to the system's aggressive detection of Ctrl-Alt-Delete). Per lavorare con questo, utilzza KeyWait per aspettare che i tasti vengano rilasciati, per esempio:

^!s::
KeyWait Control
KeyWait Alt
Send {Delete}
return

Il nome di una Hotkey (label) puo' essere utilizzato come target da Gosub o Goto. per esempio: Gosub ^!s

Un uso usuale delle Hotkey e' di far partire e arrestare un azione ripetitiva, come una serie di combinazioni-di-tasti (keystrokes) o mouse clicks. Per un esempio su cio', osserva this FAQ topic.

Per finire, ogni script e' quasi multi-threaded, cio' consente di lanciare una Hotkey mentre la precedente subroutine e' in esecuzione. Per esempio, nuove Hotkey possono essere lanciate ogni volta che una MsgBox viene visualizzata dall'attuale Hotkey.


Hotkey con Alt-Tab

Ogni Hotkey con Alt-Tab deve essere di due tasti, che vengono legati dal simbolo congiunzione (&). Nel prossimo esempio dovrai tenere premuto il tasto alt-di-destra e premere j o k per muoverti nel alt-tab menu:

RAlt & j::AltTab
RAlt & k::ShiftAltTab

AltTab e ShiftAltTab sono due dei comandi speciali che vengono riconosciuti solamente quando scritti ognuno nella propia riga. 

Lista completa:

AltTab: Una volta che viene visualizzato l' alt-tab menu, si muove in avanti all interno di esso. Oppure, visualizza l' alt-tab menu, se la Hotkey e' una "&" combinatione di due tasti; altrimenti, non fa niente.

ShiftAltTab: Uguale al precedente ma si muove indietro all interno di alt-tab menu.

AltTabAndMenu: Se l' alt-tab menu e' visualizzato si muove in avanti.  Altrimenti, lo visualizza.

AltTabMenuDismiss: Chiude alt-tab menu.

Per meglio comprendere : La rotellina del mouse puo' diventare un valido sostituto di Alt-tab. Nel prossimo esempio, cliccando il tasto centrale del mouse (sotto la rotellina) si visualizza  l' alt-tab menu e girando la rotellina si naviga all'interno di esso:

MButton::AltTabMenu
WheelDown::AltTab
WheelUp::ShiftAltTab

Per chiudere una Hotkey che ha richiamato l' alt-tab menu senza attivare la finestra selezionata, usa l'hotkeycome di seguito. Potrebbe richiedere aggiustamenti dipendenti da : 1) the means by which the alt-tab menu was originally displayed; e 2) Se lo script ha la keyboard hook istallata.

LCtrl & CapsLock::AltTab
!MButton:: ; Tasto centrale del mouse. Il prefisso ! lo fa' agire come se il tasto Alt fosse premuto (come e' quando alt-tab menu e' visibile).
IfWinExist ahk_class #32771 ; controlla se alt-tab menu e' visibile sullo schermo.
Send !{Escape}{Alt up}
return

Attualmente, tutte le azioni speciali della Alt-tab devono essere assegnate direttamente ad un Hotkey come negli esempi qui sopra (cioè non possono essere usate come se siano state comandi). Inoltre, la presenza del alt-tab menu può essere rilevata tramite IfWinExist ahk_class #32771

Le azioni personalizzate della alt-Tab possono anche essere generate attraverso hotkeys. Nel seguente esempio, premete F1 per visualizzare il menu e per avanzare in avanti in esso. Allora premete F2 per attivare la finestra selezionata (o premere Esc per annullare): 

*F1::Send {Alt down}{tab} ; L'asterisco e' necessario in questo caso.
!F2::Send {Alt up} ; Rilasciando il tasto Alt, si attivera' la finestra selezionata.
~*Escape::
IfWinExist ahk_class #32771
Send {Escape}{Alt up} ; Cancella il menu senza attivare la finestra selezionata.
return

Download | Documentation | Changelog | Support | Forum | X Traduttori