Keys¶
The keys API allows access to the state of the keyboard without hooking any events. The downside is that you will not get information about when a key was pressed, only IF it is pressed or not. Additionally you will not give information about wether an uppercase or lowercase letter was pressed, you would also need to track the shift key to get this information. For simple player controls this might however be the easiest API to use.
Reference¶
- keys.__init()¶
This function initializes the keys module and installs the hooks
- keys.isPressed(key)¶
Return true, if the given key is pressed.
- keys.areAllPressed(key)¶
Return true, if all the given keys in the array are pressed
- keys.isOnePressed(key)¶
Return true, if at least one of the given keys in the array is pressed
Examples¶
Checking for presence of keys¶
local Keys = require 'engine/keys'
local Vector3 = require 'engine/math/vector3'
-- If any key is pressed that we care for, we need to move the character
local movement = Vector3.new()
if Keys.isOnePressed({ Keys.W, Keys.ArrowUp }) then
movement.z = movement.z - SPEED
end
if Keys.isOnePressed({ Keys.S, Keys.ArrowDown }) then
movement.z = movement.z + SPEED
end
if Keys.isOnePressed({ Keys.A, Keys.ArrowLeft }) then
movement.x = movement.x - SPEED
end
if Keys.isOnePressed({ Keys.D, Keys.ArrowRight }) then
movement.x = movement.x + SPEED
end
Keys constants¶
local keys = {
Backspace = "Backspace",
Tab = "Tab",
Enter = "Enter",
Shift = "Shift",
Control = "Control",
Alt = "Alt",
Pause = "Pause",
CapsLock = "CapsLock",
Escape = "Escape",
Space = "Space",
PageUp = "PageUp",
PageDown = "PageDown",
End = "End",
Home = "Home",
ArrowLeft = "ArrowLeft",
ArrowUp = "ArrowUp",
ArrowRight = "ArrowRight",
ArrowDown = "ArrowDown",
PrintScreen = "PrintScreen",
Insert = "Insert",
Delete = "Delete",
Digit0 = "Digit0",
Digit1 = "Digit1",
Digit2 = "Digit2",
Digit3 = "Digit3",
Digit4 = "Digit4",
Digit5 = "Digit5",
Digit6 = "Digit6",
Digit7 = "Digit7",
Digit8 = "Digit8",
Digit9 = "Digit9",
A = "KeyA",
B = "KeyB",
C = "KeyC",
D = "KeyD",
E = "KeyE",
F = "KeyF",
G = "KeyG",
H = "KeyH",
I = "KeyI",
J = "KeyJ",
K = "KeyK",
L = "KeyL",
M = "KeyM",
N = "KeyN",
O = "KeyO",
P = "KeyP",
Q = "KeyQ",
R = "KeyR",
S = "KeyS",
T = "KeyT",
U = "KeyU",
V = "KeyV",
W = "KeyW",
X = "KeyX",
Y = "KeyY",
Z = "KeyZ",
Meta = "Meta",
ContextMenu = "ContextMenu",
F1 = "F1",
F2 = "F2",
F3 = "F3",
F4 = "F4",
F5 = "F5",
F6 = "F6",
F7 = "F7",
F8 = "F8",
F9 = "F9",
F10 = "F10",
F11 = "F11",
F12 = "F12",
F13 = "F13",
F14 = "F14",
F15 = "F15",
F16 = "F16",
F17 = "F17",
F18 = "F18",
F19 = "F19",
F20 = "F20",
F21 = "F21",
F22 = "F22",
F23 = "F23",
F24 = "F24",
NumLock = "NumLock",
ScrollLock = "ScrollLock",
Semicolon = "Semicolon",
Equal = "Equal",
Comma = "Comma",
Minus = "Minus",
Period = "Period",
Slash = "Slash",
Backquote = "Backquote",
BracketLeft = "BracketLeft",
Backslash = "Backslash",
BracketRight = "BracketRight",
Quote = "Quote",
AltGraph = "AltGraph",
Dead = "Dead",
NumPad0 = "NumPad0",
NumPad1 = "NumPad1",
NumPad2 = "NumPad2",
NumPad3 = "NumPad3",
NumPad4 = "NumPad4",
NumPad5 = "NumPad5",
NumPad6 = "NumPad6",
NumPad7 = "NumPad7",
NumPad8 = "NumPad8",
NumPad9 = "NumPad9",
NumPadMultiply = "NumPadMultiply",
NumPadAdd = "NumPadAdd",
NumPadSubtract = "NumPadSubtract",
NumPadDecimal = "NumPadDecimal",
NumPadDivide = "NumPadDivide",
NumPadEnter = "NumPadEnter",
NumPadEqual = "NumPadEqual"
}