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