nuclear@3: /************************************************************************************ nuclear@3: nuclear@3: PublicHeader: OVR.h nuclear@3: Filename : OVR_KeyCodes.h nuclear@3: Content : Common keyboard constants nuclear@3: Created : September 19, 2012 nuclear@3: nuclear@3: Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved. nuclear@3: nuclear@3: Use of this software is subject to the terms of the Oculus license nuclear@3: agreement provided at the time of installation or download, or which nuclear@3: otherwise accompanies this software in either electronic or hard copy form. nuclear@3: nuclear@3: ************************************************************************************/ nuclear@3: nuclear@3: #ifndef OVR_KeyCodes_h nuclear@3: #define OVR_KeyCodes_h nuclear@3: nuclear@3: namespace OVR { nuclear@3: nuclear@3: //----------------------------------------------------------------------------------- nuclear@3: // ***** KeyCode nuclear@3: nuclear@3: // KeyCode enumeration defines platform-independent keyboard key constants. nuclear@3: // Note that Key_A through Key_Z are mapped to capital ascii constants. nuclear@3: nuclear@3: enum KeyCode nuclear@3: { nuclear@3: // Key_None indicates that no key was specified. nuclear@3: Key_None = 0, nuclear@3: nuclear@3: // A through Z and numbers 0 through 9. nuclear@3: Key_A = 65, nuclear@3: Key_B, nuclear@3: Key_C, nuclear@3: Key_D, nuclear@3: Key_E, nuclear@3: Key_F, nuclear@3: Key_G, nuclear@3: Key_H, nuclear@3: Key_I, nuclear@3: Key_J, nuclear@3: Key_K, nuclear@3: Key_L, nuclear@3: Key_M, nuclear@3: Key_N, nuclear@3: Key_O, nuclear@3: Key_P, nuclear@3: Key_Q, nuclear@3: Key_R, nuclear@3: Key_S, nuclear@3: Key_T, nuclear@3: Key_U, nuclear@3: Key_V, nuclear@3: Key_W, nuclear@3: Key_X, nuclear@3: Key_Y, nuclear@3: Key_Z, nuclear@3: Key_Num0 = 48, nuclear@3: Key_Num1, nuclear@3: Key_Num2, nuclear@3: Key_Num3, nuclear@3: Key_Num4, nuclear@3: Key_Num5, nuclear@3: Key_Num6, nuclear@3: Key_Num7, nuclear@3: Key_Num8, nuclear@3: Key_Num9, nuclear@3: nuclear@3: // Numeric keypad. nuclear@3: Key_KP_0 = 0xa0, nuclear@3: Key_KP_1, nuclear@3: Key_KP_2, nuclear@3: Key_KP_3, nuclear@3: Key_KP_4, nuclear@3: Key_KP_5, nuclear@3: Key_KP_6, nuclear@3: Key_KP_7, nuclear@3: Key_KP_8, nuclear@3: Key_KP_9, nuclear@3: Key_KP_Multiply, nuclear@3: Key_KP_Add, nuclear@3: Key_KP_Enter, nuclear@3: Key_KP_Subtract, nuclear@3: Key_KP_Decimal, nuclear@3: Key_KP_Divide, nuclear@3: nuclear@3: // Function keys. nuclear@3: Key_F1 = 0xb0, nuclear@3: Key_F2, nuclear@3: Key_F3, nuclear@3: Key_F4, nuclear@3: Key_F5, nuclear@3: Key_F6, nuclear@3: Key_F7, nuclear@3: Key_F8, nuclear@3: Key_F9, nuclear@3: Key_F10, nuclear@3: Key_F11, nuclear@3: Key_F12, nuclear@3: Key_F13, nuclear@3: Key_F14, nuclear@3: Key_F15, nuclear@3: nuclear@3: // Other keys. nuclear@3: Key_Backspace = 8, nuclear@3: Key_Tab, nuclear@3: Key_Clear = 12, nuclear@3: Key_Return, nuclear@3: Key_Shift = 16, nuclear@3: Key_Control, nuclear@3: Key_Alt, nuclear@3: Key_Pause, nuclear@3: Key_CapsLock = 20, // Toggle nuclear@3: Key_Escape = 27, nuclear@3: Key_Space = 32, nuclear@3: Key_Quote = 39, nuclear@3: Key_PageUp = 0xc0, nuclear@3: Key_PageDown, nuclear@3: Key_End, nuclear@3: Key_Home, nuclear@3: Key_Left, nuclear@3: Key_Up, nuclear@3: Key_Right, nuclear@3: Key_Down, nuclear@3: Key_Insert, nuclear@3: Key_Delete, nuclear@3: Key_Help, nuclear@3: nuclear@3: Key_Comma = 44, nuclear@3: Key_Minus, nuclear@3: Key_Slash = 47, nuclear@3: Key_Period, nuclear@3: Key_NumLock = 144, // Toggle nuclear@3: Key_ScrollLock = 145, // Toggle nuclear@3: nuclear@3: Key_Semicolon = 59, nuclear@3: Key_Equal = 61, nuclear@3: Key_Bar = 192, nuclear@3: Key_BracketLeft = 91, nuclear@3: Key_Backslash, nuclear@3: Key_BracketRight, nuclear@3: nuclear@3: Key_OEM_AX = 0xE1, // 'AX' key on Japanese AX keyboard nuclear@3: Key_OEM_102 = 0xE2, // "<>" or "\|" on RT 102-key keyboard. nuclear@3: Key_ICO_HELP = 0xE3, // Help key on ICO nuclear@3: Key_ICO_00 = 0xE4, // 00 key on ICO nuclear@3: nuclear@3: Key_Meta, nuclear@3: nuclear@3: // Total number of keys. nuclear@3: Key_CodeCount nuclear@3: }; nuclear@3: nuclear@3: nuclear@3: //----------------------------------------------------------------------------------- nuclear@3: nuclear@3: class KeyModifiers nuclear@3: { nuclear@3: public: nuclear@3: enum nuclear@3: { nuclear@3: Key_ShiftPressed = 0x01, nuclear@3: Key_CtrlPressed = 0x02, nuclear@3: Key_AltPressed = 0x04, nuclear@3: Key_MetaPressed = 0x08, nuclear@3: Key_CapsToggled = 0x10, nuclear@3: Key_NumToggled = 0x20, nuclear@3: Key_ScrollToggled = 0x40, nuclear@3: nuclear@3: Initialized_Bit = 0x80, nuclear@3: Initialized_Mask = 0xFF nuclear@3: }; nuclear@3: unsigned char States; nuclear@3: nuclear@3: KeyModifiers() : States(0) { } nuclear@3: KeyModifiers(unsigned char st) : States((unsigned char)(st | Initialized_Bit)) { } nuclear@3: nuclear@3: void Reset() { States = 0; } nuclear@3: nuclear@3: bool IsShiftPressed() const { return (States & Key_ShiftPressed) != 0; } nuclear@3: bool IsCtrlPressed() const { return (States & Key_CtrlPressed) != 0; } nuclear@3: bool IsAltPressed() const { return (States & Key_AltPressed) != 0; } nuclear@3: bool IsMetaPressed() const { return (States & Key_MetaPressed) != 0; } nuclear@3: bool IsCapsToggled() const { return (States & Key_CapsToggled) != 0; } nuclear@3: bool IsNumToggled() const { return (States & Key_NumToggled) != 0; } nuclear@3: bool IsScrollToggled() const{ return (States & Key_ScrollToggled) != 0; } nuclear@3: nuclear@3: void SetShiftPressed(bool v = true) { (v) ? States |= Key_ShiftPressed : States &= ~Key_ShiftPressed; } nuclear@3: void SetCtrlPressed(bool v = true) { (v) ? States |= Key_CtrlPressed : States &= ~Key_CtrlPressed; } nuclear@3: void SetAltPressed(bool v = true) { (v) ? States |= Key_AltPressed : States &= ~Key_AltPressed; } nuclear@3: void SetMetaPressed(bool v = true) { (v) ? States |= Key_MetaPressed : States &= ~Key_MetaPressed; } nuclear@3: void SetCapsToggled(bool v = true) { (v) ? States |= Key_CapsToggled : States &= ~Key_CapsToggled; } nuclear@3: void SetNumToggled(bool v = true) { (v) ? States |= Key_NumToggled : States &= ~Key_NumToggled; } nuclear@3: void SetScrollToggled(bool v = true) { (v) ? States |= Key_ScrollToggled: States &= ~Key_ScrollToggled; } nuclear@3: nuclear@3: bool IsInitialized() const { return (States & Initialized_Mask) != 0; } nuclear@3: }; nuclear@3: nuclear@3: nuclear@3: //----------------------------------------------------------------------------------- nuclear@3: nuclear@3: /* nuclear@3: enum PadKeyCode nuclear@3: { nuclear@3: Pad_None, // Indicates absence of key code. nuclear@3: Pad_Back, nuclear@3: Pad_Start, nuclear@3: Pad_A, nuclear@3: Pad_B, nuclear@3: Pad_X, nuclear@3: Pad_Y, nuclear@3: Pad_R1, // RightShoulder; nuclear@3: Pad_L1, // LeftShoulder; nuclear@3: Pad_R2, // RightTrigger; nuclear@3: Pad_L2, // LeftTrigger; nuclear@3: Pad_Up, nuclear@3: Pad_Down, nuclear@3: Pad_Right, nuclear@3: Pad_Left, nuclear@3: Pad_Plus, nuclear@3: Pad_Minus, nuclear@3: Pad_1, nuclear@3: Pad_2, nuclear@3: Pad_H, nuclear@3: Pad_C, nuclear@3: Pad_Z, nuclear@3: Pad_O, nuclear@3: Pad_T, nuclear@3: Pad_S, nuclear@3: Pad_Select, nuclear@3: Pad_Home, nuclear@3: Pad_RT, // RightThumb; nuclear@3: Pad_LT // LeftThumb; nuclear@3: }; nuclear@3: */ nuclear@3: nuclear@3: } // OVR nuclear@3: nuclear@3: #endif