Recursão ao remapear em AutoHotKey

2

Aqui está o código que tenho:

[::
Send [
Input, Char, T2 L1
if Char = a
{
    Send â
    return
}
Send %Char%
return

Quando digito [ then a , ele tem um comportamento normal e produz â . Mas, quando eu digito [ then p , o caractere [ não é impresso. O problema é a segunda linha ( Send [ ) na qual [ é o caractere que está sendo remapeado.

Eu tentei o seguinte sem sucesso:

  • Send '[

  • Send {[}

Eu quero imprimir [ mesmo que esteja sendo remapeado.

    
por Gradient 07.09.2012 / 01:50

1 resposta

2

Use $ como um modificador antes da tecla de acesso, ou seja, $[:: .

Como a documentação da AHK afirma:

This is usually only necessary if the script uses the Send command to send the keys that comprise the hotkey itself, which might otherwise cause it to trigger itself. The exact behavior of the $ prefix varies depending on operating system:

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.

    
por 07.09.2012 / 03:04