
Cuando ejecuto una aplicación de línea de comando ( $ gradle run
de hecho, no sé si esto podría ser significativo), si sin darme cuenta presiono la flecha hacia arriba y luego presiono la flecha hacia abajo para volver a la línea de aviso (es decir, en mi app) y presione Retorno, y examine la cadena ingresada. Veré algo como esto:
No index open
> q
you entered: |a aaaq|
... aquí solo escribí " q<Return>
" después de usar las teclas de flecha... pero agregaron algunas cosas divertidas antes de la 'q'.
Para obtener la entrada del usuario, estoy haciendo esto (Groovy):
response = System.in.newReader().readLine()
¿Hay alguna forma de hacer que las teclas de flecha (y otras que puedan hacer algo similar) sean "silenciosas"? NB: no tengo idea de si esto también se aplica a *nix BASH...
Respuesta1
Como gradle es un programa Java y Cygwin no tiene su propia máquina Java, está ejecutando un programa de Windows (máquina Java) dentro de la terminal Mintty.
Como tal, se aplican las restricciones habituales:
Al interactuar con programas que utilizan una API nativa de Windows para la interacción del usuario mediante la línea de comandos (“modo consola”), se observan una serie de efectos no deseados; este es el problema de incompatibilidad de pty y el problema de incompatibilidad de codificación de caracteres. Básicamente, esto afecta a todos los programas no compilados en un entorno cygwin o msys (y tenga en cuenta que MinGW no es msys en este contexto).
Se informa más información y alguna posible solución parcial en
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs