APIdia Launch Partner
Top Description Fields Constructors Methods
java.awt.event

public non-sealed Class KeyEvent

extends InputEvent
Class Inheritance
Known Direct Subclasses
javax.swing.event.MenuKeyEvent
Imports
java.awt.Component, .GraphicsEnvironment, .Toolkit, java.io.IOException, .ObjectInputStream, .Serial, sun.awt.AWTAccessor

An event which indicates that a keystroke occurred in a component.

This low-level event is generated by a component object (such as a text field) when a key is pressed, released, or typed. The event is passed to every KeyListener or KeyAdapter object which registered to receive such events using the component's addKeyListener method. (KeyAdapter objects implement the KeyListener interface.) Each such listener object gets this KeyEvent when the event occurs.

"Key typed" events are higher-level and generally do not depend on the platform or keyboard layout. They are generated when a Unicode character is entered, and are the preferred way to find out about character input. In the simplest case, a key typed event is produced by a single key press (e.g., 'a'). Often, however, characters are produced by series of key presses (e.g., 'shift' + 'a'), and the mapping from key pressed events to key typed events may be many-to-one or many-to-many. Key releases are not usually necessary to generate a key typed event, but there are some cases where the key typed event is not generated until a key is released (e.g., entering ASCII sequences via the Alt-Numpad method in Windows). No key typed events are generated for keys that don't generate Unicode characters (e.g., action keys, modifier keys, etc.).

The getKeyChar method always returns a valid Unicode character or CHAR_UNDEFINED. Character input is reported by KEY_TYPED events: KEY_PRESSED and KEY_RELEASED events are not necessarily associated with character input. Therefore, the result of the getKeyChar method is guaranteed to be meaningful only for KEY_TYPED events.

For key pressed and key released events, the getKeyCode method returns the event's keyCode. For key typed events, the getKeyCode method always returns VK_UNDEFINED. The getExtendedKeyCode method may also be used with many international keyboard layouts.

"Key pressed" and "key released" events are lower-level and depend on the platform and keyboard layout. They are generated whenever a key is pressed or released, and are the only way to find out about keys that don't generate character input (e.g., action keys, modifier keys, etc.). The key being pressed or released is indicated by the getKeyCode and getExtendedKeyCode methods, which return a virtual key code.

Virtual key codes are used to report which keyboard key has been pressed, rather than a character generated by the combination of one or more keystrokes (such as "A", which comes from shift and "a").

For example, pressing the Shift key will cause a KEY_PRESSED event with a VK_SHIFT keyCode, while pressing the 'a' key will result in a VK_A keyCode. After the 'a' key is released, a KEY_RELEASED event will be fired with VK_A. Separately, a KEY_TYPED event with a keyChar value of 'A' is generated.

Pressing and releasing a key on the keyboard results in the generating the following key events (in order):

   KEY_PRESSED
   KEY_TYPED (is only generated if a valid Unicode character could be generated.)
   KEY_RELEASED
But in some cases (e.g. auto-repeat or input method is activated) the order could be different (and platform dependent).

Notes:

Warning

