Class JnaWinSysTerminal

java.lang.Object
org.jline.terminal.impl.AbstractTerminal
org.jline.terminal.impl.AbstractWindowsTerminal<com.sun.jna.Pointer>
org.jline.terminal.impl.jna.win.JnaWinSysTerminal
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable, Terminal

public class JnaWinSysTerminal extends AbstractWindowsTerminal<com.sun.jna.Pointer>
  • Field Details

    • consoleIn

      private static final com.sun.jna.Pointer consoleIn
    • consoleOut

      private static final com.sun.jna.Pointer consoleOut
    • consoleErr

      private static final com.sun.jna.Pointer consoleErr
    • 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 Details

  • Method Details

    • createTerminal

      public static JnaWinSysTerminal createTerminal(String name, String type, boolean ansiPassThrough, Charset encoding, boolean nativeSignals, Terminal.SignalHandler signalHandler, boolean paused, TerminalProvider.Stream consoleStream) throws IOException
      Throws:
      IOException
    • enableVtp

      private static boolean enableVtp(com.sun.jna.Pointer console, int outMode)
    • isWindowsSystemStream

      public static boolean isWindowsSystemStream(TerminalProvider.Stream stream)
    • getConsoleMode

      protected int getConsoleMode(com.sun.jna.Pointer console)
      Specified by:
      getConsoleMode in class AbstractWindowsTerminal<com.sun.jna.Pointer>
    • setConsoleMode

      protected void setConsoleMode(com.sun.jna.Pointer console, int mode)
      Specified by:
      setConsoleMode in class AbstractWindowsTerminal<com.sun.jna.Pointer>
    • getSize

      public Size getSize()
      Description copied from interface: Terminal
      Retrieve the size of the visible window
      Returns:
      the visible terminal size
      See Also:
    • 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. The getBufferSize() method can be used to avoid wrapping when using the terminal in a line editing mode, while the Terminal.getSize() method should be used when using full screen mode.
      Returns:
      the terminal buffer size
      See Also:
    • processConsoleInput

      protected boolean processConsoleInput() throws IOException
      Description copied from class: AbstractWindowsTerminal
      Read a single input event from the input buffer and process it.
      Specified by:
      processConsoleInput in class AbstractWindowsTerminal<com.sun.jna.Pointer>
      Returns:
      true if new input was generated from the event
      Throws:
      IOException - if anything wrong happens
    • processKeyEvent

      private void processKeyEvent(Kernel32.KEY_EVENT_RECORD keyEvent) throws IOException
      Throws:
      IOException
    • processFocusEvent

      private void processFocusEvent(boolean hasFocus) throws IOException
      Throws:
      IOException
    • processMouseEvent

      private void processMouseEvent(Kernel32.MOUSE_EVENT_RECORD mouseEvent) throws IOException
      Throws:
      IOException
    • readConsoleInput

      private Kernel32.INPUT_RECORD readConsoleInput(int dwMilliseconds) throws IOException
      Throws:
      IOException
    • getCursorPosition

      public Cursor getCursorPosition(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 using org.jline.keymap.BindingReader#runMacro(String)
      Specified by:
      getCursorPosition in interface Terminal
      Overrides:
      getCursorPosition in class AbstractTerminal
      Parameters:
      discarded - a consumer receiving discarded characters
      Returns:
      null if cursor position reporting is not supported or a valid cursor position