Top Description Inners Fields Constructors Methods
org.lwjgl.input

public Class Keyboard

extends Object
Class Inheritance
Imports
java.lang.reflect.Field, .Modifier, java.nio.ByteBuffer, java.util.HashMap, .Map, org.lwjgl.BufferUtils, .LWJGLException, .Sys, org.lwjgl.opengl.Display, .InputImplementation


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.
Authors
cix_foo , elias_naur , Brian Matzon
Version
$Revision$ $Id$

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class

Field Summary

Modifier and TypeField and Description
private static final int
BUFFER_SIZE

Buffer size in events

public static final int
CHAR_NONE

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

private static int
private static boolean
created

Has the keyboard been created?

private static Keyboard.KeyEvent
current_event

current event

public static final int
EVENT_SIZE

Internal use - event size in bytes

private static InputImplementation
private static boolean
initialized

One time initialization

public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
KEY_LWIN

The left windows key, mapped to KEY_LMETA

public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
KEY_NONE

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

public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
KEY_RWIN

The right windows key, mapped to KEY_RMETA

public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
private static final int
keyCount

The number of keys supported

private static final ByteBuffer
keyDownBuffer

The keys status from the last poll

private static final Map<String, Integer>
private static final String[]
keyName

Key names

private static ByteBuffer
readBuffer

The key events from the last read: a sequence of pairs of key number, followed by state.

private static boolean
repeat_enabled

Are repeat events enabled?

private static Keyboard.KeyEvent
tmp_event

scratch event

Constructor Summary

AccessConstructor and Description
private
Keyboard()

Keyboard cannot be constructed.

Method Summary

Modifier and TypeMethod and Description
public static boolean

Returns:

true is repeat events are reported, false if not.
areRepeatEventsEnabled
()

Check whether repeat events are currently reported or not.

private static void
create(InputImplementation impl)

"Create" the keyboard with the given implementation.

public static void
create()

"Create" the keyboard.

public static void
destroy()

"Destroy" the keyboard

public static void
enableRepeatEvents(boolean enable)

Controls whether repeat events are reported or not.

public static char

Returns:

The character from the current event
getEventCharacter
()

public static int

Returns:

The key from the current event
getEventKey
()

Please note that the key code returned is NOT valid against the current keyboard layout.

public static boolean

Returns:

True if key was down, or false if released
getEventKeyState
()

Gets the state of the key that generated the current event

public static long

Returns:

The time in nanoseconds of the current event
getEventNanoseconds
()

Gets the time in nanoseconds of the current event.

public static int

Returns:

Number of keys on this keyboard
getKeyCount
()

public static synchronized int
getKeyIndex(String
The key name
keyName
)

Get's a key's index.

public static synchronized String

Returns:

a String with the key's human readable name in it or null if the key is unnamed
getKeyName
(int
The key
key
)

Gets a key's name

public static int

Returns:

the number of keyboard events
getNumKeyboardEvents
()

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

private static void
initialize()

Static initialization

public static boolean

Returns:

true if the keyboard has been created
isCreated
()

public static boolean

Returns:

true if the key is down according to the last poll()
isKeyDown
(int
Keycode to check
key
)

Checks to see if a key is down.

public static boolean

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.
isRepeatEvent
()

public static boolean

Returns:

true if a keyboard event was read, false otherwise
next
()

Gets the next keyboard event.

public static void
poll()

Polls the keyboard for its current state.

private static void
read()

private static boolean
private static void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

BUFFER_SIZEback to summary
private static final int BUFFER_SIZE

Buffer size in events

CHAR_NONEback to summary
public static final int CHAR_NONE

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

counterback to summary
private static int counter
createdback to summary
private static boolean created

Has the keyboard been created?

current_eventback to summary
private static Keyboard.KeyEvent current_event

current event

EVENT_SIZEback to summary
public static final int EVENT_SIZE

Internal use - event size in bytes

implementationback to summary
private static InputImplementation implementation
initializedback to summary
private static boolean initialized

One time initialization

