Как локализовать двойной ввод символа в Windows Terminal Canary при расширенном keyboard protocol: сравнение раскладки, терминального приложения, tmux и обычной оболочки.
Проверьте, где появляется второй символ
Откройте пустой временный буфер без автокоманд и нажмите проблемную клавишу один раз в четырёх средах: обычная оболочка Windows Terminal, приложение с поддержкой kitty-протокола, то же приложение внутри tmux и альтернативный терминал. Не используйте редактор рабочего файла: двойной ввод легко не заметить и сохранить. Если проблема есть уже в оболочке, слой приложения с расширенным протоколом отпадает. Если она появляется только в Neovim или другом TUI и исчезает внутри tmux, граница находится между режимом клавиатурного протокола и промежуточным терминальным слоем. Это ещё не указывает на конкретную функцию Windows Terminal и не подтверждает предположение автора issue.
Добавьте ось раскладки, не меняя систему навсегда
Повторите четыре проверки с исходной раскладкой и с одной контрольной раскладкой, где символ вводится прямой клавишей. Меняйте раскладку только для тестового окна и сразу возвращайте привычную. Функция Windows `ToUnicodeEx` переводит виртуальную клавишу и состояние клавиатуры в Unicode с учётом выбранного input locale; документация отдельно описывает отрицательный результат для dead key и влияние внутреннего состояния клавиатуры. Это объясняет, почему раскладка является самостоятельной осью эксперимента, но не доказывает, что именно `ToUnicodeEx` вызвал дубликат. Если двойной ввод сохраняется при обеих раскладках, локальный механизм мёртвой клавиши менее вероятен, а не исключён окончательно.
Отделите нажатие, повтор и отпускание
Спецификация kitty позволяет приложению запрашивать расширения и события нажатия, повторения и отпускания клавиш. Поэтому полезно записать не только полученный текст, но и тип события в безопасном демонстрационном инструменте протокола, если приложение его предоставляет. Не запускайте неизвестный keylogger и не публикуйте общий журнал клавиатуры: достаточно одной синтетической клавиши в пустом окне. Сравните короткое нажатие и удержание. Если одно короткое нажатие даёт два печатных символа, а журнал показывает разные типы событий, это точный пакет для разработчиков. Если журнал показывает два одинаковых нажатия во всех приложениях, следует проверить клавиатуру и системный repeat отдельно от Terminal.
Временная граница и пакет для issue
До исправления используйте только тот обратимый контроль, который матрица уже подтвердил: стабильный Terminal вместо Canary, другое терминальное приложение, tmux или временная раскладка. Не создавайте глобальное переназначение `!`, пока не ясно, на каком слое удвоение: оно может превратить нормальные приложения в источник пропущенных символов. В отчёте укажите версию Windows Terminal, сборку Windows, раскладку, TUI и его версию, активность kitty-протокола и таблицу восьми результатов. Официальное обсуждение Preview подтверждает появление поддержки kitty keyboard protocol в Windows Terminal, но открытый issue остаётся единственным свежим сигналом этой конкретной комбинации. Не прикладывайте реальные команды, пароли или содержимое терминала.
Материал подготовлен редакцией VOne с применением ИИ для матрицы ввода; протокол и API сверены по первичным документам, а гипотеза из issue не выдана за факт.
Источники и проверка
- kitty documentation — keyboard protocol проверено 2026-08-10
- Microsoft Learn — ToUnicodeEx function проверено 2026-08-10
- Microsoft Terminal — Preview 1.25 discussion проверено 2026-08-10
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.