# Keyboard (LWJGL API)
Date: 2015-07-28

## org.lwjgl.input
Class Keyboard

    java.lang.Object
      org.lwjgl.input.Keyboard

    public class Keyboard

extends java.lang.Object

A raw Keyboard interface. This can be used to poll the current state of the keys, or read all the keyboard presses / releases since the last read.

Version:
  $Revision$ $Id$
Author:
  cix_foo <cix_foo@users.sourceforge.net>, elias_naur <elias_naur@users.sourceforge.net>, Brian Matzon <brian@matzon.dk>

Field Summary
`static int` `CHAR_NONE` The special character meaning that no character was translated for the event.
`static int` `EVENT_SIZE` Internal use - event size in bytes
`static int` `KEY_0`
`static int` `KEY_1`
`static int` `KEY_2`
`static int` `KEY_3`
`static int` `KEY_4`
`static int` `KEY_5`
`static int` `KEY_6`
`static int` `KEY_7`
`static int` `KEY_8`
`static int` `KEY_9`
`static int` `KEY_A`
`static int` `KEY_ADD`
`static int` `KEY_APOSTROPHE`
`static int` `KEY_APPS`
`static int` `KEY_AT`
`static int` `KEY_AX`
`static int` `KEY_B`
`static int` `KEY_BACK`
`static int` `KEY_BACKSLASH`
`static int` `KEY_C`
`static int` `KEY_CAPITAL`
`static int` `KEY_CIRCUMFLEX`
`static int` `KEY_CLEAR`
`static int` `KEY_COLON`
`static int` `KEY_COMMA`
`static int` `KEY_CONVERT`
`static int` `KEY_D`
`static int` `KEY_DECIMAL`
`static int` `KEY_DELETE`
`static int` `KEY_DIVIDE`
`static int` `KEY_DOWN`
`static int` `KEY_E`
`static int` `KEY_END`
`static int` `KEY_EQUALS`
`static int` `KEY_ESCAPE`
`static int` `KEY_F`
`static int` `KEY_F1`
`static int` `KEY_F10`
`static int` `KEY_F11`
`static int` `KEY_F12`
`static int` `KEY_F13`
`static int` `KEY_F14`
`static int` `KEY_F15`
`static int` `KEY_F16`
`static int` `KEY_F17`
`static int` `KEY_F18`
`static int` `KEY_F19`
`static int` `KEY_F2`
`static int` `KEY_F3`
`static int` `KEY_F4`
`static int` `KEY_F5`
`static int` `KEY_F6`
`static int` `KEY_F7`
`static int` `KEY_F8`
`static int` `KEY_F9`
`static int` `KEY_FUNCTION`
`static int` `KEY_G`
`static int` `KEY_GRAVE`
`static int` `KEY_H`
`static int` `KEY_HOME`
`static int` `KEY_I`
`static int` `KEY_INSERT`
`static int` `KEY_J`
`static int` `KEY_K`
`static int` `KEY_KANA`
`static int` `KEY_KANJI`
`static int` `KEY_L`
`static int` `KEY_LBRACKET`
`static int` `KEY_LCONTROL`
`static int` `KEY_LEFT`
`static int` `KEY_LMENU`
`static int` `KEY_LMETA`
`static int` `KEY_LSHIFT`
`static int` `KEY_LWIN` Deprecated. Use KEY_LMETA instead
`static int` `KEY_M`
`static int` `KEY_MINUS`
`static int` `KEY_MULTIPLY`
`static int` `KEY_N`
`static int` `KEY_NEXT`
`static int` `KEY_NOCONVERT`
`static int` `KEY_NONE` The special keycode meaning that only the translated character is valid.
`static int` `KEY_NUMLOCK`
`static int` `KEY_NUMPAD0`
`static int` `KEY_NUMPAD1`
`static int` `KEY_NUMPAD2`
`static int` `KEY_NUMPAD3`
`static int` `KEY_NUMPAD4`
`static int` `KEY_NUMPAD5`
`static int` `KEY_NUMPAD6`
`static int` `KEY_NUMPAD7`
`static int` `KEY_NUMPAD8`
`static int` `KEY_NUMPAD9`
`static int` `KEY_NUMPADCOMMA`
`static int` `KEY_NUMPADENTER`
`static int` `KEY_NUMPADEQUALS`
`static int` `KEY_O`
`static int` `KEY_P`
`static int` `KEY_PAUSE`
`static int` `KEY_PERIOD`
`static int` `KEY_POWER`
`static int` `KEY_PRIOR`
`static int` `KEY_Q`
`static int` `KEY_R`
`static int` `KEY_RBRACKET`
`static int` `KEY_RCONTROL`
`static int` `KEY_RETURN`
`static int` `KEY_RIGHT`
`static int` `KEY_RMENU`
`static int` `KEY_RMETA`
`static int` `KEY_RSHIFT`
`static int` `KEY_RWIN` Deprecated. Use KEY_RMETA instead
`static int` `KEY_S`
`static int` `KEY_SCROLL`
`static int` `KEY_SECTION`
`static int` `KEY_SEMICOLON`
`static int` `KEY_SLASH`
`static int` `KEY_SLEEP`
`static int` `KEY_SPACE`
`static int` `KEY_STOP`
`static int` `KEY_SUBTRACT`
`static int` `KEY_SYSRQ`
`static int` `KEY_T`
`static int` `KEY_TAB`
`static int` `KEY_U`
`static int` `KEY_UNDERLINE`
`static int` `KEY_UNLABELED`
`static int` `KEY_UP`
`static int` `KEY_V`
`static int` `KEY_W`
`static int` `KEY_X`
`static int` `KEY_Y`
`static int` `KEY_YEN`
`static int` `KEY_Z`
`static int` `KEYBOARD_SIZE`

