Cygwin で矢印キーを入力すると「偽の」文字が出力される

Cygwin で矢印キーを入力すると「偽の」文字が出力される

コマンドライン アプリを実行しているとき (実際、実行していますが$ gradle run、これが重要かどうかはわかりません)、誤って上矢印を押してから下矢印を押してプロンプト ライン (つまり、アプリ内) に戻り、Return キーを押して、入力した文字列を調べると、次のような画面が表示されます。

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

...ここではq<Return>矢印キーを使用した後に「 」と入力しただけですが、'q'の前にいくつかおかしな文字が追加されています。

ユーザー入力を取得するには、次のようにします (Groovy):

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

矢印キー (および同様の機能を持つその他のキー) を「サイレント」にする方法はありますか? 注: これが *nix BASH にも適用されるかどうかはわかりません...

答え1

gradle は Java プログラムであり、Cygwin には独自の Java マシンがないため、Mintty ターミナル内で Windows プログラム (Java マシン) を実行します。

そのため、通常の制約が適用されます。

コマンドライン ユーザー インタラクション (「コンソール モード」) にネイティブ Windows API を使用するプログラムと対話する場合、いくつかの望ましくない影響が見られます。これは、pty の非互換性の問題と文字エンコードの非互換性の問題です。これは基本的に、cygwin または msys 環境でコンパイルされていないすべてのプログラムに影響します (このコンテキストでは MinGW は msys ではないことに注意してください)。

さらなる情報と部分的な回避策については、
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs

関連情報