Class WinConsoleNative

java.lang.Object
org.aesh.terminal.tty.impl.WinConsoleNative

public final class WinConsoleNative extends Object
JNI bridge to Windows console API (Kernel32). Replaces JNA for GraalVM native-image compatibility.

This class provides low-level access to Windows console functions via JNI. The native library (aesh-console.dll) is loaded from the system library path or extracted from the JAR at runtime.

  • Field Details

    • STD_INPUT_HANDLE

      public static final int STD_INPUT_HANDLE
      Standard input handle identifier.
      See Also:
    • STD_OUTPUT_HANDLE

      public static final int STD_OUTPUT_HANDLE
      Standard output handle identifier.
      See Also:
    • STD_ERROR_HANDLE

      public static final int STD_ERROR_HANDLE
      Standard error handle identifier.
      See Also:
    • INVALID_HANDLE

      public static final long INVALID_HANDLE
      Invalid handle sentinel value.
      See Also:
    • KEY_EVENT

      public static final int KEY_EVENT
      Event type constants matching Windows INPUT_RECORD.EventType.
      See Also:
    • WINDOW_BUFFER_SIZE_EVENT

      public static final int WINDOW_BUFFER_SIZE_EVENT
      Window buffer size event type.
      See Also:
    • ENABLE_VIRTUAL_TERMINAL_PROCESSING

      public static final int ENABLE_VIRTUAL_TERMINAL_PROCESSING
      Console mode flag: enable virtual terminal processing on output handle.
      See Also:
    • ENABLE_VIRTUAL_TERMINAL_INPUT

      public static final int ENABLE_VIRTUAL_TERMINAL_INPUT
      Console mode flag: enable virtual terminal input on input handle.
      See Also:
  • Method Details

    • getStdHandle

      public static long getStdHandle(int nStdHandle)
      Returns the handle for the specified standard device.
      Parameters:
      nStdHandle - the standard device identifier
      Returns:
      the device handle
    • getConsoleMode

      public static int getConsoleMode(long handle)
      Returns the current console mode for the given handle.
      Parameters:
      handle - the console handle
      Returns:
      the console mode flags
    • setConsoleMode

      public static boolean setConsoleMode(long handle, int mode)
      Sets the console mode for the given handle.
      Parameters:
      handle - the console handle
      mode - the console mode flags
      Returns:
      true if successful
    • getConsoleOutputCP

      public static int getConsoleOutputCP()
      Returns the console output code page.
      Returns:
      the output code page identifier
    • getConsoleSize

      public static int[] getConsoleSize(long handle)
      Returns the console size as {columns, rows}.
      Parameters:
      handle - the console handle
      Returns:
      array of {columns, rows}
    • readConsoleInputEvent

      public static int[] readConsoleInputEvent(long handle)
      Read a console input event (key or window resize). Returns int[] where first element is the event type: KEY_EVENT (1): {1, keyDown, repeatCount, vKeyCode, unicodeChar, controlKeyState} WINDOW_BUFFER_SIZE_EVENT (4): {4, width, height} Returns null for other event types or on error.
      Parameters:
      handle - the console input handle
      Returns:
      the event data array, or null
    • writeConsole

      public static boolean writeConsole(long handle, char[] buffer, int length)
      Writes characters to the console.
      Parameters:
      handle - the console output handle
      buffer - the characters to write
      length - the number of characters to write
      Returns:
      true if successful