Autohotkey 卡普斯洛克+;s+;我在自动热键中
我的全部目标是能够按住Autohotkey 卡普斯洛克+;s+;我在自动热键中,autohotkey,Autohotkey,我的全部目标是能够按住Capslock+s,这将转换键uiojklm.,使其像10键数字键盘一样工作 因此,作为第一步,我尝试将Capslock+s+m映射到数字1 SetCapslockState AlwaysOff Capslock & s:: keywait, m, d, t0.6 If (!ErrorLevel) { SendInput {1} } Return 我的当前代码基于以下答案: 当我按下Capslock+s+m时,它会打印出m1。如何停止m打印?这里有一个
Capslock+s
,这将转换键uiojklm.
,使其像10键数字键盘一样工作
因此,作为第一步,我尝试将Capslock+s+m
映射到数字1
SetCapslockState AlwaysOff
Capslock & s::
keywait, m, d, t0.6
If (!ErrorLevel) {
SendInput {1}
} Return
我的当前代码基于以下答案:
当我按下
Capslock+s+m
时,它会打印出m1
。如何停止m
打印?这里有一个替代解决方案。由于传统的自动热键不支持#if,因此必须具有自动热键才能工作
在第一个块中,使用CapsLock+s将标志切换为True/False,并使用traytip显示状态,然后在下一个块中定义某些键的行为。或者,您可以删除第一个块并将#if(标志)行替换为:
#If (GetKeyState("CapsLock", "P") and GetKeyState("s", "P"))
更新:
尝试了以下方法,结果不一。第一个(注释掉的)代码确实使用CapsLock+s,但按s键显然会阻止AutoHotKey看到某些其他按键(此处字母n、m、i、o、p起作用,但未检测到键盘上相同高度/扫描线上的j、k、l)
只需使用CapsLock(与j、k、l相同)就可以了,但这不是您想要的
Capslock::
While, (GetKeyState("CapsLock", "P"))
{
Input, MyKey, I L1 T0.5
TrayTip, Key:, %MyKey%
if (MyKey = "m")
Send, 1
if (MyKey = "i")
Send, 2
if (MyKey = "k")
Send, 3
if (MyKey = "j")
Send, 4
if (MyKey = "o")
Send, 5
if (MyKey = "p")
Send, 6
}
Return
哎呀,刚刚用#If(GetKeyState(“CapsLock”,“P”)和GetKeyState(“s”,“P”)测试了我建议的aternative,但还不能正常工作。这与我想要的很接近,但我希望Numpad功能只能在按住CapsLock&s的情况下工作。(您的示例是切换)
SetCapsLockState, alwaysoff
/*
Capslock & s::
While, (GetKeyState("CapsLock", "P") and GetKeyState("s", "P"))
{
Input, MyKey, I L1 T0.5
TrayTip, Key:, %MyKey%
if (MyKey = "m")
Send, 1
if (MyKey = "i")
Send, 2
if (MyKey = "k")
Send, 3
if (MyKey = "j")
Send, 4
if (MyKey = "o")
Send, 5
if (MyKey = "p")
Send, 6
}
Return
*/
Capslock::
While, (GetKeyState("CapsLock", "P"))
{
Input, MyKey, I L1 T0.5
TrayTip, Key:, %MyKey%
if (MyKey = "m")
Send, 1
if (MyKey = "i")
Send, 2
if (MyKey = "k")
Send, 3
if (MyKey = "j")
Send, 4
if (MyKey = "o")
Send, 5
if (MyKey = "p")
Send, 6
}
Return