From f8a6f2fd742e0ca4eee332b40a712f0e81bbd274 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Fri, 16 Jul 2021 12:11:12 -0700 Subject: [PATCH] glfw: add keyboard key ID constants Signed-off-by: Stephen Gutekanst --- glfw/src/key.zig | 147 ++++++++++++++++++++++++++++++++++++++++++++++ glfw/src/main.zig | 1 + 2 files changed, 148 insertions(+) create mode 100644 glfw/src/key.zig diff --git a/glfw/src/key.zig b/glfw/src/key.zig new file mode 100644 index 00000000..b47d614f --- /dev/null +++ b/glfw/src/key.zig @@ -0,0 +1,147 @@ +//! Keyboard key IDs. +//! +//! See glfw.SetKeyCallback for how these are used. +//! +//! These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), but re-arranged to +//! map to 7-bit ASCII for printable keys (function keys are put in the 256+ range). +//! +//! The naming of the key codes follow these rules: +//! +//! - The US keyboard layout is used +//! - Names of printable alpha-numeric characters are used (e.g. "A", "R", "3", etc.) +//! - For non-alphanumeric characters, Unicode:ish names are used (e.g. "COMMA", +//! "LEFT_SQUARE_BRACKET", etc.). Note that some names do not correspond to the Unicode standard +//! (usually for brevity) +//! - Keys that lack a clear US mapping are named "WORLD_x" +//! - For non-printable keys, custom names are used (e.g. "F4", "BACKSPACE", etc.) + +const c = @cImport(@cInclude("GLFW/glfw3.h")); + +/// The unknown key +pub const unknown = C.GLFW_KEY_UNKNOWN; + +/// Printable keys +pub const space = C.GLFW_KEY_SPACE; +pub const apostrophe = C.GLFW_KEY_APOSTROPHE; +pub const comma = C.GLFW_KEY_COMMA; +pub const minus = C.GLFW_KEY_MINUS; +pub const period = C.GLFW_KEY_PERIOD; +pub const slash = C.GLFW_KEY_SLASH; +pub const zero = C.GLFW_KEY_0; +pub const one = C.GLFW_KEY_1; +pub const two = C.GLFW_KEY_2; +pub const three = C.GLFW_KEY_3; +pub const four = C.GLFW_KEY_4; +pub const five = C.GLFW_KEY_5; +pub const six = C.GLFW_KEY_6; +pub const seven = C.GLFW_KEY_7; +pub const eight = C.GLFW_KEY_8; +pub const nine = C.GLFW_KEY_9; +pub const semicolon = C.GLFW_KEY_SEMICOLON; +pub const equal = C.GLFW_KEY_EQUAL; +pub const a = C.GLFW_KEY_A; +pub const b = C.GLFW_KEY_B; +pub const c = C.GLFW_KEY_C; +pub const d = C.GLFW_KEY_D; +pub const e = C.GLFW_KEY_E; +pub const f = C.GLFW_KEY_F; +pub const g = C.GLFW_KEY_G; +pub const h = C.GLFW_KEY_H; +pub const i = C.GLFW_KEY_I; +pub const j = C.GLFW_KEY_J; +pub const k = C.GLFW_KEY_K; +pub const l = C.GLFW_KEY_L; +pub const m = C.GLFW_KEY_M; +pub const n = C.GLFW_KEY_N; +pub const o = C.GLFW_KEY_O; +pub const p = C.GLFW_KEY_P; +pub const q = C.GLFW_KEY_Q; +pub const r = C.GLFW_KEY_R; +pub const s = C.GLFW_KEY_S; +pub const t = C.GLFW_KEY_T; +pub const u = C.GLFW_KEY_U; +pub const v = C.GLFW_KEY_V; +pub const w = C.GLFW_KEY_W; +pub const x = C.GLFW_KEY_X; +pub const y = C.GLFW_KEY_Y; +pub const z = C.GLFW_KEY_Z; +pub const left_bracket = C.GLFW_KEY_LEFT_BRACKET; +pub const backslash = C.GLFW_KEY_BACKSLASH; +pub const right_bracket = C.GLFW_KEY_RIGHT_BRACKET; +pub const grave_accent = C.GLFW_KEY_GRAVE_ACCENT; +pub const world_1 = C.GLFW_KEY_WORLD_1; // non-US #1 +pub const world_2 = C.GLFW_KEY_WORLD_2; // non-US #2 + +/// Function keys +pub const escape = C.GLFW_KEY_ESCAPE; +pub const enter = C.GLFW_KEY_ENTER; +pub const tab = C.GLFW_KEY_TAB; +pub const backspace = C.GLFW_KEY_BACKSPACE; +pub const insert = C.GLFW_KEY_INSERT; +pub const delete = C.GLFW_KEY_DELETE; +pub const right = C.GLFW_KEY_RIGHT; +pub const left = C.GLFW_KEY_LEFT; +pub const down = C.GLFW_KEY_DOWN; +pub const up = C.GLFW_KEY_UP; +pub const page_up = C.GLFW_KEY_PAGE_UP; +pub const page_down = C.GLFW_KEY_PAGE_DOWN; +pub const home = C.GLFW_KEY_HOME; +pub const end = C.GLFW_KEY_END; +pub const caps_lock = C.GLFW_KEY_CAPS_LOCK; +pub const scroll_lock = C.GLFW_KEY_SCROLL_LOCK; +pub const num_lock = C.GLFW_KEY_NUM_LOCK; +pub const print_screen = C.GLFW_KEY_PRINT_SCREEN; +pub const pause = C.GLFW_KEY_PAUSE; +pub const F1 = C.GLFW_KEY_F1; +pub const F2 = C.GLFW_KEY_F2; +pub const F3 = C.GLFW_KEY_F3; +pub const F4 = C.GLFW_KEY_F4; +pub const F5 = C.GLFW_KEY_F5; +pub const F6 = C.GLFW_KEY_F6; +pub const F7 = C.GLFW_KEY_F7; +pub const F8 = C.GLFW_KEY_F8; +pub const F9 = C.GLFW_KEY_F9; +pub const F10 = C.GLFW_KEY_F10; +pub const F11 = C.GLFW_KEY_F11; +pub const F12 = C.GLFW_KEY_F12; +pub const F13 = C.GLFW_KEY_F13; +pub const F14 = C.GLFW_KEY_F14; +pub const F15 = C.GLFW_KEY_F15; +pub const F16 = C.GLFW_KEY_F16; +pub const F17 = C.GLFW_KEY_F17; +pub const F18 = C.GLFW_KEY_F18; +pub const F19 = C.GLFW_KEY_F19; +pub const F20 = C.GLFW_KEY_F20; +pub const F21 = C.GLFW_KEY_F21; +pub const F22 = C.GLFW_KEY_F22; +pub const F23 = C.GLFW_KEY_F23; +pub const F24 = C.GLFW_KEY_F24; +pub const F25 = C.GLFW_KEY_F25; +pub const kp_0 = C.GLFW_KEY_KP_0; +pub const kp_1 = C.GLFW_KEY_KP_1; +pub const kp_2 = C.GLFW_KEY_KP_2; +pub const kp_3 = C.GLFW_KEY_KP_3; +pub const kp_4 = C.GLFW_KEY_KP_4; +pub const kp_5 = C.GLFW_KEY_KP_5; +pub const kp_6 = C.GLFW_KEY_KP_6; +pub const kp_7 = C.GLFW_KEY_KP_7; +pub const kp_8 = C.GLFW_KEY_KP_8; +pub const kp_9 = C.GLFW_KEY_KP_9; +pub const kp_decimal = C.GLFW_KEY_KP_DECIMAL; +pub const kp_divide = C.GLFW_KEY_KP_DIVIDE; +pub const kp_multiply = C.GLFW_KEY_KP_MULTIPLY; +pub const kp_subtract = C.GLFW_KEY_KP_SUBTRACT; +pub const kp_add = C.GLFW_KEY_KP_ADD; +pub const kp_enter = C.GLFW_KEY_KP_ENTER; +pub const kp_equal = C.GLFW_KEY_KP_EQUAL; +pub const left_shift = C.GLFW_KEY_LEFT_SHIFT; +pub const left_control = C.GLFW_KEY_LEFT_CONTROL; +pub const left_alt = C.GLFW_KEY_LEFT_ALT; +pub const left_super = C.GLFW_KEY_LEFT_SUPER; +pub const right_shift = C.GLFW_KEY_RIGHT_SHIFT; +pub const right_control = C.GLFW_KEY_RIGHT_CONTROL; +pub const right_alt = C.GLFW_KEY_RIGHT_ALT; +pub const right_super = C.GLFW_KEY_RIGHT_SUPER; +pub const menu = C.GLFW_KEY_MENU; + +pub const last = C.GLFW_KEY_LAST; diff --git a/glfw/src/main.zig b/glfw/src/main.zig index 98da70d6..b108b2b0 100644 --- a/glfw/src/main.zig +++ b/glfw/src/main.zig @@ -5,6 +5,7 @@ const c = @cImport(@cInclude("GLFW/glfw3.h")); pub const action = @import("action.zig"); pub const hat = @import("hat.zig"); +pub const key = @import("key.zig"); pub const version = @import("version.zig"); pub fn basicTest() void {