KEY_0back to summary
public static final int KEY_0
KEY_1back to summary
public static final int KEY_1
KEY_2back to summary
public static final int KEY_2
KEY_3back to summary
public static final int KEY_3
KEY_4back to summary
public static final int KEY_4
KEY_5back to summary
public static final int KEY_5
KEY_6back to summary
public static final int KEY_6
KEY_7back to summary
public static final int KEY_7
KEY_8back to summary
public static final int KEY_8
KEY_9back to summary
public static final int KEY_9
KEY_Aback to summary
public static final int KEY_A
KEY_ADDback to summary
public static final int KEY_ADD
KEY_APOSTROPHEback to summary
public static final int KEY_APOSTROPHE
KEY_APPSback to summary
public static final int KEY_APPS
KEY_ATback to summary
public static final int KEY_AT
KEY_AXback to summary
public static final int KEY_AX
KEY_Bback to summary
public static final int KEY_B
KEY_BACKback to summary
public static final int KEY_BACK
KEY_BACKSLASHback to summary
public static final int KEY_BACKSLASH
KEY_Cback to summary
public static final int KEY_C
KEY_CAPITALback to summary
public static final int KEY_CAPITAL
KEY_CIRCUMFLEXback to summary
public static final int KEY_CIRCUMFLEX
KEY_CLEARback to summary
public static final int KEY_CLEAR
KEY_COLONback to summary
public static final int KEY_COLON
KEY_COMMAback to summary
public static final int KEY_COMMA
KEY_CONVERTback to summary
public static final int KEY_CONVERT
KEY_Dback to summary
public static final int KEY_D
KEY_DECIMALback to summary
public static final int KEY_DECIMAL
KEY_DELETEback to summary
public static final int KEY_DELETE
KEY_DIVIDEback to summary
public static final int KEY_DIVIDE
KEY_DOWNback to summary
public static final int KEY_DOWN
KEY_Eback to summary
public static final int KEY_E
KEY_ENDback to summary
public static final int KEY_END
KEY_EQUALSback to summary
public static final int KEY_EQUALS
KEY_ESCAPEback to summary
public static final int KEY_ESCAPE
KEY_Fback to summary
public static final int KEY_F
KEY_F1back to summary
public static final int KEY_F1
KEY_F10back to summary
public static final int KEY_F10
KEY_F11back to summary
public static final int KEY_F11
KEY_F12back to summary
public static final int KEY_F12
KEY_F13back to summary
public static final int KEY_F13
KEY_F14back to summary
public static final int KEY_F14
KEY_F15back to summary
public static final int KEY_F15
KEY_F16back to summary
public static final int KEY_F16
KEY_F17back to summary
public static final int KEY_F17
KEY_F18back to summary
public static final int KEY_F18
KEY_F19back to summary
public static final int KEY_F19
KEY_F2back to summary
public static final int KEY_F2
KEY_F3back to summary
public static final int KEY_F3
KEY_F4back to summary
public static final int KEY_F4
KEY_F5back to summary
public static final int KEY_F5
KEY_F6back to summary
public static final int KEY_F6
KEY_F7back to summary
public static final int KEY_F7
KEY_F8back to summary
public static final int KEY_F8
KEY_F9back to summary
public static final int KEY_F9
KEY_FUNCTIONback to summary
public static final int KEY_FUNCTION
KEY_Gback to summary
public static final int KEY_G
KEY_GRAVEback to summary
public static final int KEY_GRAVE
KEY_Hback to summary
public static final int KEY_H
KEY_HOMEback to summary
public static final int KEY_HOME
KEY_Iback to summary
public static final int KEY_I
KEY_INSERTback to summary
public static final int KEY_INSERT
KEY_Jback to summary
public static final int KEY_J
KEY_Kback to summary
public static final int KEY_K
KEY_KANAback to summary
public static final int KEY_KANA
KEY_KANJIback to summary
public static final int KEY_KANJI
KEY_Lback to summary
public static final int KEY_L
KEY_LBRACKETback to summary
public static final int KEY_LBRACKET
KEY_LCONTROLback to summary
public static final int KEY_LCONTROL
KEY_LEFTback to summary
public static final int KEY_LEFT
KEY_LMENUback to summary
public static final int KEY_LMENU
KEY_LMETAback to summary
public static final int KEY_LMETA
KEY_LSHIFTback to summary
public static final int KEY_LSHIFT
KEY_LWINback to summary
public static final int KEY_LWIN

Deprecated

Use KEY_LMETA instead

The left windows key, mapped to KEY_LMETA

