Кейсы
Работа с клиентом

Дневник тренировки реагирует на диктовку как на команды: проверьте горячие клавиши

Комментарий не должен переключать тренировку

Кирилл в вымышленном примере диктует заметку в веб-дневнике. Курсор оказался не в поле комментария, и буква из распознанной речи запускает переход к следующей записи. Кирилл думает, что его текст сохранён не туда, и начинает повторять фразу. Тренер сначала останавливает эту попытку: нужно выяснить, попал ли текст в поле вообще или интерфейс интерпретировал символ как команду.
Разработчик находит глобальную горячую клавишу из одной буквы. Она действует на странице независимо от выбранного поля. Такая схема удобна одному пользователю клавиатуры, но в этом эпизоде превращает обычную диктовку в непреднамеренные действия. Просто попросить Кирилла никогда не ошибаться с курсором — не исправление механики дневника.

Три способа ограничить символьную команду

WCAG 2.1.4 Character Key Shortcuts рассматривает команды, использующие только буквы, цифры, знаки пунктуации или символы. Должна выполняться хотя бы одна альтернатива: команду можно выключить; можно переназначить с добавлением непечатной клавиши, например Ctrl или Alt; либо команда компонента активна только при фокусе на этом компоненте. Требование не сводится к запрету любых горячих клавиш.
Для учебного дневника Кирилла выбирают отключение символьных команд в настройках. Затем проверяют, что переход между записями всё ещё доступен обычными элементами интерфейса. Выключить клавишу и оставить клиента без способа открыть следующую тренировку означало бы убрать одну помеху ценой другой. Это решение данного примера, а не единственно допустимая реализация критерия.

Не заменять букву двумя буквами

Разработчик предлагает последовательность из двух букв вместо одной, полагая, что случайное нажатие станет реже. Но W3C прямо относит последовательности символьных клавиш к тому же критерию. Его предмет — опора на печатные символы, а не количество физических нажатий. Даже знак, который на конкретной раскладке вводят с Shift, не становится автоматически исключением.
Проверку проводят без настоящего изменения клиентских записей: в тестовом дневнике повторяют диктовку при фокусе внутри комментария и вне него. Смотрят отдельно на появление текста и на отсутствие нежелательных переходов. Затем Кирилл намеренно открывает следующую запись обычной кнопкой. Иначе можно принять отсутствие любого отклика за успешное исправление.

Голосовая команда и случайный символ — разные дефекты

Когда человек произносит название кнопки, но голосовое управление её не находит, проверяют совпадение видимой подписи и доступного имени. У Кирилла обратная проблема: он не просит переключать запись, а действие всё же запускается. Переименование кнопки само по себе не выключит глобальный обработчик букв.
В обычном раскрывающемся списке выбор по букве при фокусе на самом списке не следует автоматически приравнивать к глобальной команде страницы. Разработчик должен определить область действия, прежде чем отключать все способы ввода. В итоговом тесте Кирилл диктует заметку без случайных переходов и сохраняет возможность осознанно перемещаться по дневнику. Эта проверка не удостоверяет доступность всего сервиса.