跳到主要内容

作用范围与回退规则

本页准确说明 Input.Observer 如何为手势选择操作:哪个窗口起作用、哪个组拥有它、全局 组何时接管,以及当多个操作都可以运行时哪个胜出。热键和文本扩展遵循相同的组规则,差异列在最后。

术语​

  • 作用范围:为手势尝试其操作的应用程序组。一个手势只有一个作用范围,外加可能作为回退的全局组。
  • 所属组:窗口所属的唯一应用程序组。请参阅应用程序组。
  • 回退到全局:当所属组没有任何内容时,尝试全局组的操作。由两个开关控制,两者都必须打开:
    • 常规 页面 手势匹配时 卡片上的 回退到全局:同时作用于所有组(默认打开);
    • 每个应用程序组的 在这些窗口中的行为 卡片上的 回退到全局:作用于该组(默认打开)。

起作用的窗口​

对于手势,起作用的窗口是 按下绘制按钮那一刻指针下方的顶层窗口:

  • 笔划之后去往何处并不重要。从记事本上开始、在浏览器上结束的笔划是记事本的手势。
  • 窗口内的控件(文本框、浏览器页面)被视为其整个程序窗口。
  • 所属组、配置方案检查和区域单元格全部 在按下时确定一次。绘制过程中窗口标题发生变化,或在手势期间切换配置方案,都不会改变该手势的结果。

决策步骤​

按下时​

  1. 找到所属组。 按以下顺序检查各组,并在第一个规则与窗口匹配的组处停止:

    1. 每个忽略组,按 忽略组 页面上从上到下的顺序;
    2. 每个应用程序组,按 应用程序组 页面上从上到下的顺序。

    以下组会被当作不存在而跳过:未 已启用 的组、没有规则的组,以及设置了 仅当窗口处于全屏状态时 而其窗口此刻并非全屏的忽略组。

  2. 由忽略组拥有: 按下直接通过。不再检查其他任何内容:不回退到全局,没有手势,该窗口也不会运行任何热键或文本扩展。请参阅忽略组。

  3. 由应用程序组拥有: 如果 在此处启用手势 已打开且该组在活动配置方案中适用(请参阅配置方案),作用范围就是该组。否则作用范围是全局组,但前提是两个 回退到全局 开关都已打开;否则按下直接通过。

  4. 没有任何组拥有: 作用范围是全局组。这里 回退到全局 开关无关紧要:全局组就是该窗口自己的组。

  5. 作为作用范围的全局组 只有在 已启用、其 在此处启用手势 已打开并且在活动配置方案中适用时才生效。否则按下直接通过。

  6. 检查 排除区域,包括适用于所有窗口的区域和作用范围组的区域。在区域内的按下会交还给窗口。请参阅排除区域。

  7. 开始捕获。 此时会分别为作用范围组和全局组确定区域单元格(请参阅区域)。

在第 2 到第 6 步中直接通过的按下会原样且毫无延迟地传递,并且不会绘制轨迹。

松开时​

  1. 形状。 笔划会与作用范围组的触发器使用的形状进行评分;如果作用范围组可以回退,还会加上全局组的形状。达到或超过匹配阈值的最高得分胜出;否则没有匹配。请参阅笔划如何匹配。

  2. 作用范围组的操作。 按列表顺序遍历其操作,并按顺序遍历每个操作的触发器。触发器在以下情况下符合条件:

    • 它是针对胜出形状的手势触发器,
    • 其操作已打开,
    • 其操作在活动配置方案中适用,
    • 您按下的修饰键恰好是它要求的那些(请参阅修饰键和时机),
    • 它接受您使用的绘制按钮,
    • 当该组打开了区域时,它覆盖您按下位置所在的区域单元格。

    区域关闭时,第一个符合条件的触发器胜出。区域打开时,符合条件的触发器中 单元格最少 的胜出,单元格数相同时取第一个。

  3. 当第 9 步中没有任何符合条件的触发器,且以下条件全部成立时,回退到全局:作用范围组本身不是全局组,两个 回退到全局 开关都已打开,并且全局组已启用、在此处启用手势 已打开且在活动配置方案中适用。随后会完全按照第 9 步检查全局组的操作,使用全局组自己的区域单元格。

  4. 在匹配组的前置和后置操作之内 运行 胜出的操作。请参阅前置和后置操作。

  5. 没有符合条件的: 不运行任何内容,按下不会交还,如果您设置了 无匹配 全局事件,则会运行它。

胜出规则(按顺序)​

问题规则
两个组的规则都与窗口匹配忽略组优先于任何应用程序组;否则取其列表中位置较高的组。一个窗口始终只由一个组拥有。
所属组没有针对该手势的操作如果允许回退,则使用全局组的操作。绝不会使用位置更低的应用程序组。
应用程序组的操作和全局操作都符合条件总是应用程序组的操作,无论它们的修饰键、按键或区域如何。
两个形状的得分都超过阈值得分较高的。
一个组中两个操作都符合条件(区域关闭)在组的操作列表中位置较高的。
一个组中两个操作都符合条件(区域打开)触发器覆盖单元格较少的;数量相同时,取列表中位置较高的。
一个操作的两个触发器都符合条件区域关闭:第一个触发器。区域打开:覆盖单元格较少的那个;数量相同时取第一个。无论哪种情况运行的都是同一个操作,但会应用所选触发器自己的设置,例如 按住的修饰键。
同一形状上,一个普通触发器和一个要求 Shift 的触发器只有一个能符合条件:普通触发器要求手势期间完全不按修饰键,另一个则要求 Shift。

