#ifndef INPUT_H #define INPUT_H #include "tier0/platform.h" #include "tier1/utlvector.h" //----------------------------------------------------------------------------- // Keys include mouse buttons and gamepad buttons as well. // KEY_NONE and AXIS_NONE are garbage, so don't rely on them //----------------------------------------------------------------------------- enum EKeyEventType { KEY_EVENT_TYPE_DOWN, KEY_EVENT_TYPE_UP, }; enum EInputKey { KEY_NONE = 0, KEY_MOUSE_BUTTON_0, KEY_MOUSE_BUTTON_1, KEY_MOUSE_BUTTON_2, KEY_MOUSE_BUTTON_3, KEY_MOUSE_BUTTON_4, KEY_ESCAPE, KEY_TAB, KEY_TILDE, KEY_CAPSLOCK, KEY_CONTROL, KEY_SHIFT, KEY_WIN, KEY_ALT, KEY_SPACE, KEY_BACKSPACE, KEY_LBRACKET, KEY_RBRACKET, KEY_BACKSLASH, KEY_SEMICOLON, KEY_APOSTROPHE, KEY_SLASH, KEY_ENTER, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_MAX, KEY_NUM_KEYS = KEY_MAX - 1, }; enum EInputAxis { AXIS_NONE, AXIS_MOUSE_X, AXIS_MOUSE_Y, AXIS_MOUSE_SCROLL, AXIS_CONTROLLER_PITCH, AXIS_CONTROLLER_YAW, AXIS_MAX, AXIS_NUM_AXIS = AXIS_MAX, }; enum EInputMode { INPUT_MODE_GAME, INPUT_MODE_MENU, INPUT_MODE_CONSOLE, INPUT_MODE_INPUT_FIELD, }; extern CUtlVector g_inputModeStack; interface IInput { public: static void Init( void ); static void KeyEvent( EInputKey key, EKeyEventType event ); static void AxisEvent( EInputAxis axis, float fValue ); static void SetInputMode( EInputMode mode ); static void Frame( void ); static void Deinit( void ); }; extern float g_fAxisValues[AXIS_NUM_AXIS]; #endif