# 鼠标手势
本文档适用的Quicker版本:1.28.20+。
# 概述
按住鼠标键在屏幕上画出曲线即可立即触发操作。

手势触发作为一种直接触发方式,有这些优点:
- 触发直接迅速;
- 操作数量不受限制;
- 触发位置比较随意,不需要仔细定位;
它也有缺点:
- 初期需要花一些成本主动记忆和形成习惯。
相比较而言,[轮盘菜单](https://getquicker.net/KC/Manual/Doc/circle-menu)功能使用可视化方式选择动作,不太需要记忆,只是轮盘上位置数量有些限制。如果您不需要特别多的手势操作,也可以直接使用轮盘菜单功能,将轮盘扩展圈的8个方向作为手势功能的替代。
**免费版与专业版的区别**
💡 免费版限制:
(1)8个手势轨迹。
(2)按键触发限制2条规则。
**其他参考教程**
网友@瓜皮之牙分享的手势功能参考:
- [基础手势功能介绍与建议](https://getquicker.net/Guides/Guide?id=52593d69-c99a-4367-8b98-08d9a65be47e&step=306d5f0d-30fc-46e0-3404-08d9b7b1cc43)
- [Quicker手势:形状及功能备忘](https://www.yuque.com/gpzy/quicker/quicker-gesturememo)
- [Quicker手势终极演示(总结版)](https://www.yuque.com/gpzy/quicker/quicker-gesture)
**一般建议**
- 逐步添加手势轨迹。添加尽量少的轨迹,操作熟练以后再增加更多。
- 手势轨迹的形状/方向和要触发的动作最好有某种关联关系,可以方便记忆形成习惯。
# 快速开始
**(1)开启触发按键。**

**(2)在手势管理界面中添加手势轨迹。**

**(3)在“全局”场景中为手势添加默认的触发动作(双击轨迹或通过右键菜单)。**

像这样添加要执行的动作:

**(4)触发手势**
按住设定的鼠标键绘制手势图形,识别到手势后(线条变色)松开鼠标即可立即触发对应的操作。

**(5)重复触发**
识别到手势后,松开鼠标之前,按F1键可立即触发当前识别的操作。连续按F1可重复触发。

可以在设置中自定义一个额外的重复触发键(键盘按键或鼠标键)。
# 管理手势轨迹和动作
## 概念
### 手势轨迹(简称“手势”)
定义了一条用于触发特定操作的曲线。

### 手势动作
绘制轨迹后要触发的操作。
同一个手势轨迹,在不同的程序下可以触发不同的功能。
### 全局手势动作与应用程序手势动作
根据手势要触发的动作的生效范围,可以分为几种情况:
**(1)所有位置都有效**
例如:
- 窗口操作:关闭窗口、最大化、最小化、置顶...
- 通用快捷键:复制、粘贴、全选、删除、静音、截图、前进、后退...
- 一些通用的Quicker动作:搜索选中内容
对这类手势,在“全局”场景下为其设定动作即可。

**(2)仅对某个程序有效**
例如:为Chrome浏览器设置一个 `↰` 手势实现“撤销关闭的标签”功能。该功能只在Chrome浏览器中有效。
对于这类手势,只在要生效的程序场景中为其设置动作即可。

**(3)默认+特殊**
有些情况下,同一个功能在不同的软件中需要使用不同的快捷键来触发。
例如:希望使用`↳`手势关闭标签/文档。在大部分程序中都是使用快捷键`Ctrl+W`来触发,但是在VisualStudio软件中需要使用`Ctrl+F4`,可以这样设置:
- 在“全局”场景中,为`↳`设置动作:模拟 `Ctrl+W`
- 在 VisualStudio 软件的场景中,为 `↳` 设置动作:模拟 `Ctrl+F4`
(在程序场景中设置的动作具有更高的优先级)
在应用程序场景的手势列表中,如果手势轨迹的背景为淡黄色,表示已经在全局场景中为该手势设置了动作,在当前场景下设置将会覆盖全局场景中设置的规则。

上述示例图中 4 个轨迹分别对应 4 种情况:
(1)在全局场景中设置了动作,并且在当前程序场景中覆盖了全局场景中的动作。
(2)在全局场景中设置了动作。
(3)全局场景未设置,当前程序场景中设置了动作。
(4)全局场景和当前程序场景都没有设置动作。
### 直接触发与按键触发
有一些操作具有某种关联性,例如:
- “切换静音”和“调节音量”
- “关闭标签页”和“关闭窗口”
- “保存”和“保存所有”
如果可以把这些有关联的操作使用同一个手势触发,就可以避免设置和记忆大量的手势轨迹。
手势的“**按键触发**”功能便是为实现这一需求而设计。它实现的效果是:当您绘制一个手势轨迹时,便进入了一种特殊的操作状态中。在这个状态下,按键盘或鼠标的任意键,甚至是滚动鼠标滚轮,都可以触发不同的操作。而且“按键触发”功能支持还连续触发,在松开手势之前,可以使用按键连续触发操作。
与之对应,我们把“按下鼠标按键 ➜ 绘制轨迹 ➜ 松开鼠标” 这种基础的操作方式称为“**直接触发**”。
在轮盘菜单中,也支持类似的[直接与按键触发](https://getquicker.net/KC/Manual/Doc/circle-menu#Gnswu)功能。
假如我们要使用“V”型轨迹实现这一效果:
- 直接触发:切换静音;
- 鼠标滚轮:调节音量;
可以这样设置:
**(1)直接触发(基础触发)**

**(2)按键触发(演示)**
可以定义在识别手势后,按键盘键、鼠标键或滚动鼠标滚轮时触发不同的操作。
下面的这个手势在按键触发中定义了用滚轮调解音量的功能:

最终实现效果:

### 使用动作自定义按键处理逻辑
假设要实现临时使用左侧键盘输入数字的功能(WER=>789,SDF=>456,XCV=>123,Z=.,空格=0)。
我们可以通过为每个按键添加规则来实现,就像这样:

但是这样需要对每个用到的键添加一遍规则,设置会比较繁琐。
通过在组合动作中设置按键的映射关系,直接通过词典查找按键对应的数字则方便的多,只需要2步骤就可以实现对按键的统一处理。请参考《[左侧数字](https://getquicker.net/Sharedaction?code=5a270310-b784-41f3-857b-08d9d89429cb)》动作。

定义好动作后,我们可以手势的按键触发中添加一条按键为“任意键”的规则即可。

实现的效果:

## 打开手势管理界面
您可以在两个位置管理手势:
1)设置窗口的“手势管理”设置页

2)场景与动作管理页面的手势操作管理标签页

## 添加手势轨迹
需要先添加可用的手势轨迹,然后再给图形设置触发的操作。
在手势管理界面中点击“添加手势轨迹”按钮(1)。

然后在弹出的界面中选择使用预定义的手势或绘制自定义手势轨迹。

小技巧:如需绘制完美曲线,可以使用动作“[手势小助手](https://getquicker.net/Sharedaction?code=6e668dca-6d58-409c-9d2e-08d98ae738af)”
### 重绘手势轨迹
对于自己绘制的手势轨迹,可以重新绘制。在图形上点击鼠标右键,从菜单中选择“重绘手势”即可。

### 删除手势轨迹
先去除手势轨迹上设置的动作,然后在图形上右键菜单中选择“删除手势轨迹”即可。

## 为手势轨迹设置动作
### 默认操作与场景特定操作
在左侧的场景列表中选择**“默认”**或**“全局”、“通用”**,可设置各个手势轨迹的默认触发的操作。
- 可选择“默认禁用手势”,然后在特定场景下开启手势功能。

根据需求,可以在特定的应用程序场景覆盖覆盖默认的触发动作。

在左侧选择场景名称,然后在右侧为图形设置动作即可。
- 带有淡黄色背景的手势轨迹表示已经设置了默认的触发动作。
- 蓝色线条的手势轨迹表示在当前场景下设置了触发动作。
- 选择“在此软件下禁用手势”,可以将当前场景加入手势黑名单。
### 设置手势轨迹的触发动作
双击手势轨迹,或在手势轨迹上右键,在菜单中选择“设置动作”即可在弹出的窗口中设置该图形所触发的操作。

这里的设置与轮盘菜单、左键辅助等功能一致。

其中,【操作名称】参数用于在绘制手势时提示触发的操作内容,建议填写。

必要时,设置按键触发规则。

也可以从面板窗口、场景设置窗口中,将动作拖放到手势轨迹上。

### 清除动作
在手势轨迹上点击右键,从菜单中选择“去除动作”即可。

### 规则继承
自1.38.8版本,支持在应用程序场景中继承全局场景中的规则。
(1)直接触发的操作类型可选“-继承全局-”。

(2)按键触发规则自动继承全局规则中的设置。
# 参数设置
### 触发键
**设置触发键后才能启动手势功能。**
请注意不要和弹出面板触发方式、轮盘触发方式,以及第三方手势软件等冲突。

### 选项
**激活轨迹开始位置窗口:**画手势时,是否将开始位置的窗口设置为前台窗口。这是两种不同的操作习惯:
- 开启时:开始绘制的位置是要操作的目标窗口。
- 关闭时:无论在哪里绘制手势都针对当前的前台窗口操作。
**显示手势轨迹:**绘制时是否显示轨迹曲线。
**显示文字提示:**是否实时显示当前识别的轨迹将要触发的操作内容的文字(如下图中的“关闭窗口”)。

**在固定位置显示提示文字:**在屏幕的固定区域显示文字提示,而不是跟随鼠标。
注:按键触发规则的提示都会在固定位置显示。
**渐变消除轨迹:**绘制完成后,手势轨迹逐渐消除(100-200ms)。
**允许按键确认并将键值作为参数传递给动作:**
识别手势后,松开鼠标之前按键:立即结束手势,并将键名传递给要触发的动作。
- 会立即结束手势状态,不适合需要多次触发的情况。
- 此功能开发较早,最新的按键传值建议使用“[按键触发](#MagrJ)”功能。
注意事项:
- 绘制手势完成后,抬起鼠标之前按下键盘按键(类似于左键辅助)。
- 在手势设置中,不能给动作指定别的参数。
- 传递给动作的参数值为按键的**名称**,请参考[ Keys 文档](https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.keys?view=net-5.0)。也可以在动作中增加提示信息等方式查看键值参数。
- 如按键A对应的键值名称为A,数字区按键1对应的键值名称为NumPad1。
- 在动作中,从动作参数变量(quicker_in_param)获取按下的键值名称,并根据它来执行不同的操作(使用“如果”模块判断)。
注:早期版本中,按下左键会取消手势。启用本选项后,左键改为确认手势并传递键值给动作。
**最低匹配度:**识别手势时对轨迹匹配程度的要求。高于设定的值时才认为绘制了对应的手势。
- 匹配度要求越高:要求绘制越精准。
- 匹配度要求越低:越容易触发,但是也可能匹配到不正确的手势轨迹。
**未识别轨迹颜色:**未匹配到手势轨迹时显示的轨迹颜色。
**成功识别轨迹颜色:**成功匹配到手势轨迹是现实的轨迹颜色。
**轨迹宽度:**轨迹的线条宽度。
**备选提示延迟时间:**手势绘制过程中停住鼠标多长时间后显示近似匹配的手势操作列表。
**重复触发按键:**在`F1`之外设置一个键盘或鼠标键用于立即和重复触发当前手势动作。
# 使用
## 基本使用
按住设定的触发键后**立即**绘制手势即可。

识别成功线条会使用蓝色表示并显示识别出的操作名称。
## 手势提示
如果识别不正确或想不起手势了,可以**停住鼠标一会儿**,这时候会显示最匹配的几个手势:

将鼠标移动到某个手势上后松开即可触发此手势。 直接松开将取消手势操作。
## 取消手势
- 继续绘制出一个无法识别的图形。
# 触发额外的手势设置
在高级鼠标触发中,可以使用`引导键+按住鼠标键移动`或`长按之后移动`触发单独的手势规则,以实现相同的轨迹图形触发不同动作的目的。
**1)创建场景,并在该场景中为手势轨迹设置动作。**

**2)在高级鼠标触发中添加规则。**
2.1)方式一:引导键 + 按下鼠标并立即移动

设置完成后,即可通过按住Ctrl+右键划线实现下拉打开记事本了:

需要注意,如果引导键为Ctrl/Alt/Shift,在触发的动作中应避免模拟按键或者在触发动作之前松开这些引导键,以避免动作中模拟的按键和这些引导键结合成新的快捷键组合,意外触发其它功能。
2.2)方式二:使用长按后移动(需1.38.23+版本)

设置好后,长按设定的鼠标按键到达(长按触发时间),会在鼠标指针位置显示一个蓝色的圆点。 此时可以移动鼠标开始绘制手势。

# 常见问题
**问:对比浏览器手势功能有什么优点?**
一些浏览器自带手势或或者可以用插件实现手势功能,但是它们有这些问题:
- 在一些界面上无法使用(如浏览器设置页等);
- 仅能触发浏览器预置的基础功能,无法实现自定义需求;
Quicker这样的全局手势软件则没有这个限制。
**问:对比第三方手势软件有什么特色?**
市面上也有很多优秀的手势软件产品。如果您之前已经正在使用某个手势软件,可以继续使用它。在这些软件中可以通过[外部启动](https://getquicker.net/kc/manual/doc/quicker-starter)方式运行Quicker动作。
相对于第三方手势软件,使用Quicker内置手势功能会带来这些好处:
- 利用Quicker强大的组合动作功能更自由的实现您的特殊需求。
- 与其他触发方式协同使用。Quicker提供了非常全面的触发方式,让您在不同的场景下使用更合适的触发方式触发操作。
- 自动同步设置。
- 避免同时使用手势软件和Quicker软件带来的负面影响:
- 避免鼠标挂钩冲突。Quicker和鼠标手势软件都会使用鼠标Hook挂钩,一个软件拦截到鼠标消息,另一个软件就无法触发。
- 避免从外部启动动作造成的性能损失。外部启动需要通过Windows和starter程序中转请求,会有一些时间损耗。
# 问题排查
## 情况一:所有位置都无法触发
0)检查触发键设置。

1)对于罗技等自带驱动的鼠标,检查驱动软件(如Logi options+)中是否为目标鼠标键设置了特殊规则。
2)检查是否默认关闭了手势功能。

3)如果有其他使用鼠标挂钩的软件或AHK脚本,退出它们排查是否有干扰。
## 情况二:在某些软件中无法触发
0)对于罗技等自带驱动的鼠标,检查驱动软件(如Logi options+)中是否为鼠标键设置了特殊规则。
1)检查Quicker中是否将程序添加了黑名单。

2)检查是否默认禁用了手势功能。

3)检查是否对程序禁用了手势功能;
同时检查是否有其它程序关联了此程序,并且该程序禁用了手势;

4)如果有其他使用鼠标挂钩的软件或AHK脚本,退出它们排查是否有干扰。
# 更新历史
- 20230204 增加问题排查
- 20230525 增加规则继承说明(v1.38.8)
- 20230628 增加长按触发手势说明。