Перейти к основному содержимому

Как сопоставляется штрих

Когда вы отпускаете кнопку рисования, Input.Observer в два этапа решает, что выполнить:

  1. Какую фигуру вы нарисовали? Штрих оценивается относительно жестов в области действия, и побеждает лучшая оценка, если она достигает порога совпадения. Эта страница объясняет этот этап.
  2. Какое действие использует эту фигуру здесь? Триггеры группы приложений для этой фигуры проверяются на модификаторы, кнопку рисования, область и профиль. См. Область действия и правила отката.

Живая подсказка применяет ровно те же два этапа к уже нарисованной части штриха, поэтому она всегда называет то, что выполнилось бы, если отпустить кнопку в этот момент.

Как оценивается штрих​

Каждое сравнение даёт оценку от 0 до 100:

  1. Штрих слегка сглаживается, чтобы убрать дрожание руки.
  2. Он заново дискретизируется в фиксированное число равномерно расположенных по его длине точек (по умолчанию 36).
  3. Направление каждого короткого отрезка между двумя точками сравнивается с направлением того же отрезка в сохранённом образце.
  4. Средняя разница становится оценкой: 100, когда все отрезки направлены одинаково, 0, когда все направлены в противоположную сторону.

Что это означает при рисовании:

Что меняетсяВлияние на оценку
Размер или место на экране, где вы рисуетеНикакого
Скорость рисованияНикакого
Направление: справа налево вместо слева направоПротивоположное направление получает оценку около 0
Поворот: фигура нарисована с наклономНиже, и тем ниже, чем сильнее наклон
Начальная точка: круг, начатый сверху или снизу, по часовой стрелке или противКаждый вариант — отдельная фигура
Пропорции: L с длинным или коротким основаниемНиже: каждая часть занимает другую долю штриха

Жест с несколькими образцами оценивается относительно каждого из них. Оценка образцов определяет, как эти оценки объединяются: Лучший образец (по умолчанию) берёт наивысшую, Среднее по всем образцам — их среднее, поэтому штрих, близкий к одному образцу, но далёкий от остальных, получает более низкую оценку.

Какие фигуры соревнуются​

Штрих сравнивается не со всей библиотекой, а только с фигурами в области действия для окна, над которым вы нажали кнопку:

  • со всеми фигурами, которые использует какой-либо триггер-жест в группе приложений, владеющей окном, и
  • со всеми фигурами, которые использует какой-либо триггер-жест в глобальной группе, если для этой группы возможен откат к глобальной (см. Область действия и правила отката).

Фигура учитывается, как только её использует любой триггер в этих группах, даже если этот триггер сейчас не может сработать: его действие выключено, оно ограничено другим профилем, ему нужен модификатор, который вы не нажали, или нужна другая кнопка рисования либо область. Такая фигура всё равно может выиграть штрих, и тогда ничего не выполнится. Фигура, которую не использует ни один триггер в области действия, не соревнуется и поэтому никогда не может там победить.

Победитель​

  • Побеждает наивысшая оценка, если она не ниже порога совпадения. Если ничего не достигает порога, совпадения нет.
  • Точно равные оценки: побеждает фигура, встреченная первой: собственные фигуры группы приложений раньше глобальных, в порядке списка действий группы.
  • Второго варианта нет. Как только фигура победила, ищутся только действия для этой фигуры: сначала в группе приложений, затем в глобальной, если группа допускает откат. Если ни одно не подходит (например, нужен Shift, а вы его не нажали), ничего не выполняется, даже если у фигуры с более низкой оценкой было подходящее действие.

Побеждает ближайшая фигура в области действия​

Поскольку соревнуются только фигуры в области действия, штрих, который явно является какой-то другой фигурой, всё равно совпадает с ближайшей фигурой в области действия, если та достигает порога.

