SYNOPSIS
#include <agar/core.h> #include <agar/gui.h>
DESCRIPTION
The
AG_KeySym type describes virtual keyboard keys, covering the ASCII range in
addition to some common function keys.
Physical keyboard scancodes are mapped to
AG_KeySym values in a platform-dependent way by the underlying Agar driver
(which may or may not generate a Unicode character as well).
In general, Agar developers should reference things such as user-configurable
function keys and keyboard shortcuts using
AG_KeySym values as well as Unicode character values.
The functions AG_LookupKeyName(3) and AG_LookupKeySym(3) may be used to convert between numerical and string representation.
The functions AG_LookupKeyName(3) and AG_LookupKeySym(3) may be used to convert between numerical and string representation.
typedef enum ag_key_sym { AG_KEY_NONE = 0x0000, /* Start of ASCII range */ AG_KEY_ASCII_START = 0x0000, /* AG_KEY_ASCII_SOH = 0x0001, */ /* AG_KEY_ASCII_STX = 0x0002, */ /* AG_KEY_ASCII_ETX = 0x0003, */ /* AG_KEY_ASCII_EOT = 0x0004, */ /* AG_KEY_ASCII_ENQ = 0x0005, */ /* AG_KEY_ASCII_ACK = 0x0006, */ /* AG_KEY_ASCII_BEL = 0x0007, */ AG_KEY_BACKSPACE = 0x0008, AG_KEY_TAB = 0x0009, /* AG_KEY_ASCII_NEWLINE = 0x000a, */ /* AG_KEY_ASCII_VT = 0x000b, */ AG_KEY_CLEAR = 0x000c, AG_KEY_RETURN = 0x000d, /* AG_KEY_ASCII_SO = 0x000e, */ /* AG_KEY_ASCII_SI = 0x000f, */ /* AG_KEY_ASCII_DLE = 0x0010, */ /* AG_KEY_ASCII_DC1 = 0x0011, */ /* AG_KEY_ASCII_DC2 = 0x0012, */ AG_KEY_PAUSE = 0x0013, /* AG_KEY_ASCII_DC4 = 0x0014, */ /* AG_KEY_ASCII_NAK = 0x0015, */ /* AG_KEY_ASCII_SYN = 0x0016, */ /* AG_KEY_ASCII_ETB = 0x0017, */ /* AG_KEY_ASCII_CAN = 0x0018, */ /* AG_KEY_ASCII_EM = 0x0019, */ /* AG_KEY_ASCII_SUB = 0x001a, */ AG_KEY_ESCAPE = 0x001b, /* AG_KEY_ASCII_FS = 0x001c, */ /* AG_KEY_ASCII_GS = 0x001d, */ /* AG_KEY_ASCII_RS = 0x001e, */ /* AG_KEY_ASCII_US = 0x001f, */ AG_KEY_SPACE = 0x0020, AG_KEY_EXCLAIM = 0x0021, /* ! */ AG_KEY_QUOTEDBL = 0x0022, /* " */ AG_KEY_HASH = 0x0023, /* # */ AG_KEY_DOLLAR = 0x0024, /* $ */ AG_KEY_PERCENT = 0x0025, /* % */ AG_KEY_AMPERSAND = 0x0026, /* & */ AG_KEY_QUOTE = 0x0027, /* ' */ AG_KEY_LEFTPAREN = 0x0028, /* ( */ AG_KEY_RIGHTPAREN = 0x0029, /* ) */ AG_KEY_ASTERISK = 0x002a, /* * */ AG_KEY_PLUS = 0x002b, /* + */ AG_KEY_COMMA = 0x002c, /* , */ AG_KEY_MINUS = 0x002d, /* - */ AG_KEY_PERIOD = 0x002e, /* . */ AG_KEY_SLASH = 0x002f, /* / */ AG_KEY_0 = 0x0030, /* 0 */ AG_KEY_1 = 0x0031, /* 1 */ AG_KEY_2 = 0x0032, /* 2 */ AG_KEY_3 = 0x0033, /* 3 */ AG_KEY_4 = 0x0034, /* 4 */ AG_KEY_5 = 0x0035, /* 5 */ AG_KEY_6 = 0x0036, /* 6 */ AG_KEY_7 = 0x0037, /* 7 */ AG_KEY_8 = 0x0038, /* 8 */ AG_KEY_9 = 0x0039, /* 9 */ AG_KEY_COLON = 0x003a, /* : */ AG_KEY_SEMICOLON = 0x003b, /* ; */ AG_KEY_LESS = 0x003c, /* < */ AG_KEY_EQUALS = 0x003d, /* = */ AG_KEY_GREATER = 0x003e, /* > */ AG_KEY_QUESTION = 0x003f, /* ? */ AG_KEY_AT = 0x0040, /* @ */ #if 0 AG_KEY_UPPER_A = 0x0041, /* A */ AG_KEY_UPPER_B = 0x0042, /* B */ AG_KEY_UPPER_C = 0x0043, /* C */ AG_KEY_UPPER_D = 0x0044, /* D */ AG_KEY_UPPER_E = 0x0045, /* E */ AG_KEY_UPPER_F = 0x0046, /* F */ AG_KEY_UPPER_G = 0x0047, /* G */ AG_KEY_UPPER_H = 0x0048, /* H */ AG_KEY_UPPER_I = 0x0049, /* I */ AG_KEY_UPPER_J = 0x004a, /* J */ AG_KEY_UPPER_K = 0x004b, /* K */ AG_KEY_UPPER_L = 0x004c, /* L */ AG_KEY_UPPER_M = 0x004d, /* M */ AG_KEY_UPPER_N = 0x004e, /* N */ AG_KEY_UPPER_O = 0x004f, /* O */ AG_KEY_UPPER_P = 0x0050, /* P */ AG_KEY_UPPER_Q = 0x0051, /* Q */ AG_KEY_UPPER_R = 0x0052, /* R */ AG_KEY_UPPER_S = 0x0053, /* S */ AG_KEY_UPPER_T = 0x0054, /* T */ AG_KEY_UPPER_U = 0x0055, /* U */ AG_KEY_UPPER_V = 0x0056, /* V */ AG_KEY_UPPER_W = 0x0057, /* W */ AG_KEY_UPPER_X = 0x0058, /* X */ AG_KEY_UPPER_Y = 0x0059, /* Y */ AG_KEY_UPPER_Z = 0x005a, /* Z */ #endif AG_KEY_LEFTBRACKET = 0x005b, /* [ */ AG_KEY_BACKSLASH = 0x005c, /* \ */ AG_KEY_RIGHTBRACKET = 0x005d, /* ] */ AG_KEY_CARET = 0x005e, /* ^ */ AG_KEY_UNDERSCORE = 0x005f, /* _ */ AG_KEY_BACKQUOTE = 0x0060, /* ` */ AG_KEY_A = 0x0061, /* a */ AG_KEY_B = 0x0062, /* b */ AG_KEY_C = 0x0063, /* c */ AG_KEY_D = 0x0064, /* d */ AG_KEY_E = 0x0065, /* e */ AG_KEY_F = 0x0066, /* f */ AG_KEY_G = 0x0067, /* g */ AG_KEY_H = 0x0068, /* h */ AG_KEY_I = 0x0069, /* i */ AG_KEY_J = 0x006a, /* j */ AG_KEY_K = 0x006b, /* k */ AG_KEY_L = 0x006c, /* l */ AG_KEY_M = 0x006d, /* m */ AG_KEY_N = 0x006e, /* n */ AG_KEY_O = 0x006f, /* o */ AG_KEY_P = 0x0070, /* p */ AG_KEY_Q = 0x0071, /* q */ AG_KEY_R = 0x0072, /* r */ AG_KEY_S = 0x0073, /* s */ AG_KEY_T = 0x0074, /* t */ AG_KEY_U = 0x0075, /* u */ AG_KEY_V = 0x0076, /* v */ AG_KEY_W = 0x0077, /* w */ AG_KEY_X = 0x0078, /* x */ AG_KEY_Y = 0x0079, /* y */ AG_KEY_Z = 0x007a, /* z */ AG_KEY_DELETE = 0x007f, AG_KEY_ASCII_END = 0x007f, /* End of ASCII range */ AG_KEY_KP0 = 0x0100, AG_KEY_KP1 = 0x0101, AG_KEY_KP2 = 0x0102, AG_KEY_KP3 = 0x0103, AG_KEY_KP4 = 0x0104, AG_KEY_KP5 = 0x0105, AG_KEY_KP6 = 0x0106, AG_KEY_KP7 = 0x0107, AG_KEY_KP8 = 0x0108, AG_KEY_KP9 = 0x0109, AG_KEY_KP_PERIOD = 0x010a, AG_KEY_KP_DIVIDE = 0x010b, AG_KEY_KP_MULTIPLY = 0x010c, AG_KEY_KP_MINUS = 0x010d, AG_KEY_KP_PLUS = 0x010e, AG_KEY_KP_ENTER = 0x010f, AG_KEY_KP_EQUALS = 0x0110, AG_KEY_UP = 0x0111, AG_KEY_DOWN = 0x0112, AG_KEY_RIGHT = 0x0113, AG_KEY_LEFT = 0x0114, AG_KEY_INSERT = 0x0115, AG_KEY_HOME = 0x0116, AG_KEY_END = 0x0117, AG_KEY_PAGEUP = 0x0118, AG_KEY_PAGEDOWN = 0x0119, AG_KEY_F1 = 0x011a, AG_KEY_F2 = 0x011b, AG_KEY_F3 = 0x011c, AG_KEY_F4 = 0x011d, AG_KEY_F5 = 0x011e, AG_KEY_F6 = 0x011f, AG_KEY_F7 = 0x0120, AG_KEY_F8 = 0x0121, AG_KEY_F9 = 0x0122, AG_KEY_F10 = 0x0123, AG_KEY_F11 = 0x0124, AG_KEY_F12 = 0x0125, AG_KEY_F13 = 0x0126, AG_KEY_F14 = 0x0127, AG_KEY_F15 = 0x0128, AG_KEY_NUMLOCK = 0x012c, AG_KEY_CAPSLOCK = 0x012d, AG_KEY_SCROLLOCK = 0x012e, AG_KEY_RSHIFT = 0x012f, AG_KEY_LSHIFT = 0x0130, AG_KEY_RCTRL = 0x0131, AG_KEY_LCTRL = 0x0132, AG_KEY_RALT = 0x0133, AG_KEY_LALT = 0x0134, AG_KEY_RMETA = 0x0135, AG_KEY_LMETA = 0x0136, AG_KEY_LSUPER = 0x0137, AG_KEY_RSUPER = 0x0138, AG_KEY_MODE = 0x0139, AG_KEY_COMPOSE = 0x013a, AG_KEY_HELP = 0x013b, AG_KEY_PRINT = 0x013c, AG_KEY_SYSREQ = 0x013d, AG_KEY_BREAK = 0x013e, AG_KEY_MENU = 0x013f, AG_KEY_POWER = 0x0140, AG_KEY_EURO = 0x0141, AG_KEY_UNDO = 0x0142, AG_KEY_GRAVE = 0x0143, AG_KEY_KP_CLEAR = 0x0144, AG_KEY_COMMAND = 0x0145, AG_KEY_FUNCTION = 0x0146, AG_KEY_VOLUME_UP = 0x0147, AG_KEY_VOLUME_DOWN = 0x0148, AG_KEY_VOLUME_MUTE = 0x0149, AG_KEY_F16 = 0x014a, AG_KEY_F17 = 0x014b, AG_KEY_F18 = 0x014c, AG_KEY_F19 = 0x014d, AG_KEY_F20 = 0x014e, AG_KEY_F21 = 0x014f, AG_KEY_F22 = 0x0150, AG_KEY_F23 = 0x0151, AG_KEY_F24 = 0x0152, AG_KEY_F25 = 0x0153, AG_KEY_F26 = 0x0154, AG_KEY_F27 = 0x0155, AG_KEY_F28 = 0x0156, AG_KEY_F29 = 0x0157, AG_KEY_F30 = 0x0158, AG_KEY_F31 = 0x0159, AG_KEY_F32 = 0x015a, AG_KEY_F33 = 0x015b, AG_KEY_F34 = 0x015c, AG_KEY_F35 = 0x015d, AG_KEY_BEGIN = 0x015e, AG_KEY_RESET = 0x015f, AG_KEY_STOP = 0x0160, AG_KEY_USER = 0x0161, AG_KEY_SYSTEM = 0x0162, AG_KEY_PRINT_SCREEN = 0x0163, AG_KEY_CLEAR_LINE = 0x0164, AG_KEY_CLEAR_DISPLAY = 0x0165, AG_KEY_INSERT_LINE = 0x0166, AG_KEY_DELETE_LINE = 0x0167, AG_KEY_INSERT_CHAR = 0x0168, AG_KEY_DELETE_CHAR = 0x0169, AG_KEY_PREV = 0x016a, AG_KEY_NEXT = 0x016b, AG_KEY_SELECT = 0x016c, AG_KEY_EXECUTE = 0x016d, AG_KEY_REDO = 0x016e, AG_KEY_FIND = 0x016f, AG_KEY_MODE_SWITCH = 0x0170, AG_KEY_LAST = 0x0171, AG_KEY_ANY = 0xffff /* For matching */ } AG_KeySym;
SEE ALSO ↑
HISTORY ↑
The
AG_KeySym type first appeared in
Agar 1.4.0.
New function keys were added in
Agar 1.5.0.