4

因此,我尝试在 AutoHotKey 中编写一个简单的脚本,该脚本将使用 NumLock(我已将其映射到注册表中的大写锁定)作为切换键,以将我的方向键转换为小键盘 nab 键。我的脚本如下:

GetKeyState, state, NumLock, T
if state = D
{
    Up::Numpad8
    Down::Numpad2
    Left::Numpad4
    Right::Numpad6
    Enter::Numpad5
}
if state = U
{
    $Up::Up
    $Down::Down
    $Left::Left
    $Right::Right
    $Enter::Enter
}
Return

但是,我在第 15 行收到一条错误消息,提示 Up 重复。如何告诉 AutoHotKey 将我的密钥返回到其原始密钥指定?我尝试将“else”部分留空,而不是“if state = U”部分,但是当再次切换时,键仍保持更改状态。我确定我缺少一些简单的东西。

4

2 回答 2

3

啊,给你。你不能按照你试图做的方式去做。由于您只能在脚本中映射一次键,因此将 if/or 函数放在热键中,如下所示:

GetKeyState, state, NumLock, T

up::
    if(state = D){
        send {Numpad8}
    }else{
        send {up}
    }
return
于 2013-07-06T21:34:35.340 回答
3

这是一个使用#If 上下文的简化解决方案。

这样做的好处是您不必在If语句中将键重新映射回自身Else。如果条件不成立,密钥将保留其正常功能。

#If GetKeyState("NumLock", "P")
    Up::Numpad8
    Down::Numpad2
    Left::Numpad4
    Right::Numpad6
    Enter::Numpad5
#If
于 2013-07-08T13:55:29.260 回答