Method Summary
`static boolean` `areRepeatEventsEnabled()` Check whether repeat events are currently reported or not.
`static void` `create()` "Create" the keyboard.
`static void` `destroy()` "Destroy" the keyboard
`static void` `enableRepeatEvents(boolean enable)` Controls whether repeat events are reported or not.
`static char` `getEventCharacter()`
`static int` `getEventKey()` Please note that the key code returned is NOT valid against the current keyboard layout.
`static boolean` `getEventKeyState()` Gets the state of the key that generated the current event
`static long` `getEventNanoseconds()` Gets the time in nanoseconds of the current event.
`static int` `getKeyCount()`
`static int` `getKeyIndex(java.lang.String keyName)` Get's a key's index.
`static java.lang.String` `getKeyName(int key)` Gets a key's name
`static int` `getNumKeyboardEvents()` Gets the number of keyboard events waiting after doing a buffer enabled poll().
`static boolean` `isCreated()`
`static boolean` `isKeyDown(int key)` Checks to see if a key is down.
`static boolean` `isRepeatEvent()`
`static boolean` `next()` Gets the next keyboard event.
`static void` `poll()` Polls the keyboard for its current state.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### EVENT_SIZE

    public static final int EVENT_SIZE

  Internal use - event size in bytes

  See Also:
    Constant Field Values

### CHAR_NONE

    public static final int CHAR_NONE

  The special character meaning that no character was translated for the event.

  See Also:
    Constant Field Values

### KEY_NONE

    public static final int KEY_NONE

  The special keycode meaning that only the translated character is valid.

  See Also:
    Constant Field Values

### KEY_ESCAPE

    public static final int KEY_ESCAPE

See Also:
  Constant Field Values

### KEY_1

    public static final int KEY_1

See Also:
  Constant Field Values

### KEY_2

    public static final int KEY_2

See Also:
  Constant Field Values

### KEY_3

    public static final int KEY_3

See Also:
  Constant Field Values

### KEY_4

    public static final int KEY_4

See Also:
  Constant Field Values

### KEY_5

    public static final int KEY_5

See Also:
  Constant Field Values

### KEY_6

    public static final int KEY_6

See Also:
  Constant Field Values

