O uso de chaves para interpretação de chave bruta é apenas para os comandos Enviar . Então, para mapear [ para { e ] para } você pode usar:
[::Send, {{}
]::Send, {}}
Nota: Remapear uma chave com seu equivalente a Shift é problemático, já que a maioria, se não todos os teclados, envia o mesmo scancode toda vez, a única diferença é a introdução da tecla Shift (que possui seu próprio scancode).
Por exemplo, pressionar [ no teclado envia o scancode 01A
e gera [
. Pressionando LShift + [ envia os scancodes 02A
e 01A
, gerando um {
.
Atualização:
Eu tenho sucesso superado o problema do scancode com alguma lógica inteligente! Usando o seguinte formato, você deve poder mudar qualquer tecla com seu par Shift . A repetição de chaves também deve funcionar.
*$[::
if (GetKeyState("Shift"))
Send, {[}
else
Send, {{}
return
*$]::
if (GetKeyState("Shift"))
Send, {]}
else
Send, {}}
return
Expandindo essa ideia, o @Bob escreveu uma versão mais robusta do script:
*$[::
if (GetKeyState("Shift"))
SendInput, {[ Down}
else
SendInput, {{ Down}
return
*$]::
if (GetKeyState("Shift"))
SendInput, {] Down}
else
SendInput, {} Down}
return
*$[ Up::
if (GetKeyState("Shift"))
SendInput, {[ Up}
else
SendInput, {{ Up}
return
*$] Up::
if (GetKeyState("Shift"))
SendInput, {] Up}
else
SendInput, {} Up}
return