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

看板EzHotKey作者 (請不要宣傳罷免蔡正元!!!)時間9年前 (2015/04/13 18:29), 9年前編輯推噓1(1010)
留言11則, 2人參與, 最新討論串1/3 (看更多)
大家好, 可能有人看過沒數字鍵的鍵盤(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
請問是什麼原因? 有更好的寫法嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.215.107 ※ 文章網址: https://www.ptt.cc/bbs/EzHotKey/M.1428920995.A.5B9.html

04/13 20:01, , 1F
單回答你的問題: 把 m:: 前面加上 $ 字, 這表示這組 hotkey
04/13 20:01, 1F

04/13 20:01, , 2F
只在使用者被按下時觸發, 不會被 Send 觸發
04/13 20:01, 2F

04/13 20:02, , 3F
初始化的部份直接寫在最上面就好, 記得也要加個 return
04/13 20:02, 3F

04/13 20:02, , 4F
這樣 script 開啟時就會把初始化的部份先執行過
04/13 20:02, 4F

04/13 20:02, , 5F
另外切換可以不用 +1 mod 2 兩步, 用 1 去減只要 1 步就好
04/13 20:02, 5F

04/13 20:06, , 6F
話說回來, 如果你想試 GetKeyState 的話, 要這麼用:
04/13 20:06, 6F

04/13 20:06, , 7F
GetKeyState, var, NumLock, T
04/13 20:06, 7F

04/13 20:07, , 8F
這之後 var 如果是 "D" 表示亮燈, "U" 表示燈滅
04/13 20:07, 8F

04/13 20:07, , 9F
主要是那個 , T 各種 Lock 要用這個才可以讀取目前狀態
04/13 20:07, 9F

04/13 20:08, , 10F
否則它讀取的是目前該按鍵是不是正被按著
04/13 20:08, 10F

04/13 20:31, , 11F
感謝您的指點! 不懂的部分我再研究看看
04/13 20:31, 11F
※ 編輯: joiedevivre (140.116.215.107), 04/13/2015 20:34:06 ※ 編輯: joiedevivre (140.116.215.107), 04/13/2015 20:38:20 啊啊 還有如果使用這段code 在大寫鎖定模式下 m j k l等按鍵都還是只會輸出小寫... 是不是要再加入一個if caps on的if 還是有其它解法? 謝謝 ※ 編輯: joiedevivre (140.116.192.21), 04/14/2015 11:07:55
文章代碼(AID): #1LAvgZMv (EzHotKey)
文章代碼(AID): #1LAvgZMv (EzHotKey)