### KEY_7

    public static final int KEY_7

See Also:
  Constant Field Values

### KEY_8

    public static final int KEY_8

See Also:
  Constant Field Values

### KEY_9

    public static final int KEY_9

See Also:
  Constant Field Values

### KEY_0

    public static final int KEY_0

See Also:
  Constant Field Values

### KEY_MINUS

    public static final int KEY_MINUS

See Also:
  Constant Field Values

### KEY_EQUALS

    public static final int KEY_EQUALS

See Also:
  Constant Field Values

### KEY_BACK

    public static final int KEY_BACK

See Also:
  Constant Field Values

### KEY_TAB

    public static final int KEY_TAB

See Also:
  Constant Field Values

### KEY_Q

    public static final int KEY_Q

See Also:
  Constant Field Values

### KEY_W

    public static final int KEY_W

See Also:
  Constant Field Values

### KEY_E

    public static final int KEY_E

See Also:
  Constant Field Values

### KEY_R

    public static final int KEY_R

See Also:
  Constant Field Values

### KEY_T

    public static final int KEY_T

See Also:
  Constant Field Values

### KEY_Y

    public static final int KEY_Y

See Also:
  Constant Field Values

### KEY_U

    public static final int KEY_U

See Also:
  Constant Field Values

### KEY_I

    public static final int KEY_I

See Also:
  Constant Field Values

### KEY_O

    public static final int KEY_O

See Also:
  Constant Field Values

### KEY_P

    public static final int KEY_P

See Also:
  Constant Field Values

### KEY_LBRACKET

    public static final int KEY_LBRACKET

See Also:
  Constant Field Values

### KEY_RBRACKET

    public static final int KEY_RBRACKET

See Also:
  Constant Field Values

### KEY_RETURN

    public static final int KEY_RETURN

See Also:
  Constant Field Values

### KEY_LCONTROL

    public static final int KEY_LCONTROL

See Also:
  Constant Field Values

### KEY_A

    public static final int KEY_A

See Also:
  Constant Field Values

### KEY_S

    public static final int KEY_S

See Also:
  Constant Field Values

### KEY_D

    public static final int KEY_D

See Also:
  Constant Field Values

### KEY_F

    public static final int KEY_F

See Also:
  Constant Field Values

### KEY_G

    public static final int KEY_G

See Also:
  Constant Field Values

### KEY_H

    public static final int KEY_H

See Also:
  Constant Field Values

### KEY_J

    public static final int KEY_J

See Also:
  Constant Field Values

### KEY_K

    public static final int KEY_K

See Also:
  Constant Field Values

### KEY_L

    public static final int KEY_L

See Also:
  Constant Field Values

### KEY_SEMICOLON

    public static final int KEY_SEMICOLON

See Also:
  Constant Field Values

### KEY_APOSTROPHE

    public static final int KEY_APOSTROPHE

See Also:
  Constant Field Values

### KEY_GRAVE

    public static final int KEY_GRAVE

See Also:
  Constant Field Values

### KEY_LSHIFT

    public static final int KEY_LSHIFT

See Also:
  Constant Field Values

### KEY_BACKSLASH

    public static final int KEY_BACKSLASH

See Also:
  Constant Field Values

### KEY_Z

    public static final int KEY_Z

See Also:
  Constant Field Values

### KEY_X

    public static final int KEY_X

See Also:
  Constant Field Values

### KEY_C

    public static final int KEY_C

See Also:
  Constant Field Values

### KEY_V

    public static final int KEY_V

See Also:
  Constant Field Values

### KEY_B

    public static final int KEY_B

See Also:
  Constant Field Values

### KEY_N

    public static final int KEY_N

See Also:
  Constant Field Values

### KEY_M

    public static final int KEY_M

See Also:
  Constant Field Values

### KEY_COMMA

    public static final int KEY_COMMA

See Also:
  Constant Field Values

### KEY_PERIOD

    public static final int KEY_PERIOD

See Also:
  Constant Field Values

