#NoEnv ; ======================================= ; 单击 CapsLock 键切换键盘鼠标模式 ; 长按 CapsLock 键切换大写锁定模式 ; ======================================= $CapsLock:: KeyWait, CapsLock, T.4 if ErrorLevel { KeyWait, CapsLock if (A_PriorKey == "CapsLock") { SetCapsLockState, % GetKeyState("CapsLock", "T") ? "Off" : "On" ToolTip, % "大写锁定: " . (GetKeyState("CapsLock", "T") ? "开启" : "关闭"), , , 13 SetTimer, RemoveToolTip, 1000 } } else { KeyWait, CapsLock MouseMode := !MouseMode ToolTip, % "键盘鼠标模式: " . (MouseMode ? "开启" : "关闭"), , , 13 SetTimer, RemoveToolTip, 1000 } return ; ========================================================= ; 键盘鼠标模式开启、或者按住 CapsLock 键时,有如下快捷键: ; ========================================================= ; w: 向上移动光标 ; a: 向左移动光标 ; s: 向下移动光标 ; d: 向右移动光标 ; j: 发送鼠标左键 ; k: 发送鼠标右键 ; ========================================================= ; 需要更多快捷键的话自己添加到下面两个 #If 之间…… ; ========================================================= #If MouseMode Or GetKeyState("CapsLock", "P") j::LButton k::RButton w::MoveCursor("w") a::MoveCursor("a") s::MoveCursor("s") d::MoveCursor("d") F12::Reload #If MoveCursor(dir, speed := 10) { loop { if Not GetKeyState(dir, "P") break if (dir == "w") MouseMove, 0, speed * -1, 0, R if (dir == "a") MouseMove, speed * -1, 0, 0, R if (dir == "s") MouseMove, 0, speed, 0, R if (dir == "d") MouseMove, speed, 0, 0, R } return } RemoveToolTip: ToolTip, , , , 13 SetTimer, RemoveToolTip, Off return
再提个改进可以吗就是弄个加速度。一开始按的时候,移动很细微,按的时间越长,鼠标加速运动。可以吗,我知道有点难,还是提出来了
———————————————————————————
本来都不想做了……不过想了下好像也不麻烦……大概就这样吧……两种方案,我目前在用第一种功能是 开启鼠标模式或者按住caps键时: wasd还是默认速度移动,shift+wasd可以快速移动光标,第二种是你要的逐渐变快方案……
代码还是上面最后发那版,其他不变,只改我下面发的这两种方案之一(当然你要两个一起改估计也能用)
;方案一改动: #If MouseMode Or GetKeyState("CapsLock", "P") j::LButton k::RButton w::MoveCursor("w") a::MoveCursor("a") s::MoveCursor("s") d::MoveCursor("d") +w::MoveCursor("w", 55) +a::MoveCursor("a", 55) +s::MoveCursor("s", 55) +d::MoveCursor("d", 55) #If ;方案二改动: MoveCursor(dir, speed := 1) { loop { if (A_Index < 100) speed += A_Index * 0.1 if Not GetKeyState(dir, "P") break if (dir == "w") MouseMove, 0, speed * -1, 0, R if (dir == "a") MouseMove, speed * -1, 0, 0, R if (dir == "s") MouseMove, 0, speed, 0, R if (dir == "d") MouseMove, speed, 0, 0, R } return }
代码貌似有问题
这个是每次根据循环的像素点来控制像素的,但是speed太大的话,不就会造成跳过指定像素点的情况吗
你说的是改进的方法吧!这个肯定还是需要改进的!
谢谢分享
客气!