1
タブキーが押されたときに、タブ補完機能(コマンドを完了するか、可能なオプションをリストする)を持つ対話型コマンドラインプログラムがあります。Java Process API - 対話型シェルプログラムにタブキープレスイベントを送信する
私はProcessBuilderで子プロセスとしてコマンドラインプログラムを起動する別のJavaプログラムを作成しています。
Process.getInputStream()
とProcess.getOutputStream()
を使用して入力をプロセスに渡すことができます。
ここで、子プロセスで自動補完をトリガーしたいと思います。税金文字'\t'
を印刷すると、タブの自動補完をトリガーするのではなく、通常のタブ文字として扱われます。
Javaプロセスからキープロセスまたは同等のイベントを子プロセスに送信する方法はありますか?
を使用してUnixのための例のxdotoolのために、OS固有のコマンドを実行しているを使用して試みることができるねえジャック、あなたはこのhttpsに表情を与えました:/ /stackoverflow.com/questions/3537706/how-to-unescape-a-java-string-literal-in-java –
これは違うようです。この場合、文字 '¥t'を書くと、子プロセスは単一のタブ文字を読み込みます。 "\\ t"(実質的に2文字)を送信すると、子プロセスは2文字を読み込みます。しかし、私が欲しいのは、キープレスイベントを送信することです。 – JackDaniels
プログラムが非対話的に使用されているとプログラムが判断した場合、完了のような機能はしばしば無効になります。特に、bash(4.1)の場合、readlineは、シェルが「非オプション引数なしで起動され、-cオプションなしで標準入力とエラーの両方が端末に接続されている(isatty(3)によって決定される) 、または... -iオプションで始まりました "。デフォルトでは 'ProcessBuilder'のJava、' Runtime.exec'は常に子のstdin/out/errにパイプを使いパイプはisattyからfalseを返します。他のシェルやプログラムについては、そのドキュメンテーションを確認してください。 –