### KEY_SLASH

    public static final int KEY_SLASH

See Also:
  Constant Field Values

### KEY_RSHIFT

    public static final int KEY_RSHIFT

See Also:
  Constant Field Values

### KEY_MULTIPLY

    public static final int KEY_MULTIPLY

See Also:
  Constant Field Values

### KEY_LMENU

    public static final int KEY_LMENU

See Also:
  Constant Field Values

### KEY_SPACE

    public static final int KEY_SPACE

See Also:
  Constant Field Values

### KEY_CAPITAL

    public static final int KEY_CAPITAL

See Also:
  Constant Field Values

### KEY_F1

    public static final int KEY_F1

See Also:
  Constant Field Values

### KEY_F2

    public static final int KEY_F2

See Also:
  Constant Field Values

### KEY_F3

    public static final int KEY_F3

See Also:
  Constant Field Values

### KEY_F4

    public static final int KEY_F4

See Also:
  Constant Field Values

### KEY_F5

    public static final int KEY_F5

See Also:
  Constant Field Values

### KEY_F6

    public static final int KEY_F6

See Also:
  Constant Field Values

### KEY_F7

    public static final int KEY_F7

See Also:
  Constant Field Values

### KEY_F8

    public static final int KEY_F8

See Also:
  Constant Field Values

### KEY_F9

    public static final int KEY_F9

See Also:
  Constant Field Values

### KEY_F10

    public static final int KEY_F10

See Also:
  Constant Field Values

### KEY_NUMLOCK

    public static final int KEY_NUMLOCK

See Also:
  Constant Field Values

### KEY_SCROLL

    public static final int KEY_SCROLL

See Also:
  Constant Field Values

### KEY_NUMPAD7

    public static final int KEY_NUMPAD7

See Also:
  Constant Field Values

### KEY_NUMPAD8

    public static final int KEY_NUMPAD8

See Also:
  Constant Field Values

### KEY_NUMPAD9

    public static final int KEY_NUMPAD9

See Also:
  Constant Field Values

### KEY_SUBTRACT

    public static final int KEY_SUBTRACT

See Also:
  Constant Field Values

### KEY_NUMPAD4

    public static final int KEY_NUMPAD4

See Also:
  Constant Field Values

### KEY_NUMPAD5

    public static final int KEY_NUMPAD5

See Also:
  Constant Field Values

### KEY_NUMPAD6

    public static final int KEY_NUMPAD6

See Also:
  Constant Field Values

### KEY_ADD

    public static final int KEY_ADD

See Also:
  Constant Field Values

### KEY_NUMPAD1

    public static final int KEY_NUMPAD1

See Also:
  Constant Field Values

### KEY_NUMPAD2

    public static final int KEY_NUMPAD2

See Also:
  Constant Field Values

### KEY_NUMPAD3

    public static final int KEY_NUMPAD3

See Also:
  Constant Field Values

### KEY_NUMPAD0

    public static final int KEY_NUMPAD0

See Also:
  Constant Field Values

### KEY_DECIMAL

    public static final int KEY_DECIMAL

See Also:
  Constant Field Values

### KEY_F11

    public static final int KEY_F11

See Also:
  Constant Field Values

### KEY_F12

    public static final int KEY_F12

See Also:
  Constant Field Values

### KEY_F13

    public static final int KEY_F13

See Also:
  Constant Field Values

### KEY_F14

    public static final int KEY_F14

See Also:
  Constant Field Values

### KEY_F15

    public static final int KEY_F15

See Also:
  Constant Field Values

### KEY_F16

    public static final int KEY_F16

See Also:
  Constant Field Values

### KEY_F17

    public static final int KEY_F17

See Also:
  Constant Field Values

### KEY_F18

    public static final int KEY_F18

See Also:
  Constant Field Values

### KEY_KANA

    public static final int KEY_KANA

See Also:
  Constant Field Values

### KEY_F19

    public static final int KEY_F19

See Also:
  Constant Field Values

### KEY_CONVERT

    public static final int KEY_CONVERT

