NVidia Gameworks
  • Main Page
  • Classes
  • Files
  • File List
  • File Members

NvKeyboard.h

Go to the documentation of this file.
00001 // TAGRELEASE: PUBLIC
00002 
00003 #ifndef NV_KEYBOARD_H
00004 #define NV_KEYBOARD_H
00005 
00006 #include <NvFoundation.h>
00007 
00010 
00012 struct NvKey {
00013     // this is currently designed around
00014     // us keyboard mappings for simplicity,
00015     // and quoted ASCII literals for values
00016     // where appropriate.
00017     // this could easily be changed to use
00018     // codes from say the USB HID usage table
00019     // for keyboard scan codes.
00020 
00021     // other design note is I've tried to keep
00022     // keycodes in the lower 16-bits, and bit
00023     // flags in the upper 16.  So if you mask
00024     // out the high 16, you'll get non-unique
00025     // modifiers, AND we can pass mod+key
00026     // into functions that don't accept
00027     // modifiers as bindable keys.
00028     enum Enum {
00029         K_UNKNOWN = 0x80000000, 
00030 
00031         K_ESC = 0x1B, // ascii
00032         K_FKEY_BIT = 0x2000,
00033         K_F1 = K_FKEY_BIT+1,
00034         K_F2 = K_FKEY_BIT+2,
00035         K_F3 = K_FKEY_BIT+3,
00036         K_F4 = K_FKEY_BIT+4,
00037         K_F5 = K_FKEY_BIT+5,
00038         K_F6 = K_FKEY_BIT+6,
00039         K_F7 = K_FKEY_BIT+7,
00040         K_F8 = K_FKEY_BIT+8,
00041         K_F9 = K_FKEY_BIT+9,
00042         K_F10 = K_FKEY_BIT+10,
00043         K_F11 = K_FKEY_BIT+11,
00044         K_F12 = K_FKEY_BIT+12,
00045 
00046         K_EXTRA_KEY_BIT = 0x1000,
00047         K_PRINT_SCREEN = K_EXTRA_KEY_BIT+1,
00048         K_SCROLL_LOCK = K_EXTRA_KEY_BIT+2,
00049         K_PAUSE = K_EXTRA_KEY_BIT+3,
00050 
00051         K_INSERT = K_EXTRA_KEY_BIT+17,
00052         K_DELETE = K_EXTRA_KEY_BIT+18, // or ascii 0x7F
00053         K_HOME = K_EXTRA_KEY_BIT+19,
00054         K_END = K_EXTRA_KEY_BIT+20,
00055         K_PAGE_UP = K_EXTRA_KEY_BIT+21,
00056         K_PAGE_DOWN = K_EXTRA_KEY_BIT+22,
00057 
00058         K_ARROW_UP = K_EXTRA_KEY_BIT+33,
00059         K_ARROW_DOWN = K_EXTRA_KEY_BIT+34,
00060         K_ARROW_LEFT = K_EXTRA_KEY_BIT+35,
00061         K_ARROW_RIGHT = K_EXTRA_KEY_BIT+36,
00062 
00063         K_ACCENT_GRAVE = '`',
00064         K_0 = '0',
00065         K_1 = '1',
00066         K_2 = '2',
00067         K_3 = '3',
00068         K_4 = '4',
00069         K_5 = '5',
00070         K_6 = '6',
00071         K_7 = '7',
00072         K_8 = '8',
00073         K_9 = '9',
00074         K_MINUS = '-',
00075         K_EQUAL = '=',
00076         K_BACKSPACE = 0x08, // ascii
00077 
00078         K_TAB = '\t',
00079         K_Q = 'Q',
00080         K_W = 'W',
00081         K_E = 'E',
00082         K_R = 'R',
00083         K_T = 'T',
00084         K_Y = 'Y',
00085         K_U = 'U',
00086         K_I = 'I',
00087         K_O = 'O',
00088         K_P = 'P',
00089         K_LBRACKET = '[',
00090         K_RBRACKET = ']',
00091         K_BACKSLASH = '\\',
00092 
00093         K_CAPS_LOCK = K_EXTRA_KEY_BIT+4, // !!!!TBD after K_PAUSE
00094         K_A = 'A',
00095         K_S = 'S',
00096         K_D = 'D',
00097         K_F = 'F',
00098         K_G = 'G',
00099         K_H = 'H',
00100         K_J = 'J',
00101         K_K = 'K',
00102         K_L = 'L',
00103         K_SEMICOLON = ';',
00104         K_APOSTROPHE = '\'',
00105         K_ENTER = '\n', // ascii LF 0x10
00106 
00107         K_MOD_BASE_BIT = 0x8000, // all modifier keys are in this 'class'.
00108         // if we want left/right distinguished only by high flags, keep this in upper 16
00109         // otherwise, can drop it to say 0x100 and make L/R keys unique.
00110         K_MOD_RIGHT_BIT = 0x100000, // 'flag' bit for the 'right' version of left/right keys
00111         K_MOD_SHIFT_BIT = 0x200000, // high 'flag' bit for shift
00112         K_MOD_CTRL_BIT = 0x400000, // high 'flag' bit for ctrl
00113         K_MOD_ALT_BIT = 0x800000, // high 'flag' bit for alt
00114 
00115         K_MOD_WINDOWS_BIT = 0x1000000, // 'flag' bit for windows key for now. !!!!TBD
00116 
00117         K_SHIFT_ANY = K_MOD_BASE_BIT + 1,
00118         K_CTRL_ANY = K_MOD_BASE_BIT + 2,
00119         K_ALT_ANY = K_MOD_BASE_BIT + 3,
00120         K_WINDOWS_ANY = K_MOD_BASE_BIT + 4,
00121 
00122         K_SHIFT_LEFT = K_MOD_SHIFT_BIT + K_SHIFT_ANY, // so this is curr 0x00208001
00123         K_Z = 'Z',
00124         K_X = 'X',
00125         K_C = 'C',
00126         K_V = 'V',
00127         K_B = 'B',
00128         K_N = 'N',
00129         K_M = 'M',
00130         K_COMMA = ',',
00131         K_PERIOD = '.',
00132         K_SLASH = '/',
00133         K_SHIFT_RIGHT = K_MOD_SHIFT_BIT + K_SHIFT_ANY + K_MOD_RIGHT_BIT,
00134 
00135         K_CTRL_LEFT = K_MOD_CTRL_BIT + K_CTRL_ANY,
00136         K_WINDOWS_LEFT = K_MOD_WINDOWS_BIT + K_WINDOWS_ANY,
00137         K_ALT_LEFT = K_MOD_ALT_BIT + K_ALT_ANY,
00138         K_SPACE = ' ',
00139         K_ALT_RIGHT = K_MOD_ALT_BIT + K_ALT_ANY + K_MOD_RIGHT_BIT,
00140         K_WINDOWS_RIGHT = K_MOD_WINDOWS_BIT + K_WINDOWS_ANY + K_MOD_RIGHT_BIT,
00141         K_CONTEXT = K_EXTRA_KEY_BIT+5, // !!!!TBD context menu key, put after caps
00142         K_CTRL_RIGHT = K_MOD_CTRL_BIT + K_CTRL_ANY + K_MOD_RIGHT_BIT,
00143 
00144         K_KP_BIT = 0x4000,
00145         K_NUMLOCK = K_KP_BIT+ 0x101, // !!!!TBD just something...
00146         K_KP_DIVIDE = K_KP_BIT + '/',
00147         K_KP_MULTIPLY = K_KP_BIT + '*',
00148         K_KP_SUBTRACT = K_KP_BIT + '-',
00149         K_KP_ADD = K_KP_BIT + '+',
00150         K_KP_ENTER = K_KP_BIT + '/',
00151         K_KP_DECIMAL = K_KP_BIT + '.',
00152         K_KP_0 = K_KP_BIT + '0',
00153         K_KP_1 = K_KP_BIT + '1',
00154         K_KP_2 = K_KP_BIT + '2',
00155         K_KP_3 = K_KP_BIT + '3',
00156         K_KP_4 = K_KP_BIT + '4',
00157         K_KP_5 = K_KP_BIT + '5',
00158         K_KP_6 = K_KP_BIT + '6',
00159         K_KP_7 = K_KP_BIT + '7',
00160         K_KP_8 = K_KP_BIT + '8',
00161         K_KP_9 = K_KP_BIT + '9',
00162 
00163         // !!!!TBD TODO ???? other common keys? windows, win8, ios, winrt, android...
00164         // volume: +/-/mute
00165         // media: next/prev/pause/play/launch-player
00166         // web: home/refresh/stop/next/prev
00167         // other launcher keys: mail, calc, file explorer.  photos/gallery.
00168         // lock key, unlock key
00169     };
00170 };
00171 
00172 #endif
Generated on Sat Mar 8 14:58:35 2014 for NVIDIA GameWorks OpenGL App Framework and Libraries by Doxygen
©2014 NVIDIA Corporation.