UnixTerminal
Date: 2015-12-09

jline

## Class UnixTerminal

- java.lang.Object
- - jline.Terminal
  - - jline.UnixTerminal

- All Implemented Interfaces:
    ConsoleOperations

      public class UnixTerminal
      extends Terminal

  Terminal that is used for unix platforms. Terminal initialization is handled by issuing the stty command against the /dev/tty file to disable character echoing and enable character input. All known unix systems (including Linux and Macintosh OS X) support the stty), so this implementation should work for an reasonable POSIX system.

  Author:
    Marc Prud'hommeaux, Updates Dale Kemp 2005-12-03

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static short` | `ARROW_DOWN`
    `static short` | `ARROW_LEFT`
    `static short` | `ARROW_PREFIX`
    `static short` | `ARROW_RIGHT`
    `static short` | `ARROW_START`
    `static short` | `ARROW_UP`
    `static short` | `DEL_SECOND`
    `static short` | `DEL_THIRD`
    `static short` | `END_CODE`
    `static short` | `HOME_CODE`
    `static short` | `O_PREFIX`

    - ### Fields inherited from interface jline.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
    Constructor and Description
    `UnixTerminal()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `checkBackspace()`
    `void` | `disableEcho()` Disable character echoing.
    `void` | `enableEcho()` Enable character echoing.
    `boolean` | `getEcho()` Returns true if the terminal will echo all characters type.
    `static java.lang.String` | `getSttyCommand()` The command to use to set the terminal options.
    `int` | `getTerminalHeight()` Returns the value of "stty size" height param.
    `int` | `getTerminalWidth()` Returns the value of "stty size" width param.
    `void` | `initializeTerminal()` Remove line-buffered input by invoking "stty -icanon min 1" against the current terminal.
    `boolean` | `isEchoEnabled()` Returns false if character echoing is disabled.
    `boolean` | `isSupported()` Returns true if this terminal is capable of initializing the terminal to use jline.
    `int` | `readVirtualKey(java.io.InputStream in)` Reads a virtual key from the console.
    `void` | `restoreTerminal()` Restore the original terminal configuration, which can be used when shutting down the console reader.
    `static void` | `setSttyCommand(java.lang.String cmd)` The command to use to set the terminal options.
    `protected static java.lang.String` | `stty(java.lang.String args)` Execute the stty command with the specified arguments against the current active terminal.

    - ### Methods inherited from class jline.Terminal

      `afterReadLine, beforeReadLine, getDefaultBindings, getTerminal, isANSISupported, readCharacter, resetTerminal, setupTerminal`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### ARROW_START

          public static final short ARROW_START

      See Also:
        Constant Field Values

    - #### ARROW_PREFIX

          public static final short ARROW_PREFIX

      See Also:
        Constant Field Values

    - #### ARROW_LEFT

          public static final short ARROW_LEFT

      See Also:
        Constant Field Values

    - #### ARROW_RIGHT

          public static final short ARROW_RIGHT

      See Also:
        Constant Field Values

    - #### ARROW_UP

          public static final short ARROW_UP

      See Also:
        Constant Field Values

    - #### ARROW_DOWN

          public static final short ARROW_DOWN

      See Also:
        Constant Field Values

    - #### O_PREFIX

          public static final short O_PREFIX

      See Also:
        Constant Field Values

    - #### HOME_CODE

          public static final short HOME_CODE

      See Also:
        Constant Field Values

    - #### END_CODE

          public static final short END_CODE

      See Also:
        Constant Field Values

    - #### DEL_THIRD

          public static final short DEL_THIRD

      See Also:
        Constant Field Values

    - #### DEL_SECOND

          public static final short DEL_SECOND

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### UnixTerminal

          public UnixTerminal()

  - ### Method Detail

    - #### checkBackspace

          protected void checkBackspace()

    - #### initializeTerminal

          public void initializeTerminal()
                                  throws java.io.IOException,
                                         java.lang.InterruptedException

      Remove line-buffered input by invoking "stty -icanon min 1" against the current terminal.
      Specified by:
        `initializeTerminal` in class `Terminal`
      Throws:
        `java.io.IOException`
        `java.lang.InterruptedException`

    - #### restoreTerminal

          public void restoreTerminal()
                               throws java.lang.Exception

      Restore the original terminal configuration, which can be used when shutting down the console reader. The ConsoleReader cannot be used after calling this method.
      Throws:
        `java.lang.Exception`

    - #### readVirtualKey

          public int readVirtualKey(java.io.InputStream in)
                             throws java.io.IOException

      Description copied from class: `Terminal`
      Reads 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:
        `readVirtualKey` in class `Terminal`
      Parameters:
        `in` - the InputStream to read from
      Returns:
        the virtual key (e.g., `ConsoleOperations#VK_UP`)
      Throws:
        `java.io.IOException`

    - #### isSupported

          public boolean isSupported()

      Description copied from class: `Terminal`
      Returns true if this terminal is capable of initializing the terminal to use jline.
      Specified by:
        `isSupported` in class `Terminal`

    - #### getEcho

          public boolean getEcho()

      Description copied from class: `Terminal`
      Returns true if the terminal will echo all characters type.
      Specified by:
        `getEcho` in class `Terminal`

    - #### getTerminalWidth

          public int getTerminalWidth()

      Returns the value of "stty size" width param. Note: this method caches the value from the first time it is called in order to increase speed, which means that changing to size of the terminal will not be reflected in the console.
      Specified by:
        `getTerminalWidth` in class `Terminal`

    - #### getTerminalHeight

          public int getTerminalHeight()

      Returns the value of "stty size" height param. Note: this method caches the value from the first time it is called in order to increase speed, which means that changing to size of the terminal will not be reflected in the console.
      Specified by:
        `getTerminalHeight` in class `Terminal`

    - #### stty

          protected static java.lang.String stty(java.lang.String args)
                                          throws java.io.IOException,
                                                 java.lang.InterruptedException

      Execute the stty command with the specified arguments against the current active terminal.
      Throws:
        `java.io.IOException`
        `java.lang.InterruptedException`

    - #### setSttyCommand

          public static void setSttyCommand(java.lang.String cmd)

      The command to use to set the terminal options. Defaults to "stty", or the value of the system property "jline.sttyCommand".

    - #### getSttyCommand

          public static java.lang.String getSttyCommand()

      The command to use to set the terminal options. Defaults to "stty", or the value of the system property "jline.sttyCommand".

    - #### isEchoEnabled

          public boolean isEchoEnabled()

      Description copied from class: `Terminal`
      Returns false if character echoing is disabled.
      Specified by:
        `isEchoEnabled` in class `Terminal`

    - #### enableEcho

          public void enableEcho()

      Description copied from class: `Terminal`
      Enable character echoing. This can be used to re-enable character if the ConsoleReader is no longer being used.
      Specified by:
        `enableEcho` in class `Terminal`

    - #### disableEcho

          public void disableEcho()

      Description copied from class: `Terminal`
      Disable character echoing. This can be used to manually re-enable character if the ConsoleReader has been disabled.
      Specified by:
        `disableEcho` in class `Terminal`