See Also:
  Constant Field Values

### KEY_NOCONVERT

    public static final int KEY_NOCONVERT

See Also:
  Constant Field Values

### KEY_YEN

    public static final int KEY_YEN

See Also:
  Constant Field Values

### KEY_NUMPADEQUALS

    public static final int KEY_NUMPADEQUALS

See Also:
  Constant Field Values

### KEY_CIRCUMFLEX

    public static final int KEY_CIRCUMFLEX

See Also:
  Constant Field Values

### KEY_AT

    public static final int KEY_AT

See Also:
  Constant Field Values

### KEY_COLON

    public static final int KEY_COLON

See Also:
  Constant Field Values

### KEY_UNDERLINE

    public static final int KEY_UNDERLINE

See Also:
  Constant Field Values

### KEY_KANJI

    public static final int KEY_KANJI

See Also:
  Constant Field Values

### KEY_STOP

    public static final int KEY_STOP

See Also:
  Constant Field Values

### KEY_AX

    public static final int KEY_AX

See Also:
  Constant Field Values

### KEY_UNLABELED

    public static final int KEY_UNLABELED

See Also:
  Constant Field Values

### KEY_NUMPADENTER

    public static final int KEY_NUMPADENTER

See Also:
  Constant Field Values

### KEY_RCONTROL

    public static final int KEY_RCONTROL

See Also:
  Constant Field Values

### KEY_SECTION

    public static final int KEY_SECTION

See Also:
  Constant Field Values

### KEY_NUMPADCOMMA

    public static final int KEY_NUMPADCOMMA

See Also:
  Constant Field Values

### KEY_DIVIDE

    public static final int KEY_DIVIDE

See Also:
  Constant Field Values

### KEY_SYSRQ

    public static final int KEY_SYSRQ

See Also:
  Constant Field Values

### KEY_RMENU

    public static final int KEY_RMENU

See Also:
  Constant Field Values

### KEY_FUNCTION

    public static final int KEY_FUNCTION

See Also:
  Constant Field Values

### KEY_PAUSE

    public static final int KEY_PAUSE

See Also:
  Constant Field Values

### KEY_HOME

    public static final int KEY_HOME

See Also:
  Constant Field Values

### KEY_UP

    public static final int KEY_UP

See Also:
  Constant Field Values

### KEY_PRIOR

    public static final int KEY_PRIOR

See Also:
  Constant Field Values

### KEY_LEFT

    public static final int KEY_LEFT

See Also:
  Constant Field Values

### KEY_RIGHT

    public static final int KEY_RIGHT

See Also:
  Constant Field Values

### KEY_END

    public static final int KEY_END

See Also:
  Constant Field Values

### KEY_DOWN

    public static final int KEY_DOWN

See Also:
  Constant Field Values

### KEY_NEXT

    public static final int KEY_NEXT

See Also:
  Constant Field Values

### KEY_INSERT

    public static final int KEY_INSERT

See Also:
  Constant Field Values

### KEY_DELETE

    public static final int KEY_DELETE

See Also:
  Constant Field Values

### KEY_CLEAR

    public static final int KEY_CLEAR

See Also:
  Constant Field Values

### KEY_LMETA

    public static final int KEY_LMETA

See Also:
  Constant Field Values

### KEY_LWIN

    public static final int KEY_LWIN

  Deprecated. Use KEY_LMETA instead
  The left windows key, mapped to KEY_LMETA

  See Also:
    Constant Field Values

### KEY_RMETA

    public static final int KEY_RMETA

See Also:
  Constant Field Values

### KEY_RWIN

    public static final int KEY_RWIN

  Deprecated. Use KEY_RMETA instead
  The right windows key, mapped to KEY_RMETA

  See Also:
    Constant Field Values

### KEY_APPS

    public static final int KEY_APPS

See Also:
  Constant Field Values

### KEY_POWER

    public static final int KEY_POWER

See Also:
  Constant Field Values

### KEY_SLEEP

    public static final int KEY_SLEEP

