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.

Parameters:

key (str) – the key to check

Return type:

boolean

keys.areAllPressed(key)

Return true, if all the given keys in the array are pressed

Parameters:

key (array) – An array of keys to check

Return type:

boolean

keys.isOnePressed(key)

Return true, if at least one of the given keys in the array is pressed

Parameters:

key (array) – An array of keys to check

Return type:

boolean

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"
}