以下是另一種解決方案。由於傳統的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
在你切換的標誌,真/假以大寫鎖定+ S和您展示一個traytip狀態的第一個塊,那麼你定義的下一個塊的某些鍵的行爲。另外,您可以刪除第一個塊,並更換#如果(旗)線:
#If (GetKeyState("CapsLock", "P") and GetKeyState("s", "P"))
更新:
試圖用不同的結果如下。第一個(註釋掉的)代碼確實使用CapsLock + s,但顯然按下s鍵可以防止AutoHotKey看到某些其他按鍵(這裏的字母n,m,i,o,p工作,但是j,k,l已打開未檢測到鍵盤上的同一HIGHT /掃描線)
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
Oooops,剛剛測試了我的建議的aternative與#如果(函數GetKeyState( 「CapsLock鍵」, 「P」)和函數GetKeyState( 「S」, 「P」)),而不能正常工作(還) 。 –
這與我正在尋找的內容非常接近,但我希望Numpad功能只在Capslock&s按住時才能工作。 (你的例子是切換) – twiz