使用AutoHotkey替换[和{和]和}


5

我发现在编码中,我很少使用方括号,[]{}经常使用花括号。在大多数键盘上,这些是使用Shift+ [Shift+ 输入的]

现在,我尝试使用AutoHotkey通过以下方式重新映射这些键:

[::{{}

{}基本上,添加是原始模式,但是没有用。接下来我尝试了

{[}::{{}

但这也不起作用。

有什么帮助吗?


达伦,我已经更新了答案。让我知道是否有任何问题。:)
iglvzx 2012年

Answers:


11

使用大括号进行原始键解释仅适用于发送命令。所以,来图[{]}你可以使用:

[::Send, {{}
]::Send, {}}

注意:Shift等效键重新映射键是很麻烦的,因为即使不是所有键盘,大多数键盘每次也会发送相同的扫描代码,唯一的不同是Shift键的引入(具有自己的扫描代码)。

例如,按[我的键盘将发送扫描代码01A并产生一个[。按LShift+ [发送扫描代码,02A 01A产生一个{


更新:

我已经用一些聪明的逻辑成功地克服了scancode的问题!使用以下格式,您应该能够将任何键与其Shift对切换。密钥重复也应该起作用。

*$[::
    if (GetKeyState("Shift"))
        Send, {[}
    else
        Send, {{}  
    return

*$]::
    if (GetKeyState("Shift"))
        Send, {]}
    else
        Send, {}}
    return

为了扩展这个想法,@ Bob编写了脚本的更强大的版本:

*$[::
    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

2

如果在没有看到以上答案的情况下遇到问题,我将在下面的示例中添加一些字符串。

:*?:[::
    SendInput, {Shift Down}`[{Shift up}
    return

:*?:]::
    SendInput, {Shift Down}`]{Shift Up}
    return

:*?:{::
    SendInput, `[
    return

:*?:}::
    SendInput, `]
    return

做得好。无需重新发明轮子,是吗?:)
iglvzx 2012年

0

如果您将任何快捷方式与大括号键一起使用,则第一个答案是不好的解决方案,因为它使它们破了。兼容快捷方式的版本:

$[::Send {{ Down}
$[ Up::Send {{ Up}

+$[::Send {[ Down}
+$[ Up::Send {[ Up}

$]::Send {} Down}
$] Up::Send {} Up}

+$]::Send {] Down}
+$] Up::Send {] Up}

实际上,在编程语言中,圆括号的使用频率是大括号的两倍,因此,我提供了以下版本:

#NoEnv
#NoTrayIcon
#SingleInstance force
#MaxHotkeysPerInterval 200

; Swap [] with ()
  [::Send {( Down}
  [ Up::Send {( Up}

  ]::Send {) Down}
  ] Up::Send {) Up}

  +9::Send {[ Down}
  +9 Up::Send {[ Up}

  +0::Send {] Down}
  +0 Up::Send {] Up}

; Swap " with '
   $'::Send "
  +$'::Send '
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.