Aside from those keys that are defined by the Java language (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_ constants. The platform steward reserves the right to change these values as needed to accommodate a wider range of keyboards in the future.

An unspecified behavior will be caused if the id parameter of any particular KeyEvent instance is not in the range from KEY_FIRST to KEY_LAST.

Authors
Carl Quinn, Amy Fowler, Norbert Lindenberg
Since
1.1
See Also
KeyAdapter, KeyListener, Tutorial: Writing a Key Listener

Field Summary

Modifier and TypeField and Description
public static final char
CHAR_UNDEFINED

KEY_PRESSED and KEY_RELEASED events which do not map to a valid Unicode character use this for the keyChar value.

private transient long
private boolean
public static final int
KEY_FIRST

The first number in the range of ids used for key events.

public static final int
KEY_LAST

The last number in the range of ids used for key events.

public static final int
KEY_LOCATION_LEFT

A constant indicating that the key pressed or released is in the left key location (there is more than one possible location for this key).

public static final int
KEY_LOCATION_NUMPAD

A constant indicating that the key event originated on the numeric keypad or with a virtual key corresponding to the numeric keypad.

public static final int
KEY_LOCATION_RIGHT

A constant indicating that the key pressed or released is in the right key location (there is more than one possible location for this key).

public static final int
KEY_LOCATION_STANDARD

A constant indicating that the key pressed or released is not distinguished as the left or right version of a key, and did not originate on the numeric keypad (or did not originate with a virtual key corresponding to the numeric keypad).

public static final int
KEY_LOCATION_UNKNOWN

A constant indicating that the keyLocation is indeterminate or not relevant.

public static final int
KEY_PRESSED

The "key pressed" event.

public static final int
KEY_RELEASED

The "key released" event.

public static final int
KEY_TYPED

The "key typed" event.

pack-priv char
keyChar

keyChar is a valid unicode character that is fired by a key or a key combination on a keyboard.

pack-priv int
keyCode

The unique value assigned to each of the keys on the keyboard.

pack-priv int
keyLocation

The location of the key on the keyboard.

private Component
private transient long
private transient long
private transient long
private static final long
serialVersionUID

Hides java.awt.event.InputEvent.serialVersionUID.

Use serialVersionUID from JDK 1.1 for interoperability.
public static final int
VK_0

Constant for the "0" key.

public static final int
VK_1

Constant for the "1" key.

public static final int
VK_2

Constant for the "2" key.

public static final int
VK_3

Constant for the "3" key.

public static final int
VK_4

Constant for the "4" key.

public static final int
VK_5

Constant for the "5" key.

public static final int
VK_6

Constant for the "6" key.

public static final int
VK_7

Constant for the "7" key.

public static final int
VK_8

Constant for the "8" key.

public static final int
VK_9

Constant for the "9" key.

public static final int
VK_A

Constant for the "A" key.

public static final int
VK_ACCEPT

Constant for the Accept or Commit function key.

public static final int
VK_ADD

Constant for the number pad add key.

public static final int
VK_AGAIN

Constant for the Again key.

public static final int
VK_ALL_CANDIDATES

Constant for the All Candidates function key.

public static final int
VK_ALPHANUMERIC

Constant for the Alphanumeric function key.

public static final int
VK_ALT

Constant for the ALT virtual key.

public static final int
VK_ALT_GRAPH

Constant for the AltGraph function key.

public static final int
VK_AMPERSAND

Constant for the "&" key.

public static final int
VK_ASTERISK

Constant for the "*" key.

public static final int
VK_AT

Constant for the "@" key.

public static final int
VK_B

Constant for the "B" key.

public static final int
VK_BACK_QUOTE

Constant for the BACK_QUOTE key.

public static final int
VK_BACK_SLASH

Constant for the back slash key, "\"

public static final int
VK_BACK_SPACE

Constant for the BACK_SPACE virtual key.

public static final int
VK_BEGIN

Constant for the Begin key.

public static final int
VK_BRACELEFT

Constant for the "{" key.

public static final int
VK_BRACERIGHT

Constant for the "}" key.

public static final int
VK_C

Constant for the "C" key.

public static final int
VK_CANCEL

Constant for the CANCEL virtual key.

public static final int
VK_CAPS_LOCK

Constant for the CAPS_LOCK virtual key.

public static final int
VK_CIRCUMFLEX

Constant for the "^" key.

public static final int
VK_CLEAR

Constant for the CLEAR virtual key.

public static final int
VK_CLOSE_BRACKET

Constant for the close bracket key, "]"

public static final int
VK_CODE_INPUT

Constant for the Code Input function key.

public static final int
VK_COLON

Constant for the ":" key.

public static final int
VK_COMMA

Constant for the comma key, ","

public static final int
VK_COMPOSE

Constant for the Compose function key.

public static final int
VK_CONTEXT_MENU

Constant for the Microsoft Windows Context Menu key.

public static final int
VK_CONTROL

Constant for the CONTROL virtual key.

public static final int
VK_CONVERT

Constant for the Convert function key.

public static final int
VK_COPY

Constant for the Copy key.

public static final int
VK_CUT

Constant for the Cut key.

public static final int
VK_D

Constant for the "D" key.

public static final int
VK_DEAD_ABOVEDOT

Constant for the Dead Above Dot key.

public static final int
VK_DEAD_ABOVERING

Constant for the Dead Above Ring key.

public static final int
VK_DEAD_ACUTE

Constant for the Dead Acute key.

public static final int
VK_DEAD_BREVE

Constant for the Dead Breve key.

public static final int
VK_DEAD_CARON

Constant for the Dead Caron key.

public static final int
VK_DEAD_CEDILLA

Constant for the Dead Cedilla key.

public static final int
VK_DEAD_CIRCUMFLEX

Constant for the Dead Circumflex key.

public static final int
VK_DEAD_DIAERESIS

Constant for the Dead Diaeresis key.

public static final int
VK_DEAD_DOUBLEACUTE

Constant for the Dead Double Acute key.

public static final int
VK_DEAD_GRAVE

Constant for the Dead Grave key.

public static final int
VK_DEAD_IOTA

Constant for the Dead Iota key.

public static final int
VK_DEAD_MACRON

Constant for the Dead Macron key.

public static final int
VK_DEAD_OGONEK

Constant for the Dead Ogonek key.

public static final int
VK_DEAD_SEMIVOICED_SOUND

Constant for the Dead Semivoiced Sound key.

public static final int
VK_DEAD_TILDE

Constant for the Dead Tilde key.

public static final int
VK_DEAD_VOICED_SOUND

Constant for the Dead Voiced Sound key.

public static final int
VK_DECIMAL

Constant for the number pad decimal point key.

public static final int
VK_DELETE

Constant for the delete key.

public static final int
VK_DIVIDE

Constant for the number pad divide key.

public static final int
VK_DOLLAR

Constant for the "$" key.

public static final int
VK_DOWN

Constant for the non-numpad down arrow key.

public static final int
VK_E

Constant for the "E" key.

public static final int
VK_END

Constant for the END virtual key.

public static final int
VK_ENTER

Constant for the ENTER virtual key.

public static final int
VK_EQUALS

Constant for the equals key, "="

public static final int
VK_ESCAPE

Constant for the ESCAPE virtual key.

public static final int
VK_EURO_SIGN

Constant for the Euro currency sign key.

public static final int
VK_EXCLAMATION_MARK

Constant for the "!" key.

public static final int
VK_F

Constant for the "F" key.

public static final int
VK_F1

Constant for the F1 function key.

public static final int
VK_F10

Constant for the F10 function key.

public static final int
VK_F11

Constant for the F11 function key.

public static final int
VK_F12

Constant for the F12 function key.

public static final int
VK_F13

Constant for the F13 function key.

public static final int
VK_F14

Constant for the F14 function key.

public static final int
VK_F15

Constant for the F15 function key.

public static final int
VK_F16

Constant for the F16 function key.

public static final int
VK_F17

Constant for the F17 function key.

public static final int
VK_F18

Constant for the F18 function key.

public static final int
VK_F19

Constant for the F19 function key.

public static final int
VK_F2

Constant for the F2 function key.

public static final int
VK_F20

Constant for the F20 function key.

public static final int
VK_F21

Constant for the F21 function key.

public static final int
VK_F22

Constant for the F22 function key.

public static final int
VK_F23

Constant for the F23 function key.

public static final int
VK_F24

Constant for the F24 function key.

public static final int
VK_F3

Constant for the F3 function key.

public static final int
VK_F4

Constant for the F4 function key.

public static final int
VK_F5

Constant for the F5 function key.

public static final int
VK_F6

Constant for the F6 function key.

public static final int
VK_F7

Constant for the F7 function key.

public static final int
VK_F8

Constant for the F8 function key.

public static final int
VK_F9

Constant for the F9 function key.

public static final int
VK_FINAL

Constant for the FINAL key.

public static final int
VK_FIND

Constant for the Find key.

public static final int
VK_FULL_WIDTH

Constant for the Full-Width Characters function key.

public static final int
VK_G

Constant for the "G" key.

public static final int
VK_GREATER

Constant for the ">" key.

public static final int
VK_H

Constant for the "H" key.

public static final int
VK_HALF_WIDTH

Constant for the Half-Width Characters function key.

public static final int
VK_HELP

Constant for the HELP key.

public static final int
VK_HIRAGANA

Constant for the Hiragana function key.

public static final int
VK_HOME

Constant for the HOME virtual key.

public static final int
VK_I

Constant for the "I" key.

public static final int
VK_INPUT_METHOD_ON_OFF

Constant for the input method on/off key.

public static final int
VK_INSERT

Constant for the INSERT key.

public static final int
VK_INVERTED_EXCLAMATION_MARK

Constant for the inverted exclamation mark key.

public static final int
VK_J

Constant for the "J" key.

public static final int
VK_JAPANESE_HIRAGANA

Constant for the Japanese-Hiragana function key.

public static final int
VK_JAPANESE_KATAKANA

Constant for the Japanese-Katakana function key.

public static final int
VK_JAPANESE_ROMAN

Constant for the Japanese-Roman function key.

public static final int
VK_K

Constant for the "K" key.

public static final int
VK_KANA

Constant for the KANA lock key.

public static final int
VK_KANA_LOCK

Constant for the locking Kana function key.

public static final int
VK_KANJI

Constant for KANJI.

public static final int
VK_KATAKANA

Constant for the Katakana function key.

public static final int
VK_KP_DOWN

Constant for the numeric keypad down arrow key.

public static final int
VK_KP_LEFT

Constant for the numeric keypad left arrow key.

public static final int
VK_KP_RIGHT

Constant for the numeric keypad right arrow key.

public static final int
VK_KP_UP

Constant for the numeric keypad up arrow key.

public static final int
VK_L

Constant for the "L" key.

public static final int
VK_LEFT

Constant for the non-numpad left arrow key.

public static final int
VK_LEFT_PARENTHESIS

Constant for the "(" key.

public static final int
VK_LESS

Constant for the "<" key.

public static final int
VK_M

Constant for the "M" key.

public static final int
VK_META

Constant for the META key.

public static final int
VK_MINUS

Constant for the minus key, "-"

public static final int
VK_MODECHANGE

Constant for the MODECHANGE key.

public static final int
VK_MULTIPLY

Constant for the number pad multiply key.

public static final int
VK_N

Constant for the "N" key.

public static final int
VK_NONCONVERT

Constant for the Don't Convert function key.

public static final int
VK_NUM_LOCK

Constant for the NUM_LOCK key.

public static final int
VK_NUMBER_SIGN

Constant for the "#" key.

public static final int
VK_NUMPAD0

Constant for the number pad "0" key.

public static final int
VK_NUMPAD1

Constant for the number pad "1" key.

public static final int
VK_NUMPAD2

Constant for the number pad "2" key.

public static final int
VK_NUMPAD3

Constant for the number pad "3" key.

public static final int
VK_NUMPAD4

Constant for the number pad "4" key.

public static final int
VK_NUMPAD5

Constant for the number pad "5" key.

public static final int
VK_NUMPAD6

Constant for the number pad "6" key.

public static final int
VK_NUMPAD7

Constant for the number pad "7" key.

public static final int
VK_NUMPAD8

Constant for the number pad "8" key.

public static final int
VK_NUMPAD9

Constant for the number pad "9" key.

public static final int
VK_O

Constant for the "O" key.

public static final int
VK_OPEN_BRACKET

Constant for the open bracket key, "["

public static final int
VK_P

Constant for the "P" key.

public static final int
VK_PAGE_DOWN

Constant for the PAGE_DOWN virtual key.

public static final int
VK_PAGE_UP

Constant for the PAGE_UP virtual key.

public static final int
VK_PASTE

Constant for the Paste key.

public static final int
VK_PAUSE

Constant for the PAUSE virtual key.

public static final int
VK_PERIOD

Constant for the period key, "."

public static final int
VK_PLUS

Constant for the "+" key.

public static final int
VK_PREVIOUS_CANDIDATE

Constant for the Previous Candidate function key.

public static final int
VK_PRINTSCREEN

Constant for the PRINTSCREEN key.

public static final int
VK_PROPS

Constant for the Props key.

public static final int
VK_Q

Constant for the "Q" key.

public static final int
VK_QUOTE

Constant for the QUOTE key.

public static final int
VK_QUOTEDBL

Constant for the """" key.

public static final int
VK_R

Constant for the "R" key.

public static final int
VK_RIGHT

Constant for the non-numpad right arrow key.

public static final int
VK_RIGHT_PARENTHESIS

Constant for the ")" key.

public static final int
VK_ROMAN_CHARACTERS

Constant for the Roman Characters function key.

public static final int
VK_S

Constant for the "S" key.

public static final int
VK_SCROLL_LOCK

Constant for the SCROLL_LOCK key.

public static final int
VK_SEMICOLON

Constant for the semicolon key, ";"

public static final int
VK_SEPARATER

This constant is obsolete, and is included only for backwards compatibility.

public static final int
VK_SEPARATOR

Constant for the Numpad Separator key.

public static final int
VK_SHIFT

Constant for the SHIFT virtual key.

public static final int
VK_SLASH

Constant for the forward slash key, "/"

public static final int
VK_SPACE

Constant for the SPACE virtual key.

public static final int
VK_STOP

Constant for the Stop key.

public static final int
VK_SUBTRACT

Constant for the number pad subtract key.

public static final int
VK_T

Constant for the "T" key.

public static final int
VK_TAB

Constant for the TAB virtual key.

public static final int
VK_U

Constant for the "U" key.

public static final int
VK_UNDEFINED

This value is used to indicate that the keyCode is unknown.

public static final int
VK_UNDERSCORE

Constant for the "_" key.

public static final int
VK_UNDO

Constant for the Undo key.

public static final int
VK_UP

Constant for the non-numpad up arrow key.

public static final int
VK_V

Constant for the "V" key.

public static final int
VK_W

Constant for the "W" key.

public static final int
VK_WINDOWS

Constant for the Microsoft Windows "Windows" key.

public static final int
VK_X

Constant for the "X" key.

public static final int
VK_Y

Constant for the "Y" key.

public static final int
VK_Z

Constant for the "Z" key.

Inherited from java.awt.event.InputEvent:
ALT_DOWN_MASKALT_GRAPH_DOWN_MASKALT_GRAPH_MASKALT_MASKBUTTON1_DOWN_MASKBUTTON1_MASKBUTTON2_DOWN_MASKBUTTON2_MASKBUTTON3_DOWN_MASKBUTTON3_MASKCTRL_DOWN_MASKCTRL_MASKFIRST_HIGH_BITHIGH_MODIFIERSJDK_1_3_MODIFIERSMETA_DOWN_MASKMETA_MASKmodifiersSHIFT_DOWN_MASKSHIFT_MASKwhen

Constructor Summary

AccessConstructor and Description
private
KeyEvent(Component source, int id, long when, int modifiers, int keyCode, char keyChar, int keyLocation, boolean isProxyActive)

public
KeyEvent(Component
The Component that originated the event
source
,
int
An integer indicating the type of event. For information on allowable values, see the class description for KeyEvent
id
,
long
A long integer that specifies the time the event occurred. Passing negative or zero value is not recommended
when
,
int
The modifier keys down during event (shift, ctrl, alt, meta). Passing negative value is not recommended. Zero value means that no modifiers were passed. Use either an extended _DOWN_MASK or old _MASK modifiers, however do not mix models in the one event. The extended modifiers are preferred for using
modifiers
,
int
The integer code for an actual key, or VK_UNDEFINED (for a key-typed event)
keyCode
,
char
The Unicode character generated by this event, or CHAR_UNDEFINED (for key-pressed and key-released events which do not map to a valid Unicode character)
keyChar
,
int
Identifies the key location. The only legal values are KEY_LOCATION_UNKNOWN, KEY_LOCATION_STANDARD, KEY_LOCATION_LEFT, KEY_LOCATION_RIGHT, and KEY_LOCATION_NUMPAD.
keyLocation
)

Constructs a KeyEvent object.

public
KeyEvent(Component
The Component that originated the event
source
,
int
An integer indicating the type of event. For information on allowable values, see the class description for KeyEvent
id
,
long
A long integer that specifies the time the event occurred. Passing negative or zero value is not recommended
when
,
int
The modifier keys down during event (shift, ctrl, alt, meta). Passing negative value is not recommended. Zero value means that no modifiers were passed. Use either an extended _DOWN_MASK or old _MASK modifiers, however do not mix models in the one event. The extended modifiers are preferred for using
modifiers
,
int
The integer code for an actual key, or VK_UNDEFINED (for a key-typed event)
keyCode
,
char
The Unicode character generated by this event, or CHAR_UNDEFINED (for key-pressed and key-released events which do not map to a valid Unicode character)
keyChar
)

Constructs a KeyEvent object.

public
KeyEvent(Component
The Component that originated the event
source
,
int
An integer indicating the type of event. For information on allowable values, see the class description for KeyEvent
id
,
long
A long integer that specifies the time the event occurred. Passing negative or zero value is not recommended
when
,
int
The modifier keys down during event (shift, ctrl, alt, meta). Passing negative value is not recommended. Zero value means that no modifiers were passed. Use either an extended _DOWN_MASK or old _MASK modifiers, however do not mix models in the one event. The extended modifiers are preferred for using
modifiers
,
int
The integer code for an actual key, or VK_UNDEFINED (for a key-typed event)
keyCode
)
Deprecated as of JDK1.1; use KeyEvent(Component, int, long, int, int, char) instead

Method Summary

Modifier and TypeMethod and Description
public int

Returns:

an extended key code for the event
getExtendedKeyCode
()

Returns an extended key code for the event.

public static int

Returns:

for a unicode character with a corresponding VK_ constant -- this VK_ constant; for a character appearing on the primary level of a known keyboard layout -- a unique integer. If a character does not appear on the primary level of a known keyboard, VK_UNDEFINED is returned.
getExtendedKeyCodeForChar
(int
the unicode character to be processed
c
)

Returns an extended key code for a unicode character.

public char

Returns:

the Unicode character defined for this key event. If no valid Unicode character exists for this key event, CHAR_UNDEFINED is returned.
getKeyChar
()

Returns the character associated with the key in this event.

public int

Returns:

the integer code for an actual key on the keyboard. (For KEY_TYPED events, the keyCode is VK_UNDEFINED.)
getKeyCode
()

Returns the integer keyCode associated with the key in this event.

public int

Returns:

the location of the key that was pressed or released. Always returns KEY_LOCATION_UNKNOWN for KEY_TYPED events.
getKeyLocation
()

Returns the location of the key that originated this key event.

public static String

Returns:

string a text description of the combination of modifier keys that were held down during the event
getKeyModifiersText
(int
the modifier mask to be processed
modifiers
)
Deprecated since 9. It is recommended that extended modifier keys and InputEvent#getModifiersExText(int) be used instead

Returns a String describing the modifier key(s), such as "Shift", or "Ctrl+Shift".

public static String

Returns:

a string containing a text description for a physical key, identified by its keyCode
getKeyText
(int
the key whose description is to be returned
keyCode
)

Returns a String describing the keyCode, such as "HOME", "F1" or "A".

private static native void
initIDs()

Hides java.awt.event.InputEvent.initIDs.

Initialize JNI field and method IDs for fields that may be accessed from C.

public boolean

Returns:

true if the key is an "action" key, false otherwise
isActionKey
()

Returns whether the key in this event is an "action" key.

public String

Returns:

a string identifying the event and its attributes
paramString
()

Overrides java.awt.event.ComponentEvent.paramString.

Returns a parameter string identifying this event.

private void
readObject(ObjectInputStream
the ObjectInputStream to read
s
)

Sets new modifiers by the old ones.

public void
setKeyChar(char
a char corresponding to the combination of keystrokes that make up this event.
keyChar
)

Set the keyChar value to indicate a logical character.

public void
setKeyCode(int
an integer corresponding to an actual key on the keyboard.
keyCode
)

Set the keyCode value to indicate a physical key.

public void
setModifiers(int
an integer combination of the modifier constants.
modifiers
)
Deprecated as of JDK1.1.4

Set the modifiers to indicate additional keys that were held down (e.g. shift, ctrl, alt, meta) defined as part of InputEvent.

private void
setNewModifiers()

Sets new modifiers by the old ones.

private void
setOldModifiers()

Sets old modifiers by the new ones.

Inherited from java.awt.event.InputEvent:
consumegetMaskForButtongetModifiersgetModifiersExgetModifiersExTextgetWhenisAltDownisAltGraphDownisConsumedisControlDownisMetaDownisShiftDown