AutoHotKey可以切换键盘映射吗?

问题描述:

所以我试图在AutoHotKey中编写一个简单的脚本,它将使用NumLock(我已将其映射到我的注册表中的大写字母)作为切换,以将我的方向键变为数字键盘的NAB键。我的脚本如下:AutoHotKey可以切换键盘映射吗?

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行我如何告诉AutoHotkey的,以我的钥匙返回其原始密钥指定重复?我试着留下一个“else”部分空白,而不是“if state = U”部分,但是当再次切换时,这些键保持在它们改变的状态。我确定有一些我很想念的东西。

+2

请注意,这是关于编程。相关:http://meta.stackexchange.com/questions/187705/question-about-scripting-closed-as-not-being-related-to-programing –

啊,在这里你走了。你不能像你试图这样做。既然你只能在脚本一次地图的关键,把IF /或功能热键里面,像这样:

GetKeyState, state, NumLock, T 

up:: 
    if(state = D){ 
     send {Numpad8} 
    }else{ 
     send {up} 
    } 
return 
+0

我在文档中读到,$停止脚本触发脚本再次。如果Up设置为“up :: up”(这不起作用,但想象它的确如此),按键将被识别为up,这将在无限循环中一次又一次地触发。阻止脚本触发自身的方法是使用$。而且,numpad :: up不起作用,因为我想让方向按钮返回到原来的状态。我其实并没有一个数字键盘。脚本的目标是模仿它。 – user2556942

+0

呃,我已经编辑了我的答案。我刚刚发布的内容会对你有用。 – bgmCoder

+0

哦。对不起,应该先打中刷新。谢谢,这是有道理的。我会给它一个去,并在今晚报告。 – user2556942

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

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

#If GetKeyState("NumLock", "P") 
    Up::Numpad8 
    Down::Numpad2 
    Left::Numpad4 
    Right::Numpad6 
    Enter::Numpad5 
#If