KEY_Mback to summary
public static final int KEY_M
KEY_MINUSback to summary
public static final int KEY_MINUS
KEY_MULTIPLYback to summary
public static final int KEY_MULTIPLY
KEY_Nback to summary
public static final int KEY_N
KEY_NEXTback to summary
public static final int KEY_NEXT
KEY_NOCONVERTback to summary
public static final int KEY_NOCONVERT
KEY_NONEback to summary
public static final int KEY_NONE

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

KEY_NUMLOCKback to summary
public static final int KEY_NUMLOCK
KEY_NUMPAD0back to summary
public static final int KEY_NUMPAD0
KEY_NUMPAD1back to summary
public static final int KEY_NUMPAD1
KEY_NUMPAD2back to summary
public static final int KEY_NUMPAD2
KEY_NUMPAD3back to summary
public static final int KEY_NUMPAD3
KEY_NUMPAD4back to summary
public static final int KEY_NUMPAD4
KEY_NUMPAD5back to summary
public static final int KEY_NUMPAD5
KEY_NUMPAD6back to summary
public static final int KEY_NUMPAD6
KEY_NUMPAD7back to summary
public static final int KEY_NUMPAD7
KEY_NUMPAD8back to summary
public static final int KEY_NUMPAD8
KEY_NUMPAD9back to summary
public static final int KEY_NUMPAD9
KEY_NUMPADCOMMAback to summary
public static final int KEY_NUMPADCOMMA
KEY_NUMPADENTERback to summary
public static final int KEY_NUMPADENTER
KEY_NUMPADEQUALSback to summary
public static final int KEY_NUMPADEQUALS
KEY_Oback to summary
public static final int KEY_O
KEY_Pback to summary
public static final int KEY_P
KEY_PAUSEback to summary
public static final int KEY_PAUSE
KEY_PERIODback to summary
public static final int KEY_PERIOD
KEY_POWERback to summary
public static final int KEY_POWER
KEY_PRIORback to summary
public static final int KEY_PRIOR
KEY_Qback to summary
public static final int KEY_Q
KEY_Rback to summary
public static final int KEY_R
KEY_RBRACKETback to summary
public static final int KEY_RBRACKET
KEY_RCONTROLback to summary
public static final int KEY_RCONTROL
KEY_RETURNback to summary
public static final int KEY_RETURN
KEY_RIGHTback to summary
public static final int KEY_RIGHT
KEY_RMENUback to summary
public static final int KEY_RMENU
KEY_RMETAback to summary
public static final int KEY_RMETA
KEY_RSHIFTback to summary
public static final int KEY_RSHIFT
KEY_RWINback to summary
public static final int KEY_RWIN

Deprecated

Use KEY_RMETA instead

The right windows key, mapped to KEY_RMETA

KEY_Sback to summary
public static final int KEY_S
KEY_SCROLLback to summary
public static final int KEY_SCROLL
KEY_SECTIONback to summary
public static final int KEY_SECTION
KEY_SEMICOLONback to summary
public static final int KEY_SEMICOLON
KEY_SLASHback to summary
public static final int KEY_SLASH
KEY_SLEEPback to summary
public static final int KEY_SLEEP
KEY_SPACEback to summary
public static final int KEY_SPACE
KEY_STOPback to summary
public static final int KEY_STOP
KEY_SUBTRACTback to summary
public static final int KEY_SUBTRACT
KEY_SYSRQback to summary
public static final int KEY_SYSRQ
KEY_Tback to summary
public static final int KEY_T
KEY_TABback to summary
public static final int KEY_TAB
KEY_Uback to summary
public static final int KEY_U
KEY_UNDERLINEback to summary
public static final int KEY_UNDERLINE
KEY_UNLABELEDback to summary
public static final int KEY_UNLABELED
KEY_UPback to summary
public static final int KEY_UP
KEY_Vback to summary
public static final int KEY_V
KEY_Wback to summary
public static final int KEY_W
KEY_Xback to summary
public static final int KEY_X
KEY_Yback to summary
public static final int KEY_Y
KEY_YENback to summary
public static final int KEY_YEN
KEY_Zback to summary
public static final int KEY_Z
KEYBOARD_SIZEback to summary
public static final int KEYBOARD_SIZE
keyCountback to summary
private static final int keyCount

The number of keys supported

keyDownBufferback to summary
private static final ByteBuffer keyDownBuffer

The keys status from the last poll

