Skip to content

Repository files navigation

🖱️ MouseIn - 鼠标手势识别工具

✨ 1.0 开发中(1.0 Under development)

一个基于 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 优化)

开发环境运行

  1. 克隆项目
git clone <repository-url>
cd mousein
  1. 安装依赖
# 使用 npm
npm install

# 或使用 bun
bun install
  1. 运行开发服务器
# 使用 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/ 目录。

📖 使用说明

基本操作

  1. 启动应用: 运行程序后会自动最小化到系统托盘
  2. 打开主窗口: 点击托盘图标或通过托盘菜单选择"显示主窗口"
  3. 执行手势:
    • 按住触发键(如鼠标右键)
    • 向目标方向拖动鼠标(≥50px)
    • 松开按键,自动识别并执行对应动作

界面功能

🏠 主页

  • 显示当前状态(已启用/已暂停)
  • 快速切换启用/暂停
  • 查看最近执行的手势
  • 显示当前配置摘要

⚙️ 设置页

  • 启用/禁用各个触发键
    • 鼠标右键
    • 鼠标中键
    • 鼠标侧键 X1(后退)
    • 鼠标侧键 X2(前进)

✋ 手势页

  • 查看所有预设手势
  • 查看手势绑定的快捷键
  • 了解手势识别参数

系统托盘菜单

  • 显示主窗口: 打开配置界面
  • 暂停/恢复: 快速切换手势识别状态
  • 退出: 关闭应用

✅ 验收标准

功能验证

  1. 手势识别测试

    • ✓ 按住右键向上拖动 → 触发复制功能
    • ✓ 在记事本、浏览器等应用中验证有效
    • ✓ 移动距离不足时不触发
  2. 触发键管理

    • ✓ 禁用触发键后,该按键无法触发手势
    • ✓ 至少保留一个启用的触发键
    • ✓ 无资源占用异常
  3. 运行保障

    • ✓ 系统托盘正常响应操作
    • ✓ 暂停/恢复功能正常工作
    • ✓ 全屏游戏时自动暂停,无干扰

性能要求

  • 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               # 项目说明文档

🔧 开发说明

核心模块

1. 全局事件监听 (lib.rs)

使用 rdev 库实现跨平台的全局鼠标事件监听,支持:

  • 按钮按下/释放检测
  • 鼠标移动轨迹捕获
  • 触发键过滤

2. 手势识别算法

// 基于角度的方向判断
// 右: -15° ~ 15°
// 下: 75° ~ 105°
// 左: 165° ~ 180° 或 -180° ~ -165°
// 上: -105° ~ -75°

3. 动作执行

使用 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!

⚠️ 注意事项

  1. 管理员权限: 某些应用可能需要管理员权限才能接收输入
  2. 防病毒软件: 可能会误报,需要添加信任
  3. 游戏兼容性: 部分游戏可能会屏蔽全局钩子
  4. 输入法冲突: 在某些输入法激活时,快捷键可能无效

📧 联系方式

如有问题或建议,请通过以下方式联系:


Made with ❤️ using Tauri, React, and Rust

About

使用tauri的鼠标手势工具; Using Tauri's mouse gesture tool

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages