[caps]键盘实现鼠标功能,单击 CapsLock 键切换键盘鼠标模式 ,长按 CapsLock 键切换大写锁定模式

键盘实现鼠标功能,单击 CapsLock 键切换键盘鼠标模式 ,长按 CapsLock 键切换大写锁定模式
#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]键盘实现鼠标功能,单击 CapsLock 键切换键盘鼠标模式 ,长按 CapsLock 键切换大写锁定模式就是弄个加速度。一开始按的时候,移动很细微,按的时间越长,鼠标加速运动。可以吗,我知道有点难,还是提出来了[caps]键盘实现鼠标功能,单击 CapsLock 键切换键盘鼠标模式 ,长按 CapsLock 键切换大写锁定模式
———————————————————————————

本来都不想做了……不过想了下好像也不麻烦……大概就这样吧……两种方案,我目前在用第一种功能是 开启鼠标模式或者按住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
	}

给TA捐赠
共{{data.count}}人
人已捐赠
其他

在整个注册表中递归搜索特殊值

2018-1-3 13:38:49

其他

弹窗广告自动关闭实例

2018-1-4 15:29:52

5 条回复 A文章作者 M管理员
  1. maxs

    代码貌似有问题

  2. ahker

    这个是每次根据循环的像素点来控制像素的,但是speed太大的话,不就会造成跳过指定像素点的情况吗

    • 河许人

      你说的是改进的方法吧!这个肯定还是需要改进的!

  3. zhuoluo

    谢谢分享

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索