I'm having trouble capturing the <tab> keystroke in my Java command-line application. Using System.in.read() I don't seem to get anything when hitting the tab key. What is the best way to approach this?
To give some context, I'm trying to allow a user to hit the tab key mid-command to have it autocomplete the command (much like you might do in a bash shell). I'm open to suggestions if there are better approaches to achieving this (perhaps using System.in.read() isn't the best angle to approach this?).
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 :)