Como posso mapear os dois pontos (“shift + period”)?

0

Estou re-mapeando o layout de Qwerty ( dinamarquês ) para Dvorak usando o AHK porque eu posso ' t instalar layouts de teclado personalizados neste computador. Então, por exemplo, estes funcionam bem:

:*:n::b  ; remap "n" to "b". This automagically also works for "N"-->"B".
:*:,::w  ; remap comma to lowercase "w".
:*:;::W  ; uppercase comma must be specifically coded.
:*:.::v  ; remap period to lowercase "v".

Até aí tudo bem, mas isso não funciona para o "dois pontos", que deve se tornar um "V" maiúsculo. De acordo com os documentos, eu deveria ser capaz de usar o caractere de escape, mas talvez apenas na saída, não no gatilho? Como não é uma chave de carta, esta solução também não funciona.

Eu tentei várias combinações:

:*::::V      ; "hotstring is missing its abbreviation"
:*C::::V     ; "hotstring is missing its abbreviation"
:*C: ': ::V  ; this just produces a colon...
:*:':::V     ; "invalid hotkey"
:*C:':::V    ; "invalid hotkey"
':::V        ; "line does not contain a recognized action."

Nota: claro que estou apenas a experimentar uma das opções acima de cada vez, mas aqui estão todas apresentadas, não comentadas.

    
por Torben Gundtofte-Bruun 05.05.2014 / 15:52

1 resposta

1

Os novos documentos do AutoHotKey (que, por algum motivo, não estão vinculados aos antigos) mantêm os documentos herdados. tendência a tornar as descobertas sobre coisas assim muito difíceis.

Sua escolha de usar Hotstrings em vez de Teclas de atalho tem o benefício de nunca permitir que as strings acionem umas às outras (de Hotstrings ):

By default, hotstrings are never triggered by keystrokes produced by any AutoHotkey script. This avoids the possibility of an infinite loop where hotstrings trigger each other over and over. In v1.1.06 and later, this behaviour can be controlled with #InputLevel and SendLevel. However, auto-replace hotstrings always use send level 0 and therefore never trigger hook hotkeys or hotstrings.

Eu penso SendInput é suposto para operar de forma semelhante, por padrão, mas eu achei que tentar usar uma tecla de atalho simples com SendInput correria o risco de acionar outras teclas de atalho (e usar quase a mesma definição com um hotstring não funcionava, provavelmente devido a peculiaridades relacionadas ao cólon). tinha que pedir manualmente a tecla de atalho para usar o Keyboard Hook (que é instalado automaticamente devido ao uso de hotstrings):

#UseHook, On
:::SendInput, V ; Oddly enough, a colon as a hotkey trigger doesn't need 
                ; to be escaped, but a colon in a hotstring, unescaped or
                ; otherwise, just breaks things.
; Wouldn't get triggered by :, even if uncommented (that's good!)
; v::SendInput, colons in AHK are confusing
#UseHook, Off

Você deve ser capaz de usar hotstrings para remapear outras teclas como já foi, embora as teclas de atalho possam funcionar em vez disso, se você realmente quiser, talvez com #UseHook como fiz no meu exemplo acima e / ou #InputLevel / SendLevel .

    
por 05.05.2014 / 17:56