看板 EzHotKey 關於我們 聯絡資訊
大家好, 可能有人看過沒數字鍵的鍵盤(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
LPH66: 單回答你的問題: 把 m:: 前面加上 $ 字, 這表示這組 hotkey 04/13 20:01
LPH66: 只在使用者被按下時觸發, 不會被 Send 觸發 04/13 20:01
LPH66: 初始化的部份直接寫在最上面就好, 記得也要加個 return 04/13 20:02
LPH66: 這樣 script 開啟時就會把初始化的部份先執行過 04/13 20:02
LPH66: 另外切換可以不用 +1 mod 2 兩步, 用 1 去減只要 1 步就好 04/13 20:02
LPH66: 話說回來, 如果你想試 GetKeyState 的話, 要這麼用: 04/13 20:06
LPH66: GetKeyState, var, NumLock, T 04/13 20:06
LPH66: 這之後 var 如果是 "D" 表示亮燈, "U" 表示燈滅 04/13 20:07
LPH66: 主要是那個 , T 各種 Lock 要用這個才可以讀取目前狀態 04/13 20:07
LPH66: 否則它讀取的是目前該按鍵是不是正被按著 04/13 20:08
joiedevivre: 感謝您的指點! 不懂的部分我再研究看看 04/13 20:31
※ 編輯: 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