[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