Class WindowsTerminal
- All Implemented Interfaces:
ConsoleOperations
Terminal implementation for Microsoft Windows. Terminal initialization in
initializeTerminal() is accomplished by extracting the
jline_version.dll, saving it to the system temporary
directoy (determined by the setting of the java.io.tmpdir System
property), loading the library, and then calling the Win32 APIs SetConsoleMode and
GetConsoleMode to
disable character echoing.
By default, the readCharacter(InputStream) method will attempt to test to see if
the specified InputStream is System.in or a wrapper around
FileDescriptor.in, and if so, will bypass the character reading to
directly invoke the readc() method in the JNI library. This is so the class
can read special keys (like arrow keys) which are otherwise inaccessible via
the System.in stream. Using JNI reading can be bypassed by setting
the jline.WindowsTerminal.directConsole system property
to false.
- Author:
- Marc Prud'hommeaux
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the delete key was pressed.static final intWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates an down arrow key press.static final charWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the end key was pressed.static final charWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR, this character indicates that the escape key was pressed.static final intWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the home key was pressed.static final charWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the insert key was pressed.static final intWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR, this character indicates an left arrow key press.static final intOn windows terminals, this character indicates that a special key on the number pad has been pressed.static final charWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the page down key was pressed.static final charWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the page up key was pressed.static final intWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates an right arrow key press.static final intOn windows terminals, this character indicates that a 'special' key has been pressed.static final intWhen following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates an up arrow key press.Fields inherited from interface ConsoleOperations
ABORT, ADD, BACKSPACE, CHANGE_CASE, CHANGE_META, CLEAR_LINE, CLEAR_SCREEN, COMPLETE, CR, CTRL_A, CTRL_B, CTRL_C, CTRL_D, CTRL_E, CTRL_F, CTRL_G, CTRL_K, CTRL_L, CTRL_N, CTRL_OB, CTRL_P, CTRL_QM, DELETE, DELETE_META, DELETE_NEXT_CHAR, DELETE_PREV_CHAR, DELETE_PREV_WORD, END_OF_HISTORY, END_WORD, EXIT, INSERT, KEYBOARD_BELL, KILL_LINE, KILL_LINE_PREV, MOVE_TO_BEG, MOVE_TO_END, NEWLINE, NEXT_CHAR, NEXT_HISTORY, NEXT_SPACE_WORD, NEXT_WORD, PASTE, PASTE_NEXT, PASTE_PREV, PREV_CHAR, PREV_HISTORY, PREV_SPACE_WORD, PREV_WORD, REDISPLAY, REPEAT_NEXT_CHAR, REPEAT_PREV_CHAR, REPEAT_SEARCH_NEXT, REPEAT_SEARCH_PREV, REPLACE_CHAR, REPLACE_MODE, RESET_LINE, SEARCH_NEXT, SEARCH_PREV, START_OF_HISTORY, SUBSTITUTE_CHAR, SUBSTITUTE_LINE, TO_END_WORD, TO_NEXT_CHAR, TO_PREV_CHAR, UNDO, UNKNOWN -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidDisable character echoing.voidEnable character echoing.Whether or not to allow the use of the JNI console interaction.booleangetEcho()Returns true if the terminal will echo all characters type.intUnsupported; return the default.intUnsupported; return the default.voidInitialize any system settings that are required for the console to be able to handle input correctly, such as setting tabtop, buffered input, and character echo.booleanWindows doesn't support ANSI codes by default; disable them.booleanReturns false if character echoing is disabled.booleanReturns true if this terminal is capable of initializing the terminal to use jline.intRead a single character from the input stream.intReads a virtual key from the console.voidsetDirectConsole(Boolean directConsole) Whether or not to allow the use of the JNI console interaction.Methods inherited from class Terminal
afterReadLine, beforeReadLine, getTerminal, resetTerminal, setupTerminal
-
Field Details
-
SPECIAL_KEY_INDICATOR
On windows terminals, this character indicates that a 'special' key has been pressed. This means that a key such as an arrow key, or delete, or home, etc. will be indicated by the next character.- See Also:
-
NUMPAD_KEY_INDICATOR
On windows terminals, this character indicates that a special key on the number pad has been pressed.- See Also:
-
LEFT_ARROW_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR, this character indicates an left arrow key press.- See Also:
-
RIGHT_ARROW_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates an right arrow key press.- See Also:
-
UP_ARROW_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates an up arrow key press.- See Also:
-
DOWN_ARROW_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates an down arrow key press.- See Also:
-
DELETE_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the delete key was pressed.- See Also:
-
HOME_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the home key was pressed.- See Also:
-
END_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the end key was pressed.- See Also:
-
PAGE_UP_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the page up key was pressed.- See Also:
-
PAGE_DOWN_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the page down key was pressed.- See Also:
-
INSERT_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR this character indicates that the insert key was pressed.- See Also:
-
ESCAPE_KEY
When following the SPECIAL_KEY_INDICATOR or NUMPAD_KEY_INDICATOR, this character indicates that the escape key was pressed.- See Also:
-
-
Constructor Details
-
WindowsTerminal
public WindowsTerminal()
-
-
Method Details
-
readCharacter
Description copied from class:TerminalRead a single character from the input stream. This might enable a terminal implementation to better handle nuances of the console.- Overrides:
readCharacterin classTerminal- Throws:
IOException
-
initializeTerminal
Description copied from class:TerminalInitialize any system settings that are required for the console to be able to handle input correctly, such as setting tabtop, buffered input, and character echo.- Specified by:
initializeTerminalin classTerminal- Throws:
Exception
-
readVirtualKey
Description copied from class:TerminalReads a virtual key from the console. Typically, this will just be the raw character that was entered, but in some cases, multiple input keys will need to be translated into a single virtual key.- Overrides:
readVirtualKeyin classTerminal- Parameters:
in- the InputStream to read from- Returns:
- the virtual key (e.g.,
)
invalid reference
ConsoleOperations#VK_UP - Throws:
IOException
-
isSupported
Description copied from class:TerminalReturns true if this terminal is capable of initializing the terminal to use jline.- Specified by:
isSupportedin classTerminal
-
isANSISupported
Windows doesn't support ANSI codes by default; disable them.- Overrides:
isANSISupportedin classTerminal
-
getEcho
-
getTerminalWidth
Unsupported; return the default.- Specified by:
getTerminalWidthin classTerminal- See Also:
-
getTerminalHeight
Unsupported; return the default.- Specified by:
getTerminalHeightin classTerminal- See Also:
-
setDirectConsole
Whether or not to allow the use of the JNI console interaction. -
getDirectConsole
Whether or not to allow the use of the JNI console interaction. -
isEchoEnabled
Description copied from class:TerminalReturns false if character echoing is disabled.- Specified by:
isEchoEnabledin classTerminal
-
enableEcho
Description copied from class:TerminalEnable character echoing. This can be used to re-enable character if the ConsoleReader is no longer being used.- Specified by:
enableEchoin classTerminal
-
disableEcho
Description copied from class:TerminalDisable character echoing. This can be used to manually re-enable character if the ConsoleReader has been disabled.- Specified by:
disableEchoin classTerminal
-
getDefaultBindings
- Overrides:
getDefaultBindingsin classTerminal
-