Skip to content

imshonechen/OxyClick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OxyClick

OxyClick 是一个面向 Windows 的键鼠连点器项目,使用 Rust 构建,目标是提供稳定、可配置、中文界面的桌面自动点击与按键触发工具。

当前仓库已经具备可直接运行的 GUI、真实 SendInput 输入后端、全局热键、TOML 配置持久化,以及适合日常使用的基础交互流程。

当前已实现

  • 基于 eframe/egui 的 Windows 桌面 GUI,默认中文界面。
  • 鼠标左键、右键、中键自动点击。
  • 键盘按键支持单键、组合键统一录制与触发;组合键规则为“多个修饰键 + 一个常规键”。
  • 无限 / 计数 / 限时 三种运行模式。
  • 切换 / 按住 两种触发模式。
  • 可自定义全局热键,默认:
    • 开始:F6
    • 停止:F7
    • 紧急停止:Ctrl+Alt+Pause
  • 热键输入框支持直接录制:点击输入框后直接按键即可获取组合键;常规键只能有一个,Ctrl / Alt / Shift / Win 可多个并作为修饰键;Tab / Esc 不会保存,Esc 会立即取消当前录制;切到其他程序窗口时会暂停录制,回到本程序窗口后继续;再次点击当前输入框或点击其他位置会退出录制,紧急停止支持一键清空。
  • 热键后端优先使用 Low-Level Keyboard Hook,失败时自动回退到 GetAsyncKeyState 轮询方案。
  • 表单修改会立即写入内存,并自动用于下一次启动。
  • Ctrl+S 或界面上的“保存到本地”会把当前配置写入 config.toml
  • 点击“保存到本地”或按 Ctrl+S 后,按钮会短暂显示“保存中”,用于确认保存已触发。
  • 支持启动前延迟倒计时,默认 3000 ms,用于在点击“开始运行”后预留切回目标窗口或移开鼠标的时间。
  • 支持“目标窗口失去焦点时自动停止”:运行开始后会锁定当前目标前台窗口,一旦切走就自动停止。
  • 顶部状态区可显示运行状态、执行次数、执行时长。
  • 配置文件支持自动创建、自动加载、旧配置中文迁移。
  • Release 版本可直接编译为 target\release\oxyclick.exe

快速上手

  1. 在“配置编辑”里先选择动作类型。
  2. 如果是鼠标连点,选择左键、右键或中键;如果是键盘连发,点击“按键录制”后直接按下目标按键或组合键。
  3. 根据需要设置运行模式、间隔、按下时长、抖动和启动前延迟。
  4. 点击“开始运行”,或使用开始热键 F6 启动。
  5. 如果当前配置想长期保留,再点击“保存到本地”或按 Ctrl+S 写入配置文件。

当前界面说明

  • 顶部操作区:大号“开始运行 / 停止运行 / 取消启动”主按钮,以及“保存到本地”按钮。
    • 保存成功后,按钮会短暂变为“保存中”并做 1 秒渐变反馈。
  • 状态行:横向展示 运行状态 / 执行次数 / 执行时长
  • 左侧卡片“配置编辑”:
    • 触发模式
    • 运行模式
    • 动作类型
    • 键盘按键录制
    • 间隔
    • 按下时长
    • 抖动
    • 启动前延迟
  • 右侧卡片“热键与安全”:
    • 开始热键:点击后直接按下快捷键录制
    • 停止热键:点击后直接按下快捷键录制
    • 紧急停止热键:支持录制与清空
    • 失焦自动停止:目标窗口一旦失去前台焦点就自动停止

补充说明:

  • “计数 / 限时”模式会额外显示对应参数输入项。
  • “键盘按键”动作会显示录制框,鼠标动作则显示按钮选择。
  • 点击任意录制输入框后,如果再点击其他位置,会立刻退出录制状态。
  • 录制组合键时,字母键 / 数字键 / 符号键只能出现一个;像 A+11+.Ctrl+A+1 这类不会提交。
  • 常用符号键与小键盘符号键支持直接录制,例如 - / . [ ] ; ' ,NumAdd / Num- / Num* / Num/ / Num.

