К обсуждениям

Windows Terminal дублирует символ в kitty-режиме: матрица раскладки и приложения

Редакция VOne Технологии

Как локализовать двойной ввод символа в 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 не выдана за факт.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.