Class KeyEvent

All Implemented Interfaces:
Serializable

public class KeyEvent extends InputEvent
KeyEvent Delivery
Key events are delivered in the following order:

#Event Type Constraints Notes
1EVENT_KEY_PRESSED excluding auto-repeat-modifier keys
2EVENT_KEY_RELEASED excluding auto-repeat-modifier keys

In case the native platform does not deliver keyboard events in the above order or skip events, the NEWT driver will reorder and inject synthetic events if required.

Besides regular modifiers like InputEvent.SHIFT_MASK etc., the InputEvent.AUTOREPEAT_MASK bit is added if repetition is detected, following above constraints.

Auto-Repeat shall behave as follow:

    P = pressed, R = released
    0 = normal, 1 = auto-repeat

    P(0), [ R(1), P(1), R(1), ..], R(0)
 
The idea is if you mask out auto-repeat in your event listener you just get one long pressed P/R tuple for printable and Action keys.

Action keys will produce pressed and released events including auto-repeat.

Printable keys will produce pressed and released events.

Modifier keys will produce pressed and released events excluding auto-repeat. They will also influence subsequent event's modifier bits while pressed.

Unicode Mapping

Key-chars, as well as printable key-codes and key-symbols use the UTF-16 unicode space w/o collision.

Non-printable key-codes and key-symbols, i.e. modifier- and action-keys, are mapped to unicode's control and private range and do not collide w/ printable unicode values with the following exception.

Unicode Collision

The following Key-codes and key-symbols collide w/ unicode space:

unicode range virtual key code unicode character
[0x61 .. 0x78] [VK_F1..VK_F24] ['a'..'x']

Collision was chosen for Key-code and key-symbol mapping to allow a minimal code range, i.e. [0..255]. The reduced code range in turn allows the implementation to utilize fast and small lookup tables, e.g. to implement a key-press state tracker.

 http://www.utf8-chartable.de/unicode-utf8-table.pl
 http://www.unicode.org/Public/5.1.0/ucd/PropList.txt
 https://en.wikipedia.org/wiki/Mapping_of_Unicode_characters
 https://en.wikipedia.org/wiki/Unicode_control_characters
 https://en.wikipedia.org/wiki/Private_Use_%28Unicode%29#Private_Use_Areas
 

