Java Process API - 将tab键按事件发送到交互式shell程序

时间:2017-09-24 22:12:21

标签: java java-io

我有一个交互式命令行程序,当按下Tab键时,它有标签完成功能(完成命令或列出可能的选项)。

我正在编写另一个Java程序,它将使用ProcessBuilder作为子进程启动命令行程序。

我可以使用Process.getInputStream()Process.getOutputStream()将输入传递给流程。

现在,我想在子进程中触发自动完成。当我打印税字符'\t'时,它被视为常规制表符,而不是触发标签自动完成。

有没有办法将密钥按或等效事件从Java进程发送到子进程?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用机器人

Robot robot = new Robot();
robot.mouseMove(x, y); //Select the console window at x,y
robot.keyPress(KeyEvent.VK_TAB); //Send tab key  

或者还运行特定于操作系统的命令,例如使用X11的xdotool for Unix

xdotool windowactivate id &&
xdotool key Tab &&