See Also:
  Constant Field Values

### KEYBOARD_SIZE

    public static final int KEYBOARD_SIZE

See Also:
  Constant Field Values

Method Detail

### create

    public static void create()
                       throws LWJGLException

  "Create" the keyboard. The display must first have been created. The reason for this is so the keyboard has a window to "focus" in.

  Throws:
    `LWJGLException` - if the keyboard could not be created for any reason

### isCreated

    public static boolean isCreated()

  Returns:
    true if the keyboard has been created

### destroy

    public static void destroy()

  "Destroy" the keyboard

### poll

    public static void poll()

  Polls the keyboard for its current state. Access the polled values using the `isKeyDown` method. By using this method, it is possible to "miss" keyboard keys if you don't poll fast enough. To use buffered values, you have to call `next` for each event you want to read. You can query which key caused the event by using `getEventKey`. To get the state of that key, for that event, use `getEventKeyState` - finally use `getEventCharacter` to get the character for that event. NOTE: This method does not query the operating system for new events. To do that, Display.processMessages() (or Display.update()) must be called first.

  See Also:
    `isKeyDown(int key)`, `next()`, `getEventKey()`, `getEventKeyState()`, `getEventCharacter()`

### isKeyDown

    public static boolean isKeyDown(int key)

  Checks to see if a key is down.

  Parameters:
    `key` - Keycode to check
  Returns:
    true if the key is down according to the last poll()

### getKeyName

    public static java.lang.String getKeyName(int key)

  Gets a key's name

  Parameters:
    `key` - The key
  Returns:
    a String with the key's human readable name in it or null if the key is unnamed

### getKeyIndex

    public static int getKeyIndex(java.lang.String keyName)

  Get's a key's index. If the key is unrecognised then KEY_NONE is returned.

  Parameters:
    `keyName` - The key name

### getNumKeyboardEvents

    public static int getNumKeyboardEvents()

  Gets the number of keyboard events waiting after doing a buffer enabled poll().

  Returns:
    the number of keyboard events

### next

    public static boolean next()

  Gets the next keyboard event. You can query which key caused the event by using `getEventKey`. To get the state of that key, for that event, use `getEventKeyState` - finally use `getEventCharacter` to get the character for that event.

  Returns:
    true if a keyboard event was read, false otherwise
  See Also:
    `getEventKey()`, `getEventKeyState()`, `getEventCharacter()`

### enableRepeatEvents

    public static void enableRepeatEvents(boolean enable)

  Controls whether repeat events are reported or not. If repeat events are enabled, key down events are reported when a key is pressed and held for a OS dependent amount of time. To distinguish a repeat event from a normal event, use isRepeatEvent().

  See Also:
    `getEventKey()`

### areRepeatEventsEnabled

    public static boolean areRepeatEventsEnabled()

  Check whether repeat events are currently reported or not.

  Returns:
    true is repeat events are reported, false if not.
  See Also:
    `getEventKey()`

### getKeyCount

    public static int getKeyCount()

  Returns:
    Number of keys on this keyboard

### getEventCharacter

    public static char getEventCharacter()

  Returns:
    The character from the current event

### getEventKey

    public static int getEventKey()

  Please note that the key code returned is NOT valid against the current keyboard layout. To get the actual character pressed call getEventCharacter

  Returns:
    The key from the current event

### getEventKeyState

    public static boolean getEventKeyState()

  Gets the state of the key that generated the current event

  Returns:
    True if key was down, or false if released

### getEventNanoseconds

    public static long getEventNanoseconds()

  Gets the time in nanoseconds of the current event. Only useful for relative comparisons with other Keyboard events, as the absolute time has no defined origin.

  Returns:
    The time in nanoseconds of the current event

### isRepeatEvent

    public static boolean isRepeatEvent()

  Returns:
    true if the current event is a repeat event, false if the current event is not a repeat even or if repeat events are disabled.
  See Also:
    `enableRepeatEvents(boolean)`

Copyright © 2002-2009 lwjgl.org. All Rights Reserved.