2012-12-14 30 views
0

我的全部目標是能夠按住Capslock + s,這將使密鑰uiojklm,.轉換爲像10鍵數字鍵盤一樣工作。AutoHotKey中的Capslock + s + m

因此作爲第一步,我試圖映射Capslock + s + m1

SetCapslockState AlwaysOff 

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

我根據我當前的代碼關閉答案在這裏的數:Alt + Space + key in autohotkey

當我按下Capslock + s + m,它打印出m1。如何停止打印m

回答

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 

在你切換的標誌,真/假以大寫鎖定+ 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 
+0

Oooops,剛剛測試了我的建議的aternative與#如果(函數GetKeyState( 「CapsLock鍵」, 「P」)和函數GetKeyState( 「S」, 「P」)),而不能正常工作(還) 。 –

+0

這與我正在尋找的內容非常接近,但我希望Numpad功能只在Capslock&s按住時才能工作。 (你的例子是切換) – twiz

相關問題