Skip to content
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

Особенность протокола win32-input-mode #2534

Open
Dazzar56 opened this issue Nov 28, 2024 · 0 comments
Open

Особенность протокола win32-input-mode #2534

Dazzar56 opened this issue Nov 28, 2024 · 0 comments

Comments

@Dazzar56
Copy link
Contributor

ESC последовательности win32-input-mode должны состоять только из 16 битных чисел, это слабо документированное ограничение для параметров CSI команд. Таким образом, в поле Uc: the decimal value of UnicodeChar могут попасть только 65 536 символов юникода.
Оригинальная реализация в WT тут:
https://github.com/microsoft/terminal/blob/924310481aefcba509d3f7f63e17f0ebbb903a29/src/terminal/input/terminalInput.cpp#L650

Однако, в случае, если через win32 надо передать более сложные символы (например эмодзи "🙂" кодовая точка U+1F642) , они передаются через суррогатные пары. То есть как две отдельных ESC-последовательности с десятичным значением точек U+D83D (high surrogate) U+DE42 (low surrogate) и . Десятичные значения 55357 и 57026 соответственно.

Таким образом, на нашей стороне, как во встроенном терминале так и на консольном бекэенде, надо как-то учесть это поведение. Так как сейчас мы не можем принять ввод эмодзи от windows терминала.
Попытка вставить вышеописанный эмодзи в far2l WT WSL выглядит так:
image

Особенность была обнаружена в дискуссии по интеграции win32-input-mode VTE (библиотека в основе GNOME Terminal) :
https://gitlab.gnome.org/GNOME/vte/-/issues/2601#note_2286510

Исправлением займусь сам, как только до конца разберусь в проблеме.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant