I\'m having trouble capturing the
Have a look at JLine. I have not used it myself. It uses a windows DLL (using JNI) and it has linux support to switch the console to character/raw mode instead of buffered mode. I have never used this before so use at your own risk. I am also not 100% sure if it will address your issue, but its worth a shot :)
EDIT: I can confirm it does work
ConsoleReader cr = new ConsoleReader();
while (cr.readVirtualKey() != 0x09){
//loop till Tab is pressed
}
EDIT AGAIN: The library does contain autocomplete (by pressing tab) for the command line... Enjoy :)
Data from an InputStream is only made available when the user has pressed enter. I think you'll find that if you press enter after tab, the tab will show up.
In c applications, there is something similar: a shell sets the input mode to raw from cooked, since it needs the raw keystrokes. Readline is the normal library used for this in Linux. I'm not sure what's common on Windows. As far as I can think, something using JNI is the only option here.
I would guess that your shell is capturing tab and preventing it from getting to your application. There may not be anything you can do about this...