keyMapback to summary
private static final Map<String, Integer> keyMap
keyNameback to summary
private static final String[] keyName

Key names

readBufferback to summary
private static ByteBuffer readBuffer

The key events from the last read: a sequence of pairs of key number, followed by state. The state is followed by a 4 byte code point representing the translated character.

repeat_enabledback to summary
private static boolean repeat_enabled

Are repeat events enabled?

tmp_eventback to summary
private static Keyboard.KeyEvent tmp_event

scratch event

Constructor Detail

Keyboardback to summary
private Keyboard()

Keyboard cannot be constructed.

Method Detail

areRepeatEventsEnabledback to summary
public static boolean areRepeatEventsEnabled()

Check whether repeat events are currently reported or not.

Returns:boolean

true is repeat events are reported, false if not.

See Also
org.lwjgl.input.Keyboard#getEventKey()
createback to summary
private static void create(InputImplementation impl) throws LWJGLException

"Create" the keyboard with the given implementation. This is used reflectively from AWTInputAdapter.

Exceptions
LWJGLException:
if the keyboard could not be created for any reason
createback to summary
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.

Exceptions
LWJGLException:
if the keyboard could not be created for any reason
destroyback to summary
public static void destroy()

"Destroy" the keyboard

enableRepeatEventsback to summary
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
org.lwjgl.input.Keyboard#getEventKey()
getEventCharacterback to summary
public static char getEventCharacter()
Returns:char

The character from the current event

getEventKeyback to summary
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:int

The key from the current event

getEventKeyStateback to summary
public static boolean getEventKeyState()

Gets the state of the key that generated the current event

Returns:boolean

True if key was down, or false if released

getEventNanosecondsback to summary
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:long

The time in nanoseconds of the current event

getKeyCountback to summary
public static int getKeyCount()
Returns:int

Number of keys on this keyboard

getKeyIndexback to summary
public static synchronized int getKeyIndex(String keyName)

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

Parameters
keyName:String

The key name

getKeyNameback to summary
public static synchronized String getKeyName(int key)

Gets a key's name

Parameters
key:int

The key

Returns:String

a String with the key's human readable name in it or null if the key is unnamed

getNumKeyboardEventsback to summary
public static int getNumKeyboardEvents()

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

Returns:int

the number of keyboard events

initializeback to summary
private static void initialize()

Static initialization

isCreatedback to summary
public static boolean isCreated()
Returns:boolean

true if the keyboard has been created

isKeyDownback to summary
public static boolean isKeyDown(int key)

Checks to see if a key is down.

Parameters
key:int

Keycode to check

Returns:boolean

true if the key is down according to the last poll()

isRepeatEventback to summary
public static boolean isRepeatEvent()
Returns:boolean

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
org.lwjgl.input.Keyboard#enableRepeatEvents(boolean)
nextback to summary
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:boolean

true if a keyboard event was read, false otherwise

See Also
org.lwjgl.input.Keyboard#getEventKey(), org.lwjgl.input.Keyboard#getEventKeyState(), org.lwjgl.input.Keyboard#getEventCharacter()
pollback to summary
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
org.lwjgl.input.Keyboard#isKeyDown(int key), org.lwjgl.input.Keyboard#next(), org.lwjgl.input.Keyboard#getEventKey(), org.lwjgl.input.Keyboard#getEventKeyState(), org.lwjgl.input.Keyboard#getEventCharacter()
readback to summary
private static void read()
readNextback to summary
private static boolean readNext(Keyboard.KeyEvent event)
resetback to summary
private static void reset()
org.lwjgl.input back to summary

private final Class Keyboard.KeyEvent

extends Object
Class Inheritance

Field Summary

Modifier and TypeField and Description
private int
character

The current keyboard character being examined

private int
key

The current keyboard event key being examined

private long
nanos

The current event time

private boolean
repeat

Is the current event a repeated event?

private boolean
state

The current state of the key being examined in the event queue

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

characterback to summary
private int character

The current keyboard character being examined

keyback to summary
private int key

The current keyboard event key being examined

nanosback to summary
private long nanos

The current event time

repeatback to summary
private boolean repeat

Is the current event a repeated event?

stateback to summary
private boolean state

The current state of the key being examined in the event queue

Constructor Detail

KeyEventback to summary
private KeyEvent()

Method Detail

resetback to summary
private void reset()