Пример: глобальная группа использует три фигуры: «Смахивание вниз», «Смахивание влево» и «Галочка». Над окном, которым не владеет ни одна группа приложений, вы рисуете «Смахивание вверх». Эта фигура есть в библиотеке, но её не использует ни один триггер в области действия, поэтому она не соревнуется. Штрих оценивается относительно трёх фигур в области действия; если «Галочка» получает наивысшую оценку и достигает порога, выполняется действие «Галочки».

Это можно предотвратить двумя способами:

  • Привяжите фигуру в области действия к действию, которое ничего не делает. Тогда она соревнуется, получает наивысшую оценку для собственного штриха и ничего не выполняет. Когда страница Группы приложений находит такой случай, она показывает баннер «Штрих здесь может запустить не то действие», а его кнопка Добавить пустое действие добавляет такое действие за вас. См. Группы приложений.
  • Повысьте порог совпадения, чтобы штрих должен был быть ближе к фигуре, чтобы засчитаться.

Карточка Запускает другие действия самого жеста на странице Жесты перечисляет те же случаи со стороны фигуры.

Если ничего не совпало​

Штрих, который не соответствует ни одному действию ни в какой области:

  • ничего не выполняет;
  • не возвращает щелчок: окно под указателем ничего не получает;
  • запускает глобальное событие Нет совпадений, если вы его настроили (например, чтобы воспроизвести звук). См. Глобальные события.

Подсказка исчезает, пока уже нарисованная часть штриха ничему не соответствует, поэтому отсутствие подсказки предупреждает об этом заранее.

Параметры​

Параметры сопоставления находятся на странице Жесты, вкладка Параметры, карточка Распознавание жестов.

Input.ObserverПростойРасширенный
АВТОМАТИЗАЦИЯ
Действия
Подстановка текста
Фрагменты
Песочница
Группы приложений
Группы игнорирования
Жесты
НАСТРОЙКА
Общие
Оформление
Безопасность
Справка
О программе
Жесты
ФигурыПараметры
Распознавание жестов
Порог совпадения
Насколько точно нарисованный штрих должен совпадать с сохранённым жестом, чтобы считаться попаданием.
МягкийСтрогий75
Качество сглаживания штриха
Баланс между скоростью и точностью распознавания. При изменении расширенных параметров ниже переключается на «Особое».
БыстроеСбалансированноеТочное

Порог совпадения​

Порог совпадения ① — наименьшая оценка, которая считается совпадением: по умолчанию 75, от 50 (Мягкий) до 100 (Строгий).

  • Повысьте его, если выполняется не то действие или штрих, который вы не задумывали как жест, что-то запускает. Небрежные штрихи тогда чаще ничему не соответствуют.
  • Понизьте его, если штрих, задуманный как жест, часто ничему не соответствует. Штрихи, не похожие ни на одну из ваших фигур, тогда чаще забирает ближайшая фигура в области действия.

Карточка Нарисуйте для проверки на странице Жесты показывает оценку штриха относительно этого порога. См. Библиотека жестов.

Качество сглаживания штриха​

Качество сглаживания штриха ② задаёт баланс между скоростью и точностью сопоставления. Каждый вариант одновременно задаёт число точек дискретизации и Оценка образцов:

ВариантТочкиОценка образцов
Быстрое24Лучший образец
Сбалансированное (по умолчанию)36Лучший образец
Точное64Среднее по всем образцам

Чем больше точек, тем более мелкие детали фигуры замечаются. Любое другое сочетание, заданное в расширенном режиме, отображается как Особое.

примечание

Расширенный режим. Карточка добавляет три строки:

  • Точность передискретизации: число точек, в которое дискретизируется штрих, от 8 до 128 (по умолчанию 36).
  • Оценка образцов: Лучший образец или Среднее по всем образцам.
  • Порог подсказки в режиме обучения: оценка от 0 до 100 (по умолчанию 80), начиная с которой окно обучения предлагает сохранить штрих как ещё один образец ближайшего жеста, а не как новый жест. На сопоставление не влияет.