AHK_V2_键盘控制鼠标脚本

环境

AHK v2 需要键盘有数字键盘

代码

; ============================================================================
; 键盘鼠标控制脚本 - 功能列表与操作简介
; ============================================================================
;
; 【功能列表】
; 1. 数字键盘控制鼠标移动(需NumLock关闭)
; 2. 数字键盘控制鼠标点击
; 3. 四级变速控制(Ctrl+1/2/3/4键)
; 4. 鼠标滚轮控制(数字键盘End/PgDn键)
; 5. 脚本启动/暂停/恢复/退出控制
;
; 【操作说明】
;
; 一、鼠标移动控制(需NumLock关闭)
;     NumpadLeft  - 鼠标向左移动
;     NumpadDown  - 鼠标向下移动
;     NumpadRight - 鼠标向右移动
;     NumpadUp    - 鼠标向上移动
;
; 二、鼠标点击控制(需NumLock关闭)
;     NumpadHome  - 鼠标左键(按下/释放)
;     NumpadPgUp  - 鼠标右键(单击)
;
; 三、速度调节(按住时生效,松开恢复默认速度2.0)
;     Ctrl+1 - 最慢速度(0.5倍)
;     Ctrl+2 - 慢速(1.0倍)
;     Ctrl+3 - 中速(4.0倍,默认2.0倍)
;     Ctrl+4 - 快速(8.0倍)
;
; 四、滚轮控制(需NumLock关闭)
;     NumpadEnd  - 滚轮向上
;     NumpadPgDn - 滚轮向下
;
; 五、脚本控制快捷键
;     Ctrl+F1  - 启动脚本(启用鼠标模式)
;     Ctrl+F2  - 暂停脚本(禁用鼠标模式)
;     Ctrl+F3  - 恢复脚本(重新启用鼠标模式)
;     Ctrl+Esc - 退出脚本
;
; 【注意事项】
; - 数字键盘控制功能仅在NumLock关闭时生效
; - 脚本启动时默认启用鼠标模式
; - 鼠标移动速度为相对移动,每10ms执行一次
;
; ============================================================================

#Requires AutoHotkey v2.0
;引入print.ahk
#Include print.ahk

; 定义全局变量
global mouseMode := true
global speed := 2.0
global moveX := 0
global moveY := 0

; 每10ms执行一次MoveMouse函数,函数定义见最下方
SetTimer MoveMouse, 10
print("启动脚本(启用鼠标模式)")

; 绑定数字键盘方向键位,控制鼠标指针的左、下、右、上移动
; 要求:mouseMode == true 且 NumLock 关闭
#HotIf mouseMode and !GetKeyState("NumLock", "T") ; 此行代码以下的键位绑定要求mouseMode == true 且 NumLock 关闭

NumLock::{
    print("NumLock 按键:", mouseMode)
}

NumpadLeft:: {  ; 左
    global moveX
    moveX := -10
    print("; 左")
}
NumpadLeft up:: {
    global moveX
    if (moveX < 0)
        moveX := 0
}

NumpadRight:: {  ; 右
    global moveX
    moveX := 10
}
NumpadRight up:: {
    global moveX
    if (moveX > 0)
        moveX := 0
}

NumpadUp:: {  ; 上
    global moveY
    moveY := -10
}
NumpadUp up:: {
    global moveY
    if (moveY < 0)
        moveY := 0
}

NumpadDown:: {  ; 下
    global moveY
    moveY := 10
}
NumpadDown up:: {
    global moveY
    if (moveY > 0)
        moveY := 0
}

; 设置四级变速,当按住Ctrl+1/2/3/4键位时会改变鼠标移动速度
; 速度以1 2 3 4递增:最慢(0.5) -> 慢速(1.0) -> 中速(4.0) -> 快速(8.0)
; 这些快捷键不需要任何条件,放在脚本控制快捷键之前
#HotIf ; 速度调节快捷键不需要任何条件
^1:: {
    global speed
    speed := 0.5
}
^1 up:: {
    global speed
    speed := 2.0
}

^2:: {
    global speed
    speed := 1.0
}
^2 up:: {
    global speed
    speed := 2.0
}

^3:: {
    global speed
    speed := 4.0
}
^3 up:: {
    global speed
    speed := 2.0
}

^4:: {
    global speed
    speed := 8.0
}
^4 up:: {
    global speed
    speed := 2.0
}

; 控制鼠标点击操作(数字键盘Home、PgUp,要求NumLock关闭)
#HotIf mouseMode and !GetKeyState("NumLock", "T")
; left click
NumpadHome:: {
    Click "Down"
}
NumpadHome up:: {
    Click "Up"
}

; right click
NumpadPgUp:: {
    Click 'R'
}

; 数字键盘End、PgDn键绑定鼠标滚轮向上/向下(要求NumLock关闭)
NumpadEnd:: {
    Click 'WheelUp'
}
NumpadPgDn:: {
    Click 'WheelDown'
}

; 脚本控制快捷键(不需要任何条件)
#HotIf ; 此行代码以下的任何键位绑定不需要任何要求
^F1:: {  ; 启动脚本
    global mouseMode
    mouseMode := true
    SetTimer MoveMouse, 10
    print("启动脚本(启用鼠标模式)")
}

^F2:: {  ; 暂停脚本
    global mouseMode
    mouseMode := false
    SetTimer MoveMouse, 0
    global moveX, moveY
    moveX := 0
    moveY := 0
    print("暂停脚本(禁用鼠标模式)")
}

^F3:: {  ; 恢复脚本
    global mouseMode
    mouseMode := true
    SetTimer MoveMouse, 10
    print("恢复脚本(重新启用鼠标模式)")
}

^Esc:: {  ; 退出脚本
    print("退出脚本")
    ExitApp
}

MoveMouse() {
    global moveX, moveY, mouseMode, speed
    if ((moveX or moveY) and mouseMode) {
        MouseMove(moveX * speed, moveY * speed, 0, "R")

        print("MoveMouse real")
    }
}

点赞

本文标签: AHK

版权声明:本博客所有文章除特别声明外,本文皆为《shiver blog》原创,转载请保留文章出处。

本文链接:AHK_V2_键盘控制鼠标脚本 - https://www.binary-monster.top/article/82

1

发表评论

电子邮件地址不会被公开。 必填项已用*标注