一个基于 Tauri + React + Rust 开发的现代化鼠标手势识别应用,支持全局手势监听和自定义快捷键绑定。
- 全局鼠标监听: 支持监听鼠标右键、中键、侧键(X1/X2)的按下和释放事件
- 智能手势识别: 识别四个基础方向(上↑、下↓、左←、右→),准确率 ≥90%
- 快捷键绑定: 将手势与系统快捷键绑定,实现快速操作
- 向上手势 → 复制 (Ctrl+C)
- 向下手势 → 粘贴 (Ctrl+V)
- 向右手势 → 关闭窗口 (Alt+F4)
- 灵活配置: 可自由启用/禁用任意触发键
- 系统托盘: 最小化至系统托盘,提供快捷操作菜单
- 抖动过滤: 自动过滤 5px 以内的微小抖动
- 全屏检测: 在全屏应用(如游戏)中自动暂停手势识别
- 方向容错: 允许 ±15° 的方向误差,提高识别准确率
- 最小距离: 移动距离需 ≥50px 才触发识别,避免误操作
- React 18 - 用户界面框架
- TypeScript - 类型安全的 JavaScript
- Vite - 快速的前端构建工具
- CSS3 - 现代化 UI 样式
- Rust - 高性能系统级编程语言
- Tauri 2 - 跨平台桌面应用框架
- rdev - 全局鼠标事件监听
- enigo - 键盘事件模拟
- Windows API - 全屏窗口检测
- Node.js 18+ 或 Bun
- Rust 1.70+
- Windows 10/11(当前版本针对 Windows 优化)
- 克隆项目
git clone <repository-url>
cd mousein- 安装依赖
# 使用 npm
npm install
# 或使用 bun
bun install- 运行开发服务器
# 使用 npm
npm run tauri dev
# 或使用 bun
bun run tauri dev# 使用 npm
npm run tauri build
# 或使用 bun
bun run tauri build构建产物位于 src-tauri/target/release/bundle/ 目录。
- 启动应用: 运行程序后会自动最小化到系统托盘
- 打开主窗口: 点击托盘图标或通过托盘菜单选择"显示主窗口"
- 执行手势:
- 按住触发键(如鼠标右键)
- 向目标方向拖动鼠标(≥50px)
- 松开按键,自动识别并执行对应动作
- 显示当前状态(已启用/已暂停)
- 快速切换启用/暂停
- 查看最近执行的手势
- 显示当前配置摘要
- 启用/禁用各个触发键
- 鼠标右键
- 鼠标中键
- 鼠标侧键 X1(后退)
- 鼠标侧键 X2(前进)
- 查看所有预设手势
- 查看手势绑定的快捷键
- 了解手势识别参数
- 显示主窗口: 打开配置界面
- 暂停/恢复: 快速切换手势识别状态
- 退出: 关闭应用
-
手势识别测试
- ✓ 按住右键向上拖动 → 触发复制功能
- ✓ 在记事本、浏览器等应用中验证有效
- ✓ 移动距离不足时不触发
-
触发键管理
- ✓ 禁用触发键后,该按键无法触发手势
- ✓ 至少保留一个启用的触发键
- ✓ 无资源占用异常
-
运行保障
- ✓ 系统托盘正常响应操作
- ✓ 暂停/恢复功能正常工作
- ✓ 全屏游戏时自动暂停,无干扰
- CPU 占用率(空闲): < 1%
- 内存占用: < 50MB
- 手势响应延迟: < 100ms
mousein/
├── src/ # React 前端源码
│ ├── App.tsx # 主应用组件
│ ├── App.css # 应用样式
│ └── main.tsx # 入口文件
├── src-tauri/ # Tauri/Rust 后端
│ ├── src/
│ │ ├── lib.rs # 核心逻辑实现
│ │ └── main.rs # 程序入口
│ ├── icons/ # 应用图标
│ ├── Cargo.toml # Rust 依赖配置
│ └── tauri.conf.json # Tauri 配置文件
├── package.json # 前端依赖配置
└── README.md # 项目说明文档
使用 rdev 库实现跨平台的全局鼠标事件监听,支持:
- 按钮按下/释放检测
- 鼠标移动轨迹捕获
- 触发键过滤
// 基于角度的方向判断
// 右: -15° ~ 15°
// 下: 75° ~ 105°
// 左: 165° ~ 180° 或 -180° ~ -165°
// 上: -105° ~ -75°使用 enigo 库模拟键盘输入,支持:
- 组合键(Ctrl+C、Ctrl+V)
- 功能键(Alt+F4)
- 自定义快捷键扩展
可在 lib.rs 中调整以下参数:
const MIN_GESTURE_DISTANCE: f64 = 50.0; // 最小手势距离(像素)
const MOVEMENT_THRESHOLD: f64 = 5.0; // 抖动过滤阈值(像素)
const ANGLE_TOLERANCE: f64 = 15.0; // 方向误差容忍(度)- 支持更多手势方向(对角线、多段轨迹)
- 自定义手势绑定
- 手势轨迹可视化
- 跨平台支持(macOS、Linux)
- 配置文件导入/导出
- 手势历史记录
- 更多快捷键预设
MIT License
欢迎提交 Issue 和 Pull Request!
- 管理员权限: 某些应用可能需要管理员权限才能接收输入
- 防病毒软件: 可能会误报,需要添加信任
- 游戏兼容性: 部分游戏可能会屏蔽全局钩子
- 输入法冲突: 在某些输入法激活时,快捷键可能无效
如有问题或建议,请通过以下方式联系:
- GitHub Issues
- Email: your-email@example.com
Made with ❤️ using Tauri, React, and Rust