Terminal: Терминал Windows 1.1 нарушает ввод WinCompose

Созданный на 27 июл. 2020  ·  3Комментарии  ·  Источник: microsoft/terminal

Среда

Windows build number: 10.0.19041.0
Windows Terminal version (if applicable): 1.1.2021.0

Any other software?
Ubuntu 20.04 LTS (WSL2)
WinCompose v0.9.4 (https://github.com/samhocevar/wincompose/releases/tag/v0.9.4)

Действия по воспроизведению

  1. Запустите WinCompose и Windows Terminal (cmd, powershell или WSL не имеет значения)
  2. Введите любой символ с помощью клавиши Compose WinCompose
    например, rightAlt + o a

Ожидаемое поведение


Правильный символ («å» в приведенном выше примере) отправляется на терминал.

Фактическое поведение


Вроде ни один символ не отправляется, по крайней мере, ничего не отображается.

Вероятно, связано с # 6309, поскольку установка "experimental.input.forceVT": true дает ожидаемое поведение.

Area-Input Issue-Bug Needs-Tag-Fix Priority-1 Product-Terminal

Самый полезный комментарий

Насколько я понимаю, эта проблема была исправлена ​​в # 7900. Я сейчас закрою эту проблему, так как WinCompose отлично работает на моей стороне с последней версией WT.

Хорошо то, что теперь я наконец понял, почему мы получаем странные ключевые события, содержащие недопустимые коды сканирования, для сторонних приложений, использующих SendInput : WT неправильно использует TranslateMessage(Ex) . (Я имею в виду, что есть очень конкретная причина, по которой это не так ... А именно необходимость получать ключевые события даже для символьных клавиш.)

Все 3 Комментарий

Хм. Это не совсем работает в традиционной консоли, и то, что это сработало в WT, было случайностью. Однако это _должно_.

Вот что я получаю, если смотрю на ключевые события, происходящие из WC, в традиционной консоли:

v 001 0010 002a 0000 ^@   00000010
^ 001 0010 002a 0000 ^@   00000000
v 001 0000 0000 00f6 �    00000000
^ 001 00e7 0000 00f6 �    00000000
^ 001 004f 0018 006f o    00000000

и вот что я получаю через кран:

␛[255;0;0;1;16;1_␛[255;0;0;0;16;1_

что 255 определенно не прав

Итак, как стороннее приложение должно отправлять символы Unicode в Терминал Windows, если SendInput() больше не работает по умолчанию?

Насколько я понимаю, эта проблема была исправлена ​​в # 7900. Я сейчас закрою эту проблему, так как WinCompose отлично работает на моей стороне с последней версией WT.

Хорошо то, что теперь я наконец понял, почему мы получаем странные ключевые события, содержащие недопустимые коды сканирования, для сторонних приложений, использующих SendInput : WT неправильно использует TranslateMessage(Ex) . (Я имею в виду, что есть очень конкретная причина, по которой это не так ... А именно необходимость получать ключевые события даже для символьных клавиш.)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги