0

私の完全な目標はCapslock + s、キーをテンキーのように機能するように変換する を押し続けることができるようにすることuiojklm,.です。

最初のステップとしてCapslock + s + m、番号にマッピングしようとしています1

SetCapslockState AlwaysOff

Capslock & s::
keywait, m, d, t0.6
If (!ErrorLevel) {
    SendInput {1}
} Return

ここでの答えに基づいて現在のコードを作成しました:Alt + Space + autohotkeyのキー

を押すCapslock + s + mと印刷されm1ます。mの印刷を停止するにはどうすればよいですか?

4

1 に答える 1

1

これが代替ソリューションです。従来の AutoHotKey は #if をサポートしていないため、これを機能させるには AutoHotKey_L が必要です。

CapsLock & s::
Flag:=!Flag
If (Flag)
    TrayTip, AutoHotKey, Numpad ON, 1
Else
    TrayTip, AutoHotKey, Numpad OFF, 1
Return

#If (Flag)
    m::Send, 0
    k::Send, 1
#If

最初のブロックでは、フラグを CapsLock + s で True/False に切り替え、トレイチップでステータスを表示してから、次のブロックで特定のキーの動作を定義します。または、最初のブロックを削除して、#if (フラグ) 行を次のように置き換えることもできます。

#If (GetKeyState("CapsLock", "P") and GetKeyState("s", "P"))

アップデート:

さまざまな結果で次のことを試しました。最初の (コメントアウトされた) コードは CapsLock + s を使用していますが、明らかに s キーを押すと、AutoHotKey は特定の他のキーの押下を認識できなくなります (ここでは文字 n、m、i、o、p は機能しましたが、j、k、l はオンになっています)。キーボード上の同じ高さ/走査線は検出されませんでした)

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(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
于 2012-12-17T09:51:41.323 に答える