Greasy Fork is available in English.
强大的鼠标手势脚本,支持自定义手势和可视化轨迹
# 鼠标手势 - Tampermonkey 版
一个功能强大的油猴脚本,支持通过鼠标右键手势快速执行各种浏览器操作。
## ✨ 主要功能
### 🎨 可视化手势轨迹
- **实时绘制**:按住右键拖动时显示彩色轨迹
- **实时提示**:绘制过程中显示当前识别的手势
- **自动消失**:松开鼠标后轨迹和提示自动消失
### 🎯 丰富的手势操作
| 手势 | 操作 | 描述 |
|------|------|------|
| ↑ (U) | 滚动到顶部 | 平滑滚动到页面顶部 |
| ↓ (D) | 滚动到底部 | 平滑滚动到页面底部 |
| ← (L) | 后退 | 返回上一页 |
| → (R) | 前进 | 前进到下一页 |
| ↑↓ (UD) | 滚动到顶部 | 快速返回顶部 |
| ↓↑ (DU) | 滚动到底部 | 快速到达底部 |
| ←→ (LR) | 前进 | 前进到下一页 |
| →← (RL) | 后退 | 返回上一页 |
| ↑→ (UR) | 新建标签页 | 在新标签页打开空白页 |
| ↑← (UL) | 关闭标签页 | 关闭当前标签页 |
| ↓→ (DR) | 刷新页面 | 重新加载当前页面 |
| ↓← (DL) | 复制标签页 | 在新标签页打开当前页面 |
### ⚙️ 自定义设置
- **启用/禁用**:可快速开关鼠标手势功能
- **轨迹粗细**:调整手势轨迹线条粗细(1-10px)
- **手势配置**:查看所有手势和对应操作
- **持久化保存**:所有设置自动保存到本地
## 📦 安装方法
### 1. 安装 Tampermonkey
首先需要安装 Tampermonkey 浏览器扩展:
- [Chrome/Edge 版本](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo)
- [Firefox 版本](https://addons.mozilla.org/firefox/addon/tampermonkey/)
### 2. 安装脚本
1. 打开 Tampermonkey 管理面板
2. 点击 "+" 创建新脚本
3. 复制 `mouse-gestures.user.js` 的全部内容
4. 粘贴到编辑器并保存
5. 刷新任意网页即可使用
## 🚀 使用说明
### 基本操作
1. **绘制手势**:在任意网页按住鼠标右键并拖动
2. **实时反馈**:拖动时会显示蓝色轨迹和当前手势
3. **执行操作**:松开右键后自动执行对应操作
4. **取消手势**:绘制过程中按 `ESC` 键取消
### 手势绘制技巧
- ✅ 确保每个方向的移动距离足够(至少 30 像素)
- ✅ 移动速度适中,不要过快或过慢
- ✅ 方向变化要清晰,避免斜线移动
- ✅ 手势轨迹会实时显示,可根据提示调整
### 打开设置面板
**方法一:Tampermonkey 菜单**
1. 点击浏览器工具栏的 Tampermonkey 图标
2. 选择 "⚙️ 鼠标手势设置"
**方法二:控制台命令**
1. 按 `F12` 打开开发者工具
2. 在控制台输入:`mouseGesture.settings.open()`
### 设置选项
#### 基本设置
- **启用鼠标手势**:总开关,可快速禁用/启用功能
- **轨迹粗细**:调整手势轨迹的线条粗细(1-10px)
#### 手势配置
- 显示所有预定义的手势和对应操作
- 方便查询和记忆手势
#### 按钮操作
- **重置默认**:恢复所有设置为默认值
- **保存设置**:保存当前配置(需要刷新页面生效)
## 🎮 控制台命令
打开浏览器控制台(F12),可以使用以下命令:
```javascript
// 打开设置面板
mouseGesture.settings.open()
// 启用手势
mouseGesture.enable()
// 禁用手势
mouseGesture.disable()
// 重置为默认设置
mouseGesture.reset()
// 查看当前配置
console.log(mouseGesture.config)
```
## 🔄 与 Chrome 扩展版的区别
### 功能差异
| 功能 | Chrome 扩展版 | Tampermonkey 版 |
|------|--------------|-----------------|
| 手势识别 | ✅ | ✅ |
| 可视化轨迹 | ✅ | ✅ |
| 滚动操作 | ✅ | ✅ |
| 前进/后退 | ✅ | ✅ |
| 刷新页面 | ✅ | ✅ |
| 新建标签页 | ✅ | ✅ (使用 GM_openInTab) |
| 关闭标签页 | ✅ | ✅ (使用 window.close) |
| 恢复标签页 | ✅ | ❌ (浏览器限制) |
| 防止关闭最后标签 | ✅ | ❌ (浏览器限制) |
| 自定义配置 | ✅ (独立页面) | ✅ (弹窗面板) |
### 技术实现
**Chrome 扩展版:**
- 使用 `chrome.tabs` API 管理标签页
- 使用 `chrome.storage` API 存储配置
- 使用 Service Worker 后台脚本
- 需要申请多个权限
**Tampermonkey 版:**
- 使用 `GM_openInTab` 打开新标签页
- 使用 `GM_setValue/GM_getValue` 存储配置
- 所有逻辑在单个脚本中完成
- 更轻量,更易于分发
### 优势对比
**Chrome 扩展版优势:**
- ✅ 可以管理所有标签页
- ✅ 可以防止关闭最后一个标签页
- ✅ 可以恢复最近关闭的标签页
**Tampermonkey 版优势:**
- ✅ 安装更简单,只需复制粘贴
- ✅ 跨浏览器兼容(Chrome、Firefox、Edge 等)
- ✅ 无需打包和加载扩展
- ✅ 更新更方便
- ✅ 可以与其他油猴脚本协同工作
## ⚠️ 注意事项
### 使用限制
1. **关闭标签页**:使用 `window.close()` 可能在某些页面无效(浏览器安全限制)
2. **新建标签页**:使用 `GM_openInTab` 需要 Tampermonkey 权限
3. **特殊页面**:在 `chrome://`、`about://` 等特殊页面无法使用
4. **刷新生效**:修改设置后需要刷新页面才能生效
### 性能优化
- 手势识别使用动态采样,性能消耗极低
- 画布使用 Canvas API,绘制流畅不卡顿
- 事件监听使用捕获模式,优先级最高
### 兼容性
- ✅ Chrome 88+
- ✅ Firefox 78+
- ✅ Edge 88+
- ✅ 其他基于 Chromium 的浏览器
- ⚠️ 需要 Tampermonkey 4.0+
## 🐛 常见问题
### Q: 手势无法识别?
**A:**
- 确保手势长度足够(至少 30 像素)
- 尝试放慢绘制速度
- 检查是否启用了脚本
- 查看控制台是否有错误
### Q: 右键菜单被屏蔽?
**A:**
- 这是正常现象,拖动绘制手势时会阻止右键菜单
- 如果只是点击右键不拖动,菜单会正常显示
### Q: 新建/关闭标签页无效?
**A:**
- 确保已授予 Tampermonkey 相关权限
- 某些页面出于安全考虑可能限制这些操作
- 尝试在普通网页(非浏览器内置页)使用
### Q: 设置无法保存?
**A:**
- 确保浏览器允许 Tampermonkey 访问本地存储
- 尝试清除浏览器缓存后重试
- 检查 Tampermonkey 是否正常运行
### Q: 如何禁用某个网站?
**A:**
1. 点击 Tampermonkey 图标
2. 找到"鼠标手势"脚本
3. 在当前域名下选择"禁用"
## 🔧 自定义开发
### 添加新手势
编辑脚本中的 `defaultGestures` 对象:
```javascript
const defaultGestures = {
"U": "scrollToTop",
"DRL": "自定义操作", // 添加新手势:下→右→左
// ...
};
```
### 添加新操作
1. 在 `gestureToActionName` 中添加中文名称:
```javascript
const gestureToActionName = {
"自定义操作": "我的操作",
// ...
};
```
2. 在 `executeGesture()` 函数中添加执行逻辑:
```javascript
switch (action) {
case '自定义操作':
// 你的代码
break;
}
```
### 修改样式
编辑脚本中的 CSS 部分,可自定义:
- 轨迹颜色和粗细
- 提示框样式
- 设置面板外观
## 📊 技术架构
### 核心模块
1. **配置管理**:使用 GM API 持久化存储用户设置
2. **手势识别**:基于轨迹点计算方向序列
3. **Canvas 绘制**:实时渲染手势轨迹
4. **事件处理**:监听鼠标和键盘事件
5. **动作执行**:根据手势执行对应操作
### 手势识别算法
- 采样间隔:动态计算(最多 20 个采样点)
- 方向阈值:0.4(提高识别准确性)
- 最小长度:30 像素
- 方向合并:去除连续重复方向
## 📄 许可证
MIT License
## 🙏 致谢
本脚本由 Chrome 扩展版鼠标手势转换而来,感谢原作者的开源贡献!
---
**版本**:v1.0
**文件**:`mouse-gestures.user.js`
**更新时间**:2024年2月
**兼容**:Tampermonkey 4.0+
## 📞 反馈与支持
如有问题或建议,欢迎反馈!