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”部分,但是当再次切换时,这些键保持在它们改变的状态。我确定有一些我很想念的东西。
啊,在这里你走了。你不能像你试图这样做。既然你只能在脚本一次地图的关键,把IF /或功能热键里面,像这样:
GetKeyState, state, NumLock, T
up::
if(state = D){
send {Numpad8}
}else{
send {up}
}
return
我在文档中读到,$停止脚本触发脚本再次。如果Up设置为“up :: up”(这不起作用,但想象它的确如此),按键将被识别为up,这将在无限循环中一次又一次地触发。阻止脚本触发自身的方法是使用$。而且,numpad :: up不起作用,因为我想让方向按钮返回到原来的状态。我其实并没有一个数字键盘。脚本的目标是模仿它。 – user2556942
呃,我已经编辑了我的答案。我刚刚发布的内容会对你有用。 – bgmCoder
哦。对不起,应该先打中刷新。谢谢,这是有道理的。我会给它一个去,并在今晚报告。 – user2556942
这是使用#If context一个简化的解决方案。
这样做的好处是,您不必在Else
语句中将If
语句重新映射回自己。如果条件不正确,密钥将保持其正常功能。
#If GetKeyState("NumLock", "P")
Up::Numpad8
Down::Numpad2
Left::Numpad4
Right::Numpad6
Enter::Numpad5
#If
请注意,这是关于编程。相关:http://meta.stackexchange.com/questions/187705/question-about-scripting-closed-as-not-being-related-to-programing –