As teclas de seta para digitar Cygwin dão caracteres “espúrios”

0

Ao executar um aplicativo de linha de comando (eu estou indo $ gradle run na verdade, eu não sei se isso pode ser significativo), se inadvertidamente pressionar a seta para cima e pressione a seta para baixo para voltar ao linha de prompt (ou seja, no meu aplicativo) e pressione a tecla Return, e examine a string inserida, eu vou ver algo assim:

No index open
> q
you entered: |a aaaq|

... aqui eu só digitei " q<Return> " depois de usar as setas ... mas eles adicionaram algumas coisas engraçadas antes do 'q'.

Para obter a entrada do usuário, estou fazendo isso (Groovy):

response = System.in.newReader().readLine()

Existe alguma maneira de fazer chaves de flecha (e outras que possam fazer algo similar) "silencioso"? NB Eu não tenho idéia se isso também se aplica a * nix BASH ...

    
por mike rodent 28.02.2018 / 20:59

1 resposta

1

Como o gradle é um programa em Java e o Cygwin não tem sua própria máquina Java, você está executando um programa do Windows (máquina Java) dentro do terminal Mintty.

Assim, as restrições usuais se aplicam:

When interacting with programs that use a native Windows API for command-line user interaction (“console mode”), a number of undesirable effects are observed; this is the pty incompatibility problem and the character encoding incompatibility problem. This basically affects all programs not compiled in a cygwin or msys environment (and note that MinGW is not msys in this context).

Mais informações e algumas possíveis soluções parciais são relatadas no link

    
por 01.03.2018 / 11:36