在 操作 页面上重新排序操作(上移 和 下移),在 应用程序组 页面上重新排序应用程序组。当一个触发器总是遮住另一个时,应用程序组 页面和操作编辑器会发出警告。

回退简表​

情况无回退有回退(两个开关都打开)
没有任何组拥有该窗口全局全局
所属组关闭了 在此处启用手势按下直接通过全局
所属组在活动配置方案中不适用按下直接通过全局
所属组没有针对该笔划的操作无匹配尝试全局组的操作
由忽略组拥有该窗口按下直接通过按下直接通过
所属组已关闭(已启用 关闭)窗口会与其下方的组进行匹配,就像此组不存在一样相同
全局组已关闭本应使用全局组的地方什么都没有相同

托盘菜单的 全局操作 项就是全局组的 已启用 开关。当焦点窗口所在的组不回退到全局时,托盘图标的工具提示会说明这一点,并列出该组的名称。请参阅托盘图标。

实例​

以下示例使用此设置:

列表组规则操作
忽略组远程桌面程序名称 完全等于 mstsc.exe无
应用程序组,第 1 个浏览器程序名称 完全等于 chrome.exe“向左滑动”上的“后退”;“向下滑动”上的“关闭标签页”
应用程序组,第 2 个文本文件窗口标题 结尾为 .txt - 记事本“向下滑动”上的“保存”
应用程序组,第 3 个记事本程序名称 完全等于 notepad.exe“向左滑动”上的“撤消”
—全局无“向下滑动”上的“最小化”;“向上滑动”上的“最大化”

除非示例另有说明,否则两个 回退到全局 开关都已打开。

1. 组中有的形状。 您在 Chrome 上绘制“向下滑动”。浏览器组拥有 Chrome,并且在“向下滑动”上有“关闭标签页”,因此运行“关闭标签页”。全局组在同一形状上的“最小化”根本没有机会:所属组总是胜出。

2. 只有全局组有的形状。 您在 Chrome 上绘制“向上滑动”。浏览器组没有针对“向上滑动”的内容,因此手势回退到全局组并运行“最大化”,其前后包裹的是全局组的前置和后置操作,而不是浏览器组的。

3. 关闭回退。 关闭浏览器组的 回退到全局,然后在 Chrome 上绘制“向上滑动”。全局组的形状不再参与竞争,因此笔划只与“向左滑动”和“向下滑动”进行比较。如果两者都没有达到阈值,就没有匹配,并运行 无匹配 事件。如果其中一个达到了阈值(潦草的笔划可能会这样),就运行它的操作。无论哪种情况,右键单击都不会交还。

4. 两个组都匹配;只有第一个算数。 记事本打开了一个名为 notes.txt 的文件,因此其标题是“notes.txt - 记事本”。文本文件组和记事本组都与之匹配;文本文件组位置较高,因此它拥有该窗口。您绘制“向左滑动”:文本文件组和全局组都不使用该形状,因此它甚至不在被比较的形状之中,于是没有匹配。记事本组中的“撤消”永远不会为此窗口运行,因为窗口永远不会落到位置更低的应用程序组。要在这里使用“撤消”,请将它添加到文本文件组,或者将记事本组移到文本文件组之上。

5. 忽略组。 您在远程桌面窗口上绘制。忽略组拥有它,因此按下会直接传到远程计算机:没有轨迹,也没有全局组。该窗口获得焦点期间,也不会运行任何热键操作或文本扩展。

6. 已关闭的组,以及关闭了手势的组。 关闭文本文件组的 已启用,然后在“notes.txt - 记事本”上绘制“向左滑动”:现在由记事本组拥有该窗口,并运行“撤消”。重新打开文本文件组,但改为关闭其 在此处启用手势:文本文件组再次拥有该窗口,因此永远到不了记事本组;手势转到全局组,而全局组不使用“向左滑动”,所以什么都不运行。

7. 配置方案。 将浏览器组限定于“工作”配置方案,并且不激活任何配置方案。浏览器组仍拥有 Chrome,但不适用,因此 Chrome 上的手势会转到全局组:“向下滑动”运行“最小化”,而不是“关闭标签页”。如果浏览器组的 回退到全局 已关闭,按下则会直接通过,并且页面会警告 在其配置方案之外,其窗口不会得到任何操作。

热键和文本扩展​

热键和文本扩展使用相同的忽略组、组顺序、已启用 开关、配置方案、回退到全局 开关、全局组以及前置和后置操作。以下几点不同:

手势热键文本扩展
起作用的窗口按下时指针下方的顶层窗口按下按键时获得焦点的窗口键入完文本时获得焦点的窗口
组的开关在此处启用手势在此处启用热键无(文本扩展 页面有一个适用于全部内容的开关)
区域、绘制按钮是否否
何时确定组按下时确定一次每次按键时每次扩展时

有关各自的其他特殊之处,请参阅热键和文本扩展。