跳到主要内容

修饰键和时机

手势触发器可以要求修饰键:与手势一起按住或按下的键盘按键或额外的鼠标按键。这样,同一个绘制的形状就可以随修饰键的不同运行不同的操作。本页陈述确切的规则。热键触发器也有修饰键,规则更简单(请参阅热键的修饰键)。

选择修饰键​

修饰键是操作编辑器中手势触发器的一部分。

触发器
手势向左滑动
绘制按钮
任意绘制按钮右键
修饰键
CtrlShiftAltWin左键中键右键侧键 1侧键 2
时机
之前之后任意
按住的修饰键
释放后恢复保持按下
  1. 在 操作 页面上打开该操作,并展开其手势触发器。
  2. 在 修饰键 下,单击手势需要的每个按键或按钮 ①。再次单击即可将其移除。
  3. 在高级模式下,选择 时机 ②:之前、之后 或 任意。
  4. 在高级模式下,如果选择了键盘修饰键,请选择在操作运行期间如何处理按住的键 ③(请参阅按住的修饰键)。

可以选择的修饰键:

修饰键视为
Ctrl、Shift、Alt、Win一对按键中的任意一个:左 Ctrl 和右 Ctrl 都是 Ctrl。
左键、中键、右键、侧键 1、侧键 2除用于绘制的按键之外的鼠标按键。

当 Windows 交换了鼠标按键时,按键名称以 Windows 为准:右键是打开上下文菜单的那个按键。

备注

高级模式。 时机 和 按住的修饰键 只在高级模式下显示。在简单模式下,新的手势触发器使用 任意 和 释放后恢复。简单模式绝不会更改您在高级模式下设置的值。

精确匹配规则​

手势在您绘制时会记录两组修饰键:

  • 之前按住的:按下绘制按钮那一刻按住的按键和鼠标按键,加上最近的一次滚轮转动(滚轮转动)。
  • 期间按下的:手势开始后您按下的每个按键和鼠标按键。即使在完成之前松开,按键也会留在这一组中。在按下之前就已按住的键,无论按住多久,都不算期间按下的。

触发器的修饰键必须与其中一组 完全 相同。子集不够,多余的按键也不会被忽略:

  • 需要 Shift 的触发器在您按住 Shift 和 Alt 时不会匹配。
  • 需要 Shift 和 Alt 的触发器在您只按住 Shift 时不会匹配。

这两组永远不会合并。之前按住 Shift、期间按下 Ctrl,得到的是之前为“Shift”、期间为“Ctrl”。两组都不是“Shift 和 Ctrl”,因此需要这两个键的触发器不会匹配。

时机​

时机说明触发器检查两组中的哪一组:

时机触发器在以下情况下匹配
之前之前按住的键与其修饰键相同。期间按下的内容无关紧要。
之后期间按下的键与其修饰键相同。之前按住的内容无关紧要。
任意任一组与其修饰键相同。

在配置窗口中创建的新手势触发器使用 任意。在配置文件中编写且未指定时机的手势触发器使用 之前。

没有修饰键意味着完全没有​

没有修饰键的触发器是时机规则的例外。只有当 两组 都为空时它才会匹配:按下绘制按钮时没有按住任何键,绘制期间没有按下任何键,并且最近没有转动滚轮。其时机无关紧要。

因此,普通手势永远不会胜过其带修饰键的变体。如果一个操作有普通的 向左滑动,另一个操作有带 Ctrl、之后 的 向左滑动,那么绘制时按下 Ctrl 总是会运行第二个操作,无论哪个在列表中靠前。

时间线示例​

在这些示例中,绘制按钮是右键,而 Ctrl 是忽略的修饰键,这是默认设置(忽略的修饰键)。

您的操作之前按住的期间按下的匹配不匹配
按住 Shift。按下右键,绘制,松开。松开 Shift。Shift(无)Shift 之前、Shift 任意Shift 之后、无修饰键
按下右键,开始绘制,按下并松开 Ctrl,完成,松开。(无)CtrlCtrl 之后、Ctrl 任意Ctrl 之前、无修饰键
按住 Shift。按下右键,绘制时按下 Alt,松开。ShiftAltShift 之前、Alt 之后、Shift 任意、Alt 任意Shift 和 Alt(任何时机)
按住 Shift 和 Alt。按下右键,绘制,松开。Shift、Alt(无)Shift 和 Alt 的之前或任意Shift 之前
按下右键,绘制,按下并松开 Shift,然后按下 Alt,松开。(无)Shift、AltShift 和 Alt 的之后或任意Shift 之后、Alt 之后
按住 Ctrl。按下右键。无:Ctrl 是忽略的修饰键,因此右键单击会作为普通单击传到窗口,不会开始手势。
按住左键。按下右键,绘制,松开。左键(无)左键之前或任意无修饰键
按下右键,绘制,单击中键,松开。(无)中键中键之后或任意无修饰键
转动滚轮,然后在半秒内按下右键并绘制。滚轮(无)在配置窗口中创建的任何触发器都不匹配无修饰键

