Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoordKey

把键盘快捷键绑定到屏幕坐标

按下单键或组合键,就在你录下的位置触发鼠标点击。 专为 Canvas 应用Web 游戏重复性 UI 操作 设计的生产力工具。

Release License: MIT Manifest V3 Permissions Build

中文 | English


🖼️ 界面预览

CoordKey 提供直观的可视化操作界面,让你在录制坐标和管理快捷键时一目了然。

1. 主面板与方案管理
切换不同布局方案,管理快捷键列表
2. 录制与标记
可视化十字准星与屏幕坐标标记
3. 详细设置
微调点击间隔与触发行为
主面板界面 录制界面 设置界面

💡 为什么选择 CoordKey?

市面上有许多自动点击工具,但 CoordKey 专注于解决特定场景下的痛点

  • 🎨 攻克 Canvas 自动化难题 传统的 DOM 自动化工具无法识别 <canvas> 内的元素(如 Figma 类应用、Web 游戏、在线白板)。CoordKey 基于坐标映射,无论 UI 是如何渲染的,只要鼠标能点,CoordKey 就能复现。
  • ⚡ 真正的“零构建”与隐私安全 无需 Node.js 环境,无需打包。克隆即用。仅申请 storage 权限,不使用 chrome.debugger绝无“已开始调试此浏览器”的烦人提示条。
  • ⌨️ 键盘即鼠标 将繁琐的连点操作映射为单键或组合键(如 Shift+H),释放你的右手,让工作流更极客。

🚀 核心功能

1. 坐标绑定与快捷键

  • 单点触发:录制一个坐标,绑定一个按键。
  • 组合键支持:支持 Ctrl / Shift / Alt 等组合键,自动拦截浏览器保留键冲突。
  • 可视化标记:在页面上生成不干扰操作的浮层标记(如 H, 1 ⇧H),所见即所得。

2. 顺序连点组 (Macro)

  • 多步录制:一次录制多个坐标点,按顺序自动执行。
  • 智能间隔:支持设置全局统一间隔,也支持为每一步设置逐步间隔(例如:点击“保存”后等待 2秒 页面刷新,再点击下一步)。
  • 重复执行:可为每组设置执行次数与轮间间隔,适合需要循环触发的场景(如连点、批量操作)。
  • 防误触机制:播放中再次按键可取消剩余步骤;标签页切后台自动停止。

3. 多方案适配 (Responsive)

  • 布局隔离:针对同一网站的不同布局(如 16:9 窗口化 vs 21:9 最大化),创建不同的“方案”。
  • 一键切换:通过下拉框瞬间切换整套坐标映射,无需重新录制。

🛠️ 安装与使用

安装指南

本项目采用零构建架构,无需依赖安装。

  1. 克隆或下载本仓库到本地。
  2. 打开 Chrome 浏览器,访问 chrome://extensions
  3. 右上角开启 “开发者模式”
  4. 点击 “加载已解压的扩展程序”,选择本仓库根目录。

快速上手

  1. 启动:打开目标网页,点击右下角 CoordKey 图标展开面板。
  2. 录制:点击 “+ 录制快捷键” -> 在页面点击目标位置(可连点多步) -> 按下键盘按键绑定。
  3. 使用:按下绑定的键,即可在对应位置触发点击。

⚙️ 技术原理与限制

为了保证透明度和预期管理,请了解以下技术细节:

特性 说明
事件类型 使用合成鼠标事件 (MouseEvent)。大多数网页响应正常,但部分校验 isTrusted === true 的银行/安全页面可能无效。
坐标计算 Canvas:存储归一化比例,抗缩放。
普通网页:存储视口像素,页面重排可能导致偏移。
焦点要求 必须在页面内(不能聚焦在地址栏或 DevTools)。
Iframe 不支持在 Iframe 内部使用,需在顶层页面运行。

📦 版本

1.0.0 是 CoordKey 的首个正式版本。 在此之前它以 KeyClick 为名做了一段时间的功能验证,1.0.0 同时完成了改名与存储格式定稿。

这里有两个各自独立演进的版本号,排查问题时请先分清是哪一个:

当前值 来源 含义
app 版本 1.0.0 manifest.jsonversion(semver) 扩展本身的版本。界面标题右侧的徽标、导出文件里的 appVersion 都读它,代码里没有第二份硬编码。
配置 schema 版本 1 src/shared/protocol.jsVERSION(整数) 存储格式的版本,写在 chrome.storage.local 的数据里。

两者不联动:加一个功能通常只动 app 版本;只有破坏性的存储结构改动才会让 schema 版本 +1 并追加一个迁移函数。纯加法(新增可选字段)不升 schema 版本。完整策略见 docs/storage.md

由于 1.0.0 把 schema 计数器归零到了 1,此前测试期写入的本地配置(旧 key profile 下的 v1~v3 数据)会被直接忽略并清除,需要重新录制。这是唯一一次不作迁移的归零。


🤝 贡献与开发

欢迎提交 Issue 和 PR!

  • 零构建原则:内容脚本按 manifest.jsonjs 数组的顺序直接加载,共享 self.COORDKEY 命名空间。不要引入打包器或依赖。
  • 存储格式:改动 schema 前请先读 docs/storage.md。归一化必须无损(未知字段靠 spread 保留),Service Worker 只允许翻 settings.enabled 一个布尔,不得把整份 profile 写回。
  • 测试:修改脚本后,请运行 node tools/smoke-content.mjs,必须输出 SMOKE: PASSED。浏览器行为无法自动化(Chrome stable 会静默忽略 --load-extension),请按 docs/manual-checklist.md 手动验收。
  • 图标:如需修改图标,运行 node tools/gen-icons.mjs
  • 打包:运行 node tools/pack.mjs 产出 dist/coordkey-<version>.zip,Chrome Web Store 与 Edge Add-ons 共用这一个包。脚本手写 ZIP、不引依赖也不调外部命令,产物字节可复现。提审要的素材与文案见 store/listing.md

目录结构

manifest.json      # MV3 清单,内容脚本的加载顺序在这里定义
src/
├── background/    # Service Worker(总开关与徽标)
├── content/       # 注入页面的核心逻辑
│   ├── core/      # 快捷键匹配、坐标解析、事件派发、存储、导入导出
│   └── ui/        # 面板、标记浮层、录制交互、样式
└── shared/        # protocol.js:schema 版本、归一化与迁移,SW 与内容脚本共用
docs/              # 存储结构说明、手动验收清单、界面截图
store/             # 商店提审素材清单与文案(Chrome Web Store / Edge Add-ons)
test/demo.html     # 自测页:canvas 点击计数、hover 菜单、输入框
tools/             # 冒烟测试、注入验证、图标生成、打商店包
dist/              # 打包产物,已 gitignore

About

KeyClick 是一个 Chrome 扩展,可以将键盘快捷键绑定到屏幕坐标。只需录制一次位置,即可通过单次按键触发点击。它专为在基于 Canvas 的应用、网页游戏和重复性 UI 工作流中实现自动化而设计。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages