题
我无法捕捉
要给予一定的情况下,我想允许用户按下TAB键中间命令把它自动完成的命令(就像你可能在bash shell做)。我很开放的建议,如果有更好的方法来实现这一目标(可能使用System.in.read()是不是最好的角度来处理这个?)。
解决方案
看一看的JLine 。我没有用它自己。它使用一个Windows DLL(使用JNI),它有Linux支持切换控制台字符/原始模式,而不是缓冲模式。我从来没有用过这个您自己的风险之前,所以使用。我也不能100%肯定这是否会解决您的问题,但它值得一试:)
修改强>我可以证实它的工作
ConsoleReader cr = new ConsoleReader();
while (cr.readVirtualKey() != 0x09){
//loop till Tab is pressed
}
修改AGAIN:强>库确实包含自动完成(通过按标签)用于命令行...享受:)
其他提示
我猜你的shell是捕获标签,并防止它进入您的应用程序。可能没有什么可以做这个...
从InputStream的数据仅当用户按下输入提供。我想你会发现,如果你按选项卡后输入,标签会显示出来。
在C应用程序,有类似的东西:一个外壳熟从设定输入模式为原料,因为它需要原始击键。的Readline是在Linux中使用这种正常的库。我不知道什么是常见的Windows上。至于我能想到的,使用JNI的东西是唯一的选择这里。
不隶属于 StackOverflow