当同一应用程序组中有多个触发器匹配时(如第三行),按匹配顺序第一个的会运行(匹配)。

作为修饰键的鼠标按键​

  • 之前按住的。 按下绘制按钮时按住的鼠标按键。该按键的按下已经传到了指针下方的窗口,因为当时还没有手势在运行。
  • 期间按下的。 绘制时按下的鼠标按键。它的按下和松开不会传给指针下方的窗口,只计入手势。这也包括第二个绘制按钮:在手势期间按下时,它是修饰键,而不是新手势的开始。

对于在手势期间按下的按键,鼠标按键全局事件仍会触发(全局事件)。

不能在手势之前按住的键​

有两类修饰键永远不能在手势开始之前按住:

  • 忽略的修饰键。 按下绘制按钮时按住它意味着“这次不做手势”,因此手势永远不会开始(忽略的修饰键)。
  • 绘制按钮。 按下绘制按钮会开始它自己的手势,因此不能按住它等待另一个手势。

时机为 之前 时,修饰键选择器会拒绝这两者,并在您指向被拒绝的选项时显示原因。时机为 之后 或 任意 时,您可以选择它们,因为在手势期间按下它们是有效的。已经这样设置的触发器(例如在配置文件中)会以红色显示其选项,并在下方说明原因,且永远不会通过之前按住的那一组匹配。

滚轮转动​

在按下绘制按钮之前不久转动鼠标滚轮,算作之前按住的修饰键:常规 页面上的 滚轮修饰时间窗口 设置“之前不久”的时长(默认为 500 毫秒)。绘制时转动滚轮算作期间按下的。向上滚动和向下滚动是不同的修饰键。

引擎会匹配滚轮修饰键,但修饰键选择器不提供它们,因此在配置窗口中创建的触发器永远不会有滚轮修饰键。这样的触发器不会匹配您在滚动之后、滚轮修饰时间窗口之内开始的手势:最近的滚轮转动是该触发器未列出的修饰键。这是有意为之的设计。如果您经常在滚动后立即绘制,请调低 滚轮修饰时间窗口(高级模式);设为 0 时,之前的滚轮转动不计入。在覆盖滚轮的排除区域内转动滚轮永远不计入。

按住的修饰键​

操作开始时,您为其触发器按住的键可能仍处于按下状态。这样一来,键入文本或按键的操作就会在 Ctrl 或 Alt 仍被按住的情况下发送它们。按住的修饰键 用于选择如何处理:

  • 释放后恢复(新触发器的默认值)。在操作运行之前,引擎会释放触发器匹配的修饰键。当操作(包括任何前置和后置操作)完成后,它只会重新按下您仍在实际按住的键。在释放期间,这些键的自动重复会被暂时保留,因此按住的键不会在操作中途再次自行按下。您自己松开后又重新按下的键则交由您自己处理。
  • 保持按下。不释放任何键。由操作的脚本自行处理这些键。在配置文件中编写且没有此设置的触发器使用 保持按下。

对于手势,只会释放键盘修饰键;按住的鼠标按键永远不会被释放。只有当触发器有键盘修饰键时才会显示此选项。如果在操作运行期间输入处理停止(例如引擎被禁用),则不会重新按下任何键。

修饰键如何决定运行哪个操作​

修饰键是触发器的一个条件,与手势、绘制按钮、活动配置方案以及(当应用程序组使用区域时)其区域一起检查。它们永远不会改变首先尝试哪个应用程序组的操作:

  1. 首先尝试手势开始所在窗口的应用程序组。其中触发器匹配的操作会运行,即使某个全局操作也会匹配。
  2. 在组内,按匹配顺序尝试操作,第一个匹配的触发器胜出;区域打开时,匹配的触发器中单元格最少的胜出,顺序用于决胜(作用范围与回退)。
  3. 只有当组中没有任何匹配时,如果回退已打开,手势才会回退到全局组(作用范围与回退)。

当同一个组中有两个同一手势都能满足的触发器时,操作编辑器会标记出来(除非第一个是两者中范围更窄的那个),并说明哪一个胜出。

热键的修饰键​

热键的修饰键是 Ctrl、Shift、Alt 和 Win,并且必须精确匹配:Ctrl+K 不会因 Ctrl+Shift+K 而运行。热键没有时机,也没有鼠标按键修饰键。请参阅热键。