[AHK-] 無數字鍵鍵盤 切換數字鍵模式

作者: joiedevivre (難道您鍵盤系? :D)   2015-04-13 18:29:52
大家好, 可能有人看過沒數字鍵的鍵盤(80%鍵盤)吧
我想為這種鍵盤找回數字鍵模式, 方法是按下某個組合鍵(在這邊是Ctrl+\)
就把m變成0 n變成00 .變成. j變1 k變2 l變3... 等等的以此類推
以下是我目前的code 抱歉語法不太熟寫得很醜也沒有縮排
;NUMBER MODE
;^\::Send {NumLock}
;本來想要用NumState的 不過GetKeyState試半天出不來就先自訂變數
;下面的目的是設定一個變數 在0和1之間切換 是0就是原本的鍵位 是1就輸出數字
^BackSpace::numMode = 0
;還要先用組合鍵initial一個真煩 可惜我不知道讓他直接初始值為0的方法
^\::
numMode := numMode+1
numMode := Mod(numMode, 2)
return
m::
if (numMode=1) {
Send 0
}
else {
Send m
}
return
!n::MsgBox numMode is %numMode% ;查看現在是0還是1
結果按m都會出現71hotkeys have been recieve in the last in 1109ms
http://imgur.com/M2qe5vy
請問是什麼原因? 有更好的寫法嗎? 謝謝
作者: LPH66 (-6.2598534e+18f)   2015-04-13 20:01:00
單回答你的問題: 把 m:: 前面加上 $ 字, 這表示這組 hotkey只在使用者被按下時觸發, 不會被 Send 觸發初始化的部份直接寫在最上面就好, 記得也要加個 return這樣 script 開啟時就會把初始化的部份先執行過另外切換可以不用 +1 mod 2 兩步, 用 1 去減只要 1 步就好話說回來, 如果你想試 GetKeyState 的話, 要這麼用:GetKeyState, var, NumLock, T這之後 var 如果是 "D" 表示亮燈, "U" 表示燈滅主要是那個 , T 各種 Lock 要用這個才可以讀取目前狀態否則它讀取的是目前該按鍵是不是正被按著
作者: joiedevivre (難道您鍵盤系? :D)   2015-04-13 20:31:00
感謝您的指點! 不懂的部分我再研究看看

Links booklink

Contact Us: admin [ a t ] ucptt.com