
Ao executar um aplicativo de linha de comando ( $ gradle run
na verdade, não sei se isso pode ser significativo), se eu pressionar inadvertidamente a seta para cima e, em seguida, pressionar a seta para baixo para voltar à linha de prompt (ou seja, no meu app) e pressione Return e examine a string inserida. Verei algo assim:
No index open
> q
you entered: |a aaaq|
... aqui eu só digitei " q<Return>
" depois de usar as setas do teclado... 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 tornar as teclas de seta (e outras que possam fazer algo semelhante) "silenciosas"? NB, não tenho ideia se isso também se aplica ao *nix BASH ...
Responder1
Como gradle é um programa Java e o Cygwin não possui sua própria máquina Java, você está executando um programa Windows (máquina Java) dentro do terminal Mintty.
Como tal, aplicam-se as restrições habituais:
Ao interagir com programas que usam uma API nativa do Windows para interação do usuário por linha de comando (“modo console”), vários efeitos indesejáveis são observados; este é o problema de incompatibilidade de pty e o problema de incompatibilidade de codificação de caracteres. Isso afeta basicamente todos os programas não compilados em um ambiente cygwin ou msys (e observe que MinGW não é msys neste contexto).
Mais informações e algumas possíveis soluções alternativas são relatadas em
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs