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