See Also:
  • Field Details

    • EVENT_KEY_PRESSED

      public static final short EVENT_KEY_PRESSED
      A key has been pressed, excluding auto-repeat-modifier keys.
      See Also:
    • EVENT_KEY_RELEASED

      public static final short EVENT_KEY_RELEASED
      A key has been released, excluding auto-repeat-modifier keys.
      See Also:
    • NULL_CHAR

      public static final char NULL_CHAR
      This value, '\0', is used to indicate that the keyChar is unknown or not printable.
      See Also:
    • nonPrintableKeys

      public static final KeyEvent.NonPrintableRange[] nonPrintableKeys
      Non printable key ranges, currently fixed to an array of size 4.

      Not included, queried upfront:

    • VK_UNDEFINED

      public static final short VK_UNDEFINED
      This value, 0, is used to indicate that the keyCode is unknown.
      See Also:
    • VK_HOME

      public static final short VK_HOME
      Constant for the HOME function key. ASCII: Start Of Text.
      See Also:
    • VK_END

      public static final short VK_END
      Constant for the END function key. ASCII: End Of Text.
      See Also:
    • VK_FINAL

      public static final short VK_FINAL
      Constant for the END function key. ASCII: End Of Transmission.
      See Also:
    • VK_PRINTSCREEN

      public static final short VK_PRINTSCREEN
      Constant for the PRINT function key. ASCII: Enquiry.
      See Also:
    • VK_BACK_SPACE

      public static final short VK_BACK_SPACE
      Constant for the BACK SPACE key "\b", matching ASCII. Printable!
      See Also:
    • VK_TAB

      public static final short VK_TAB
      Constant for the HORIZ TAB key "\t", matching ASCII. Printable!
      See Also:
    • VK_PAGE_DOWN

      public static final short VK_PAGE_DOWN
      Constant for the PAGE DOWN function key. ASCII: Vertical Tabulation.
      See Also:
    • VK_CLEAR

      public static final short VK_CLEAR
      Constant for the CLEAR key, i.e. FORM FEED, matching ASCII.
      See Also:
    • VK_ENTER

      public static final short VK_ENTER
      Constant for the ENTER key, i.e. CARRIAGE RETURN, matching ASCII. Printable!
      See Also:
    • VK_SHIFT

      public static final short VK_SHIFT
      Constant for the CTRL function key. ASCII: shift-in.
      See Also:
    • VK_PAGE_UP

      public static final short VK_PAGE_UP
      Constant for the PAGE UP function key. ASCII: Data Link Escape.
      See Also:
    • VK_CONTROL

      public static final short VK_CONTROL
      Constant for the CTRL function key. ASCII: device-ctrl-one.
      See Also:
    • VK_ALT

      public static final short VK_ALT
      Constant for the left ALT function key. ASCII: device-ctrl-two.
      See Also:
    • VK_ALT_GRAPH

      public static final short VK_ALT_GRAPH
      Constant for the ALT_GRAPH function key, i.e. right ALT key. ASCII: device-ctrl-three.
      See Also:
    • VK_CAPS_LOCK

      public static final short VK_CAPS_LOCK
      Constant for the CAPS LOCK function key. ASCII: device-ctrl-four.
      See Also:
    • VK_PAUSE

      public static final short VK_PAUSE
      Constant for the PAUSE function key. ASCII: sync-idle.
      See Also:
    • VK_SCROLL_LOCK

      public static final short VK_SCROLL_LOCK
      scroll lock key. ASCII: End Of Transmission Block.
      See Also:
    • VK_CANCEL

      public static final short VK_CANCEL
      Constant for the CANCEL function key. ASCII: Cancel.
      See Also:
    • VK_INSERT

      public static final short VK_INSERT
      Constant for the INSERT function key. ASCII: Substitute.
      See Also:
    • VK_ESCAPE

      public static final short VK_ESCAPE
      Constant for the ESCAPE function key. ASCII: Escape.
      See Also:
    • VK_CONVERT

      public static final short VK_CONVERT
      Constant for the Convert function key, Japanese "henkan". ASCII: File Separator.
      See Also:
    • VK_NONCONVERT

      public static final short VK_NONCONVERT
      Constant for the Don't Convert function key, Japanese "muhenkan". ASCII: Group Separator.
      See Also:
    • VK_ACCEPT

      public static final short VK_ACCEPT
      Constant for the Accept or Commit function key, Japanese "kakutei". ASCII: Record Separator.
      See Also:
    • VK_MODECHANGE

      public static final short VK_MODECHANGE
      Constant for the Mode Change (?). ASCII: Unit Separator.
      See Also:
    • VK_SPACE

      public static final short VK_SPACE
      Constant for the SPACE function key. ASCII: SPACE.
      See Also:
    • VK_EXCLAMATION_MARK

      public static final short VK_EXCLAMATION_MARK
      Constant for the "!" key.
      See Also:
    • VK_QUOTEDBL

      public static final short VK_QUOTEDBL
      Constant for the """ key.
      See Also:
    • VK_NUMBER_SIGN

      public static final short VK_NUMBER_SIGN
      Constant for the "#" key.
      See Also:
    • VK_DOLLAR

      public static final short VK_DOLLAR
      Constant for the "$" key.
      See Also:
    • VK_PERCENT

      public static final short VK_PERCENT
      Constant for the "%" key.
      See Also:
    • VK_AMPERSAND

      public static final short VK_AMPERSAND
      Constant for the "&" key.
      See Also:
    • VK_QUOTE

      public static final short VK_QUOTE
      Constant for the "'" key.
      See Also:
    • VK_LEFT_PARENTHESIS

      public static final short VK_LEFT_PARENTHESIS
      Constant for the "(" key.
      See Also:
    • VK_RIGHT_PARENTHESIS

      public static final short VK_RIGHT_PARENTHESIS
      Constant for the ")" key.
      See Also:
    • VK_ASTERISK

      public static final short VK_ASTERISK
      Constant for the "*" key
      See Also:
    • VK_PLUS

      public static final short VK_PLUS
      Constant for the "+" key.
      See Also:
    • VK_COMMA

      public static final short VK_COMMA
      Constant for the comma key, ","
      See Also:
    • VK_MINUS

      public static final short VK_MINUS
      Constant for the minus key, "-"
      See Also:
    • VK_PERIOD

      public static final short VK_PERIOD
      Constant for the period key, "."
      See Also:
    • VK_SLASH

      public static final short VK_SLASH
      Constant for the forward slash key, "/"
      See Also:
    • VK_0

      public static final short VK_0
      VK_0 thru VK_9 are the same as UTF16/ASCII '0' thru '9' [0x30 - 0x39]
      See Also:
    • VK_1

      public static final short VK_1
      See VK_0.
      See Also:
    • VK_2

      public static final short VK_2
      See VK_0.
      See Also:
    • VK_3

      public static final short VK_3
      See VK_0.
      See Also:
    • VK_4

      public static final short VK_4
      See VK_0.
      See Also:
    • VK_5

      public static final short VK_5
      See VK_0.
      See Also:
    • VK_6

      public static final short VK_6
      See VK_0.
      See Also:
    • VK_7

      public static final short VK_7
      See VK_0.
      See Also:
    • VK_8

      public static final short VK_8
      See VK_0.
      See Also:
    • VK_9

      public static final short VK_9
      See VK_0.
      See Also:
    • VK_COLON

      public static final short VK_COLON
      Constant for the ":" key.
      See Also:
    • VK_SEMICOLON

      public static final short VK_SEMICOLON
      Constant for the semicolon key, ";"
      See Also:
    • VK_LESS

      public static final short VK_LESS
      Constant for the equals key, "<"
      See Also:
    • VK_EQUALS

      public static final short VK_EQUALS
      Constant for the equals key, "="
      See Also:
    • VK_GREATER

      public static final short VK_GREATER
      Constant for the equals key, ">"
      See Also:
    • VK_QUESTIONMARK

      public static final short VK_QUESTIONMARK
      Constant for the equals key, "?"
      See Also:
    • VK_AT

      public static final short VK_AT
      Constant for the equals key, "@"
      See Also:
    • VK_A

      public static final short VK_A
      VK_A thru VK_Z are the same as Capital UTF16/ASCII 'A' thru 'Z' (0x41 - 0x5A)
      See Also:
    • VK_B

      public static final short VK_B
      See VK_A.
      See Also:
    • VK_C

      public static final short VK_C
      See VK_A.
      See Also:
    • VK_D

      public static final short VK_D
      See VK_A.
      See Also:
    • VK_E

      public static final short VK_E
      See VK_A.
      See Also:
    • VK_F

      public static final short VK_F
      See VK_A.
      See Also:
    • VK_G

      public static final short VK_G
      See VK_A.
      See Also:
    • VK_H

      public static final short VK_H
      See VK_A.
      See Also:
    • VK_I

      public static final short VK_I
      See VK_A.
      See Also:
    • VK_J

      public static final short VK_J
      See VK_A.
      See Also:
    • VK_K

      public static final short VK_K
      See VK_A.
      See Also:
    • VK_L

      public static final short VK_L
      See VK_A.
      See Also:
    • VK_M

      public static final short VK_M
      See VK_A.
      See Also:
    • VK_N

      public static final short VK_N
      See VK_A.
      See Also:
    • VK_O

      public static final short VK_O
      See VK_A.
      See Also:
    • VK_P

      public static final short VK_P
      See VK_A.
      See Also:
    • VK_Q

      public static final short VK_Q
      See VK_A.
      See Also:
    • VK_R

      public static final short VK_R
      See VK_A.
      See Also:
    • VK_S

      public static final short VK_S
      See VK_A.
      See Also:
    • VK_T

      public static final short VK_T
      See VK_A.
      See Also:
    • VK_U

      public static final short VK_U
      See VK_A.
      See Also:
    • VK_V

      public static final short VK_V
      See VK_A.
      See Also:
    • VK_W

      public static final short VK_W
      See VK_A.
      See Also:
    • VK_X

      public static final short VK_X
      See VK_A.
      See Also:
    • VK_Y

      public static final short VK_Y
      See VK_A.
      See Also:
    • VK_Z

      public static final short VK_Z
      See VK_A.
      See Also:
    • VK_OPEN_BRACKET

      public static final short VK_OPEN_BRACKET
      Constant for the open bracket key, "["
      See Also:
    • VK_BACK_SLASH

      public static final short VK_BACK_SLASH
      Constant for the back slash key, "\"
      See Also:
    • VK_CLOSE_BRACKET

      public static final short VK_CLOSE_BRACKET
      Constant for the close bracket key, "]"
      See Also:
    • VK_CIRCUMFLEX

      public static final short VK_CIRCUMFLEX
      Constant for the "^" key.
      See Also:
    • VK_UNDERSCORE

      public static final short VK_UNDERSCORE
      Constant for the "_" key
      See Also:
    • VK_BACK_QUOTE

      public static final short VK_BACK_QUOTE
      Constant for the "`" key
      See Also:
    • VK_F1

      public static final short VK_F1
      Constant for the Fn function keys.

      F1..F24, i.e. Fn, are mapped from on 0x60+n -> [0x61 .. 0x78].

      Warning: The Fn function keys do collide with unicode characters small 'a' thru 'x'!
      See Unicode Collision for details.

      See Also:
    • VK_F2

      public static final short VK_F2
      Constant for the F2 function key. See VK_F1.
      See Also:
    • VK_F3

      public static final short VK_F3
      Constant for the F3 function key. See VK_F1.
      See Also:
    • VK_F4

      public static final short VK_F4
      Constant for the F4 function key. See VK_F1.
      See Also:
    • VK_F5

      public static final short VK_F5
      Constant for the F5 function key. See VK_F1.
      See Also:
    • VK_F6

      public static final short VK_F6
      Constant for the F6 function key. See VK_F1.
      See Also:
    • VK_F7

      public static final short VK_F7
      Constant for the F7 function key. See VK_F1.
      See Also:
    • VK_F8

      public static final short VK_F8
      Constant for the F8 function key. See VK_F1.
      See Also:
    • VK_F9

      public static final short VK_F9
      Constant for the F9 function key. See VK_F1.
      See Also:
    • VK_F10

      public static final short VK_F10
      Constant for the F11 function key. See VK_F1.
      See Also:
    • VK_F11

      public static final short VK_F11
      Constant for the F11 function key. See VK_F1.
      See Also:
    • VK_F12

      public static final short VK_F12
      Constant for the F12 function key. See VK_F1.
      See Also:
    • VK_F13

      public static final short VK_F13
      Constant for the F13 function key. See VK_F1.
      See Also:
    • VK_F14

      public static final short VK_F14
      Constant for the F14 function key. See VK_F1.
      See Also:
    • VK_F15

      public static final short VK_F15
      Constant for the F15 function key. See VK_F1.
      See Also:
    • VK_F16

      public static final short VK_F16
      Constant for the F16 function key. See VK_F1.
      See Also:
    • VK_F17

      public static final short VK_F17
      Constant for the F17 function key. See VK_F1.
      See Also:
    • VK_F18

      public static final short VK_F18
      Constant for the F18 function key. See VK_F1.
      See Also:
    • VK_F19

      public static final short VK_F19
      Constant for the F19 function key. See VK_F1.
      See Also:
    • VK_F20

      public static final short VK_F20
      Constant for the F20 function key. See VK_F1.
      See Also:
    • VK_F21

      public static final short VK_F21
      Constant for the F21 function key. See VK_F1.
      See Also:
    • VK_F22

      public static final short VK_F22
      Constant for the F22 function key. See VK_F1.
      See Also:
    • VK_F23

      public static final short VK_F23
      Constant for the F23 function key. See VK_F1.
      See Also:
    • VK_F24

      public static final short VK_F24
      Constant for the F24 function key. See VK_F1.
      See Also:
    • VK_LEFT_BRACE

      public static final short VK_LEFT_BRACE
      Constant for the "{" key
      See Also:
    • VK_PIPE

      public static final short VK_PIPE
      Constant for the "|" key
      See Also:
    • VK_RIGHT_BRACE

      public static final short VK_RIGHT_BRACE
      Constant for the "}" key
      See Also:
    • VK_TILDE

      public static final short VK_TILDE
      Constant for the "~" key, matching ASCII
      See Also:
    • VK_SEPARATOR

      public static final short VK_SEPARATOR
      Numeric keypad decimal separator key. Non printable UTF control.
      See Also:
    • VK_NUMPAD0

      public static final short VK_NUMPAD0
      Numeric keypad VK_NUMPAD0 thru VK_NUMPAD9 are mapped to UTF control (0x80 - 0x89). Non printable UTF control.
      See Also:
    • VK_NUMPAD1

      public static final short VK_NUMPAD1
      See Also:
    • VK_NUMPAD2

      public static final short VK_NUMPAD2
      See Also:
    • VK_NUMPAD3

      public static final short VK_NUMPAD3
      See Also:
    • VK_NUMPAD4

      public static final short VK_NUMPAD4
      See Also:
    • VK_NUMPAD5

      public static final short VK_NUMPAD5
      See Also:
    • VK_NUMPAD6

      public static final short VK_NUMPAD6
      See Also:
    • VK_NUMPAD7

      public static final short VK_NUMPAD7
      See Also:
    • VK_NUMPAD8

      public static final short VK_NUMPAD8
      See Also:
    • VK_NUMPAD9

      public static final short VK_NUMPAD9
      See Also:
    • VK_DECIMAL

      public static final short VK_DECIMAL
      Numeric keypad decimal separator key. Non printable UTF control.
      See Also:
    • VK_ADD

      public static final short VK_ADD
      Numeric keypad add key. Non printable UTF control.
      See Also:
    • VK_SUBTRACT

      public static final short VK_SUBTRACT
      Numeric keypad subtract key. Non printable UTF control.
      See Also:
    • VK_MULTIPLY

      public static final short VK_MULTIPLY
      Numeric keypad multiply key. Non printable UTF control.
      See Also:
    • VK_DIVIDE

      public static final short VK_DIVIDE
      Numeric keypad divide key. Non printable UTF control.
      See Also:
    • VK_DELETE

      public static final short VK_DELETE
      Constant for the DEL key, matching ASCII. Non printable UTF control.
      See Also:
    • VK_NUM_LOCK

      public static final short VK_NUM_LOCK
      Numeric keypad num lock key. Non printable UTF control.
      See Also:
    • VK_LEFT

      public static final short VK_LEFT
      Constant for the cursor- or numerical-pad left arrow key. Non printable UTF control.
      See Also:
    • VK_UP

      public static final short VK_UP
      Constant for the cursor- or numerical-pad up arrow key. Non printable UTF control.
      See Also:
    • VK_RIGHT

      public static final short VK_RIGHT
      Constant for the cursor- or numerical-pad right arrow key. Non printable UTF control.
      See Also:
    • VK_DOWN

      public static final short VK_DOWN
      Constant for the cursor- or numerical pad down arrow key. Non printable UTF control.
      See Also:
    • VK_CONTEXT_MENU

      public static final short VK_CONTEXT_MENU
      Constant for the Context Menu key. Non printable UTF control.
      See Also:
    • VK_WINDOWS

      public static final short VK_WINDOWS
      Constant for the MS "Windows" function key. It is used for both the left and right version of the key.
      See Also:
    • VK_META

      public static final short VK_META
      Constant for the Meta function key.
      See Also:
    • VK_HELP

      public static final short VK_HELP
      Constant for the Help function key.
      See Also:
    • VK_COMPOSE

      public static final short VK_COMPOSE
      Constant for the Compose function key.
      See Also:
    • VK_BEGIN

      public static final short VK_BEGIN
      Constant for the Begin function key.
      See Also:
    • VK_STOP

      public static final short VK_STOP
      Constant for the Stop function key.
      See Also:
    • VK_INVERTED_EXCLAMATION_MARK

      public static final short VK_INVERTED_EXCLAMATION_MARK
      Constant for the inverted exclamation mark key.
      See Also:
    • VK_EURO_SIGN

      public static final short VK_EURO_SIGN
      Constant for the Euro currency sign key.
      See Also:
    • VK_CUT

      public static final short VK_CUT
      See Also:
    • VK_COPY

      public static final short VK_COPY
      See Also:
    • VK_PASTE

      public static final short VK_PASTE
      See Also:
    • VK_UNDO

      public static final short VK_UNDO
      See Also:
    • VK_AGAIN

      public static final short VK_AGAIN
      See Also:
    • VK_FIND

      public static final short VK_FIND
      See Also:
    • VK_PROPS

      public static final short VK_PROPS
      See Also:
    • VK_INPUT_METHOD_ON_OFF

      public static final short VK_INPUT_METHOD_ON_OFF
      Constant for the input method on/off key.
      See Also:
    • VK_CODE_INPUT

      public static final short VK_CODE_INPUT
      Constant for the Code Input function key.
      See Also:
    • VK_ROMAN_CHARACTERS

      public static final short VK_ROMAN_CHARACTERS
      Constant for the Roman Characters function key.
      See Also:
    • VK_ALL_CANDIDATES

      public static final short VK_ALL_CANDIDATES
      Constant for the All Candidates function key.
      See Also:
    • VK_PREVIOUS_CANDIDATE

      public static final short VK_PREVIOUS_CANDIDATE
      Constant for the Previous Candidate function key.
      See Also:
    • VK_ALPHANUMERIC

      public static final short VK_ALPHANUMERIC
      Constant for the Alphanumeric function key.
      See Also:
    • VK_KATAKANA

      public static final short VK_KATAKANA
      Constant for the Katakana function key.
      See Also:
    • VK_HIRAGANA

      public static final short VK_HIRAGANA
      Constant for the Hiragana function key.
      See Also:
    • VK_FULL_WIDTH

      public static final short VK_FULL_WIDTH
      Constant for the Full-Width Characters function key.
      See Also:
    • VK_HALF_WIDTH

      public static final short VK_HALF_WIDTH
      Constant for the Half-Width Characters function key.
      See Also:
    • VK_JAPANESE_KATAKANA

      public static final short VK_JAPANESE_KATAKANA
      Constant for the Japanese-Katakana function key. This key switches to a Japanese input method and selects its Katakana input mode.
      See Also:
    • VK_JAPANESE_HIRAGANA

      public static final short VK_JAPANESE_HIRAGANA
      Constant for the Japanese-Hiragana function key. This key switches to a Japanese input method and selects its Hiragana input mode.
      See Also:
    • VK_JAPANESE_ROMAN

      public static final short VK_JAPANESE_ROMAN
      Constant for the Japanese-Roman function key. This key switches to a Japanese input method and selects its Roman-Direct input mode.
      See Also:
    • VK_KANA_LOCK

      public static final short VK_KANA_LOCK
      Constant for the locking Kana function key. This key locks the keyboard into a Kana layout.
      See Also:
    • VK_KEYBOARD_INVISIBLE

      public static final short VK_KEYBOARD_INVISIBLE
      Constant for Keyboard became invisible, e.g. Android's soft keyboard Back button hit while keyboard is visible.
      See Also:
  • Method Details

    • create

      public static KeyEvent create(short eventType, Object source, long when, int modifiers, short keyCode, short keySym, char keyChar)
    • getKeyChar

      public final char getKeyChar()
      Returns the UTF-16 character reflecting the key symbol incl. active modifiers.
      See Also:
    • getKeySymbol

      public final short getKeySymbol()
      Returns the virtual key symbol reflecting the current keyboard layout.

      For printable keys, the key symbol is the unmodified representation of the UTF-16 key char.
      E.g. symbol [VK_A, 'A'] for char 'a'.

      See Also:
    • getKeyCode

      public final short getKeyCode()
      Returns the virtual key code using a fixed mapping to the US keyboard layout.

      In contrast to key symbol, key code uses a fixed US keyboard layout and therefore is keyboard layout independent.

      E.g. virtual key code VK_Y denotes the same physical key regardless whether keyboard layout QWERTY or QWERTZ is active. The key symbol of the former is VK_Y, where the latter produces VK_Y.

      See Also:
    • toString

      public final String toString()
      Overrides:
      toString in class InputEvent
    • toString

      public final StringBuilder toString(StringBuilder sb)
      Overrides:
      toString in class InputEvent
    • getEventTypeString

      public static String getEventTypeString(short type)
    • utf16ToVKey

      public static short utf16ToVKey(char keyChar)
      Parameters:
      keyChar - UTF16 value to map. It is expected that the incoming keyChar value is unshifted and unmodified, however, lower case a-z is mapped to VK_A - VK_Z.
      Returns:
      KeyEvent virtual key (VK) value.
    • isModifierKey

      public static boolean isModifierKey(short vKey)
      Returns true if the given virtualKey represents a modifier key, otherwise false.

      A modifier key is one of VK_SHIFT, VK_CONTROL, VK_ALT, VK_ALT_GRAPH, VK_META.

    • getModifierMask

      public static int getModifierMask(short vKey)
      If vKey is a modifier key, method returns the corresponding modifier mask, otherwise 0.
    • isModifierKey

      public final boolean isModifierKey()
      Returns true if key symbol represents a modifier key, otherwise false.

      See isModifierKey(short) for details.

      Note: Implementation uses a cached value.

    • isActionKey

      public final boolean isActionKey()
      Returns true if key symbol represents a non-printable and non-modifier action key, otherwise false.

      Hence it is the set A of all keys U w/o printable P and w/o modifiers M: A = U - ( P + M )

      See Also:
    • isPrintableKey

      public static boolean isPrintableKey(short uniChar, boolean isKeyChar)
      Returns true if given uniChar represents a printable character, i.e. a value other than VK_UNDEFINED and not a control or non-printable private code.

      A printable character is neither a modifier key, nor an action key.

      Otherwise returns false.

      Distinction of key character and virtual key code is made due to unicode collision.

      Parameters:
      uniChar - the UTF-16 unicode value, which maybe a virtual key code or key character.
      isKeyChar - true if uniChar is a key character, otherwise a virtual key code
    • isPrintableKey

      public final boolean isPrintableKey()
      Returns true if key symbol and key char represents a printable character, i.e. a value other than VK_UNDEFINED and not a control or non-printable private code.

      A printable character is neither a modifier key, nor an action key.

      Otherwise returns false.