-
Notifications
You must be signed in to change notification settings - Fork 174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Work around Windows Terminal double escape sequences encoding on our side #2072
Comments
…#2072 (Work in Progress)
Суть проблемы: При парсинге input последовательности мы встретили вот такое: \x1B[0;0;27;1;0;1_
\x1B[0;0;91;1;0;1_
\x1B[0;0;60;1;0;1_
\x1B[0;0;48;1;0;1_
\x1B[0;0;59;1;0;1_
\x1B[0;0;53;1;0;1_
\x1B[0;0;50;1;0;1_
\x1B[0;0;59;1;0;1_
\x1B[0;0;49;1;0;1_
\x1B[0;0;50;1;0;1_
\x1B[0;0;77;1;0;1_ на самом деле на до распознать как \x1B[0;0;27;1;0;1_ -> \x1B
\x1B[0;0;91;1;0;1_ -> [
\x1B[0;0;60;1;0;1_ -> <
\x1B[0;0;48;1;0;1_ -> 0
\x1B[0;0;59;1;0;1_ -> ;
\x1B[0;0;53;1;0;1_ -> 5
\x1B[0;0;50;1;0;1_ -> 2
\x1B[0;0;59;1;0;1_ -> ;
\x1B[0;0;49;1;0;1_ -> 1
\x1B[0;0;50;1;0;1_ -> 2
\x1B[0;0;77;1;0;1_ -> M Такова теория этого фикса. На практике же получилось пока так: Я прикостылил буфер символов TTYInputSequenceParser и, как только встретил последовательность |
Посмотрел в отладчике WinDbg, что происходит. Портит сообщения мышки OpenConsole.exe из Windows Terminal, а не conhost.exe. Это хорошо, так как OpenSource. Происходит примерно следующее: Одна часть программы читает события от клавиатуры, мышки и т.д., дальше расладывает их во внутреннюю очередь событий с пометкой типа события. Дальше эта очередь обрабатывается и в зависимости от выбранной эмуляции терминала преобразуется в CSI etc последовательности. Мышиные последовательности правильно преобразуются для win32input в нужный нам формат ESC[Mbxy. Пометки типа события при этом уже теряются. Это все выдается в очередь на запись. А вот дальше в отдельном потоке (второй обработчик) начинается чтение этой "очереди на запись", в которой отсутствую пометки о типе события. Обработчик видит ESC и в зависимости от выбранной эмуляции терминала преобразуется в CSI etc последовательности еще раз, считая все вводом с клавиатуры. Результаты попадают в наш терминал и far2l. |
В чате пишут, что некоторые последовательности win32-input-mode парсер kitty интерпретирует как свои. Это объясняет, почему у нас мусор в консоль в Windows Terminal валится. Впрочем, там, кажется, больше одной причины. |
* cleanup code * disable logs * correct parsing for win32-input mode * documented workflow of this fix as well as standard parsing procedure
Fixed by #2085 |
FYI: fixed in Windows Terminal starting from Pre-release v1.22.2702.0. |
Not only mouse sequences are double encoding. Additional fix is required: #2333 |
Touch #2423 |
The bug itself:
microsoft/terminal#15083 (comment)
Possible solution may be like here:
microsoft/terminal#15083 (comment)
Exact commit:
magiblot/tvision@ae1a685
The text was updated successfully, but these errors were encountered: