При запуске приложения из командной строки (на самом деле я собираюсь $ gradle run , я не знаю, может ли это быть значительным), если я случайно нажму стрелку вверх, а затем стрелку вниз, чтобы вернуться к строке подсказки ( т.е. в моем приложении) и нажмите Return, и проверьте введенную строку, я увижу что-то вроде этого:

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

... здесь я набрал " q<Return> " только после использования клавиш со стрелками ... но они добавили некоторые забавные вещи перед "q".

Для получения пользовательского ввода я делаю это (Groovy):

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

Есть ли способ сделать клавиши со стрелками (и другие, которые могли бы сделать что-то подобное) "тихим"? NB Я понятия не имею, относится ли это также к * nix BASH ...

1 ответ1

1

Поскольку gradle - это Java-программа, а у Cygwin нет собственной Java-машины, вы запускаете Windows-программу (Java-машину) внутри терминала Mintty.

Таким образом, применяются обычные ограничения:

При взаимодействии с программами, использующими собственный API-интерфейс Windows для взаимодействия с пользователем из командной строки («режим консоли»), наблюдается ряд нежелательных эффектов; это проблема несовместимости pty и проблема несовместимости кодировки символов. Это в основном влияет на все программы, не скомпилированные в среде cygwin или msys (и обратите внимание, что MinGW не является msys в этом контексте).

Дополнительная информация и некоторые возможные частичные обходные пути сообщаются на
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .