Terminal: O Terminal 1.1 do Windows quebra a entrada do WinCompose

Criado em 27 jul. 2020  ·  3Comentários  ·  Fonte: microsoft/terminal

Ambiente

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)

Passos para reproduzir

  1. Inicie o WinCompose e o Windows Terminal (cmd, powershell ou WSL não importa)
  2. Insira qualquer caractere usando a tecla de composição WinCompose
    por exemplo, rightAlt + o a

Comportamento esperado


O caractere correto ('å' no exemplo acima) é enviado ao terminal.

Comportamento real


Aparentemente, nenhum caractere é enviado, pelo menos nada é exibido.

Provavelmente relacionado a # 6309, pois a configuração "experimental.input.forceVT": true dá o comportamento esperado.

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

Comentários muito úteis

Pelo que posso ver, esse problema foi corrigido no # 7900. Encerrarei esse problema por enquanto, pois o WinCompose funciona perfeitamente do meu lado com a versão mais recente do WT.

O bom é que agora finalmente entendi porque temos recebido eventos chave estranhos, contendo códigos de varredura inválidos, para aplicativos de terceiros que empregam SendInput : WT não usa TranslateMessage(Ex) corretamente. (Quero dizer, há uma razão muito específica para isso não acontecer ... Ou seja, a necessidade de receber eventos-chave, mesmo para chaves de caracteres.)

Todos 3 comentários

Huh. Isso também não funciona exatamente no console tradicional, e foi por acaso que funcionou no WT. _Deve_, no entanto.

Isso é o que eu ganho se espiar os principais eventos que saem do WC para o console tradicional:

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

e aqui está o que estou obtendo com a torneira:

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

que 255 definitivamente não está certo

Portanto, como um aplicativo de terceiros deve enviar caracteres Unicode para o Terminal do Windows se SendInput() não funcionar mais por padrão?

Pelo que posso ver, esse problema foi corrigido no # 7900. Encerrarei esse problema por enquanto, pois o WinCompose funciona perfeitamente do meu lado com a versão mais recente do WT.

O bom é que agora finalmente entendi porque temos recebido eventos chave estranhos, contendo códigos de varredura inválidos, para aplicativos de terceiros que empregam SendInput : WT não usa TranslateMessage(Ex) corretamente. (Quero dizer, há uma razão muito específica para isso não acontecer ... Ou seja, a necessidade de receber eventos-chave, mesmo para chaves de caracteres.)

Esta página foi útil?
0 / 5 - 0 avaliações