配置行为

  • 当前只有一套活动配置,但底层结构已经按多预设组织。
  • 表单修改后不需要额外点击“应用配置”。
  • 只要当前表单合法,下一次启动就会直接使用最新内存配置。
  • 点击“保存到本地”或按 Ctrl+S,才会把配置持久化到磁盘。
  • 保存成功时,顶部按钮会提供短暂的视觉反馈;不依赖额外弹窗或状态条。

配置文件位置

  • 首选:%APPDATA%\OxyClick\config.toml
  • 回退:项目目录下的 config\config.toml

如果目标路径不存在,程序会自动创建默认配置文件。

本地运行

cargo test
cargo run
cargo run -- --headless-summary
cargo build --release
  • cargo test:运行单元测试。
  • cargo run:启动桌面 GUI。
  • cargo run -- --headless-summary:输出启动摘要,适合快速检查程序是否能正常初始化。
  • cargo build --release:生成发布版可执行文件 target\release\oxyclick.exe

发布版说明

  • target\release\oxyclick.exe 为主要发布产物。
  • Release 构建启用了 Windows GUI 子系统,正常启动时不会额外弹出终端窗口。
  • 如果启动失败,程序会使用 Windows 消息框显示错误信息。
  • 仓库已支持 GitHub Actions 自动发布:推送语义化版本标签 vMAJOR.MINOR.PATCH 后,会在 windows-latest 上自动执行测试、编译 Release,并把产物同步到 GitHub Releases。
  • 当前 Release 附件命名遵循常见约定:
    • 可执行文件:OxyClick-v1.0.0.exe
    • 校验文件:OxyClick-v1.0.0-sha256.txt

GitHub 发布流程

推荐使用标准语义化版本(SemVer):

  • 正式版:v1.0.0
  • 修复版:v1.0.1
  • 小功能版:v1.1.0
  • 大版本:v2.0.0
  • 预发布版:v1.1.0-rc.1

发布步骤:

  1. 先把 Cargo.toml 中的 version 更新为对应版本号,例如 1.0.0
  2. 提交并推送代码到远端分支。
  3. 创建并推送标签:
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0

标签推送后,GitHub Actions 会自动:

  • 校验标签 v1.0.0 是否与 Cargo.toml 中的 1.0.0 一致
  • 运行 cargo test --locked
  • 运行 cargo build --locked --release
  • 生成 OxyClick-v1.0.0.exe
  • 生成 OxyClick-v1.0.0-sha256.txt
  • 创建或更新右侧的 GitHub Release,并上传上述附件

注意事项

  • OxyClick 会发送真实输入事件,建议先在安全的测试环境中验证。
  • “启动前延迟”只在以下场景生效:
    • 通过界面上的“开始运行”启动
  • 无论当前动作是鼠标还是键盘,只要是通过界面按钮启动,都会应用“启动前延迟”。
  • 如果你是用鼠标点击“开始运行”,建议至少保留较明显的启动前延迟;默认值 3000 ms 能避免程序刚启动就再次点到自己的按钮。
  • 如果开启“目标窗口失去焦点时自动停止”,程序会在真正开始运行后锁定一个目标前台窗口;从 OxyClick 界面启动时,建议配合启动前延迟一起使用。
  • 如果目标程序以管理员权限运行,OxyClick 通常也需要以管理员身份启动。
  • 某些独占全屏、反作弊或驱动级拦截场景,不承诺完全兼容。

常见使用建议

  • 鼠标连点可以先从默认配置开始:无限 + 左键 + 100 ms 间隔 + 10 ms 按下时长 + 10 ms 抖动 + 3000 ms 启动前延迟
  • 键盘连发建议优先使用录制框录制真实组合键,不要手工猜测按键名称;推荐把组合键理解为“修饰键 + 一个主键”。
  • 如果要长时间运行,优先设置好“停止热键”和“紧急停止”。
  • 修改表单后可以先直接试运行,确认没问题再保存到本地。

计划开发功能

  • 多预设管理:保存不同点击节奏,快速切换。
  • 导入导出配置。
  • 管理员权限与热键冲突的前置提示。

文档

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages