Package org.jline.terminal.impl.jna.win
Class JnaWinSysTerminal
- java.lang.Object
-
- org.jline.terminal.impl.AbstractTerminal
-
- org.jline.terminal.impl.AbstractWindowsTerminal
-
- org.jline.terminal.impl.jna.win.JnaWinSysTerminal
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
,Terminal
public class JnaWinSysTerminal extends AbstractWindowsTerminal
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.jline.terminal.Terminal
Terminal.MouseTracking, Terminal.Signal, Terminal.SignalHandler
-
-
Field Summary
Fields Modifier and Type Field Description private static com.sun.jna.Pointer
consoleIn
private static com.sun.jna.Pointer
consoleOut
private com.sun.jna.ptr.IntByReference
eventsRead
private char[]
focus
private Kernel32.INPUT_RECORD[]
inputEvents
private char[]
mouse
-
Fields inherited from class org.jline.terminal.impl.AbstractWindowsTerminal
attributes, closer, ENABLE_ECHO_INPUT, ENABLE_INSERT_MODE, ENABLE_LINE_INPUT, ENABLE_MOUSE_INPUT, ENABLE_PROCESSED_INPUT, ENABLE_QUICK_EDIT_MODE, ENABLE_VIRTUAL_TERMINAL_PROCESSING, ENABLE_WINDOW_INPUT, focusTracking, input, lock, nativeHandlers, originalConsoleMode, output, paused, pump, reader, slaveInputPipe, tracking, TYPE_WINDOWS, TYPE_WINDOWS_256_COLOR, TYPE_WINDOWS_CONEMU, TYPE_WINDOWS_VTP, writer
-
Fields inherited from class org.jline.terminal.impl.AbstractTerminal
bools, encoding, handlers, ints, name, onClose, palette, status, strings, type
-
Fields inherited from interface org.jline.terminal.Terminal
TYPE_DUMB, TYPE_DUMB_COLOR
-
-
Constructor Summary
Constructors Constructor Description JnaWinSysTerminal(java.io.Writer writer, java.lang.String name, java.lang.String type, java.nio.charset.Charset encoding, int codepage, boolean nativeSignals, Terminal.SignalHandler signalHandler)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static JnaWinSysTerminal
createTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, int codepage, boolean nativeSignals, Terminal.SignalHandler signalHandler, boolean paused)
Size
getBufferSize()
Retrieve the size of the window buffer.protected int
getConsoleMode()
Cursor
getCursorPosition(java.util.function.IntConsumer discarded)
Query the terminal to report the cursor position.Size
getSize()
Retrieve the size of the visible windowstatic boolean
isConsoleInput()
static boolean
isConsoleOutput()
static boolean
isWindowsConsole()
protected boolean
processConsoleInput()
Read a single input event from the input buffer and process it.private void
processFocusEvent(boolean hasFocus)
private void
processKeyEvent(Kernel32.KEY_EVENT_RECORD keyEvent)
private void
processMouseEvent(Kernel32.MOUSE_EVENT_RECORD mouseEvent)
private Kernel32.INPUT_RECORD
readConsoleInput(int dwMilliseconds)
protected void
setConsoleMode(int mode)
-
Methods inherited from class org.jline.terminal.impl.AbstractWindowsTerminal
canPauseResume, ctrl, doClose, getAttributes, getEscapeSequence, getRawSequence, handle, hasFocusSupport, input, output, pause, pause, paused, processInputChar, processKeyEvent, pump, reader, resume, setAttributes, setSize, trackFocus, trackMouse, updateConsoleMode, writer
-
Methods inherited from class org.jline.terminal.impl.AbstractTerminal
checkInterrupted, close, echo, echo, echoSignal, encoding, enterRawMode, flush, getBooleanCapability, getKind, getName, getNumericCapability, getPalette, getStatus, getStatus, getStringCapability, getType, hasMouseSupport, parseInfoCmp, puts, raise, readMouseEvent, readMouseEvent, setOnClose
-
-
-
-
Field Detail
-
consoleIn
private static final com.sun.jna.Pointer consoleIn
-
consoleOut
private static final com.sun.jna.Pointer consoleOut
-
focus
private char[] focus
-
mouse
private char[] mouse
-
inputEvents
private final Kernel32.INPUT_RECORD[] inputEvents
-
eventsRead
private final com.sun.jna.ptr.IntByReference eventsRead
-
-
Constructor Detail
-
JnaWinSysTerminal
JnaWinSysTerminal(java.io.Writer writer, java.lang.String name, java.lang.String type, java.nio.charset.Charset encoding, int codepage, boolean nativeSignals, Terminal.SignalHandler signalHandler) throws java.io.IOException
- Throws:
java.io.IOException
-
-
Method Detail
-
createTerminal
public static JnaWinSysTerminal createTerminal(java.lang.String name, java.lang.String type, boolean ansiPassThrough, java.nio.charset.Charset encoding, int codepage, boolean nativeSignals, Terminal.SignalHandler signalHandler, boolean paused) throws java.io.IOException
- Throws:
java.io.IOException
-
isWindowsConsole
public static boolean isWindowsConsole()
-
isConsoleOutput
public static boolean isConsoleOutput()
-
isConsoleInput
public static boolean isConsoleInput()
-
getConsoleMode
protected int getConsoleMode()
- Specified by:
getConsoleMode
in classAbstractWindowsTerminal
-
setConsoleMode
protected void setConsoleMode(int mode)
- Specified by:
setConsoleMode
in classAbstractWindowsTerminal
-
getSize
public Size getSize()
Description copied from interface:Terminal
Retrieve the size of the visible window- Returns:
- the visible terminal size
- See Also:
Terminal.getBufferSize()
-
getBufferSize
public Size getBufferSize()
Description copied from interface:Terminal
Retrieve the size of the window buffer. Some terminals can be configured to have a buffer size larger than the visible window size and provide scroll bars. In such cases, this method should attempt to return the size of the whole buffer. ThegetBufferSize()
method can be used to avoid wrapping when using the terminal in a line editing mode, while theTerminal.getSize()
method should be used when using full screen mode.- Returns:
- the terminal buffer size
- See Also:
Terminal.getSize()
-
processConsoleInput
protected boolean processConsoleInput() throws java.io.IOException
Description copied from class:AbstractWindowsTerminal
Read a single input event from the input buffer and process it.- Specified by:
processConsoleInput
in classAbstractWindowsTerminal
- Returns:
- true if new input was generated from the event
- Throws:
java.io.IOException
- if anything wrong happens
-
processKeyEvent
private void processKeyEvent(Kernel32.KEY_EVENT_RECORD keyEvent) throws java.io.IOException
- Throws:
java.io.IOException
-
processFocusEvent
private void processFocusEvent(boolean hasFocus) throws java.io.IOException
- Throws:
java.io.IOException
-
processMouseEvent
private void processMouseEvent(Kernel32.MOUSE_EVENT_RECORD mouseEvent) throws java.io.IOException
- Throws:
java.io.IOException
-
readConsoleInput
private Kernel32.INPUT_RECORD readConsoleInput(int dwMilliseconds) throws java.io.IOException
- Throws:
java.io.IOException
-
getCursorPosition
public Cursor getCursorPosition(java.util.function.IntConsumer discarded)
Description copied from interface:Terminal
Query the terminal to report the cursor position. As the response is read from the input stream, some characters may be read before the cursor position is actually read. Those characters can be given back usingorg.jline.keymap.BindingReader#runMacro(String)
- Specified by:
getCursorPosition
in interfaceTerminal
- Overrides:
getCursorPosition
in classAbstractTerminal
- Parameters:
discarded
- a consumer receiving discarded characters- Returns:
null
if cursor position reporting is not supported or a valid cursor position
-
-