#include "userinput.h" #include "tier1/utlstring.h" #include "game.h" #include "baseentity.h" class CFunnyInput: public IHumanDeviceInput { public: virtual EInputType GetInputType() override { return k_EInput_Game; }; virtual void OnGameButton( EInputDeviceType eDevice, EInputButton eScancode, bool bIsPressed ) override; virtual void OnGameAxis( EInputDeviceType eDevice, EInputAxis eAxis, float fValue) override; virtual void OnGameAxisDiff( EInputDeviceType eDevice, EInputAxis eAxis, float fValue ) override; virtual void OnButton( EInputDeviceType eDevice, EInputButton eScancode, bool bIsPressed ) override {}; virtual void OnAxis( EInputDeviceType eDevice, EInputAxis eAxis, float fValue) override {}; virtual void OnAxisDiff( EInputDeviceType eDevice, EInputAxis eAxis, float fValue ) override {}; virtual void OnTextWriteUTF8( uint32_t uCode ) override {}; CUtlString m_aszBindings[k_EInputButton_Count]; }; static CFunnyInput s_mainInput; IHumanDeviceInput *g_pMainInput = &s_mainInput; void CFunnyInput::OnGameButton( EInputDeviceType eDevice, EInputButton eScancode, bool bIsPressed ) { if (bIsPressed) { Console()->AddCommand(m_aszBindings[eScancode]); Console()->AddCommand("\n"); } else { auto binding = Console()->ParseCommandLine(m_aszBindings[eScancode]); if (binding.GetSize()==0) return; if (binding[0].GetSize() == 0) return; if (binding[0][0].GetString()[0] == '+') { CUtlString &command = binding[0][0]; command.GetString()[0] = '-'; } Console()->AddCommand(binding[0][0]); Console()->AddCommand("\n"); } } void Game_OnGameAxis( EInputDeviceType eDevice, EInputAxis eAxis, float fValue ); void Game_OnGameAxisDiff( EInputDeviceType eDevice, EInputAxis eAxis, float fValue ); void CFunnyInput::OnGameAxis( EInputDeviceType eDevice, EInputAxis eAxis, float fValue) { Game_OnGameAxis(eDevice, eAxis, fValue); } void CFunnyInput::OnGameAxisDiff( EInputDeviceType eDevice, EInputAxis eAxis, float fValue ) { Game_OnGameAxisDiff(eDevice, eAxis, fValue); } struct KeyName_t { const char *szName; EInputButton eKey; }; static KeyName_t s_keys[] = { {"ESCAPE",k_EInputButton_ESCAPE}, {"ESC",k_EInputButton_ESCAPE}, {"TAB",k_EInputButton_TAB}, {"ENTER",k_EInputButton_ENTER}, {"CTRL",k_EInputButton_CONTROL}, {"CONTROL",k_EInputButton_CONTROL}, {"SHIFT",k_EInputButton_SHIFT}, {"ALT",k_EInputButton_ALT}, {"SPACE",k_EInputButton_SPACE}, {"BACKSPACE",k_EInputButton_BACKSPACE}, {"[",k_EInputButton_LBRACKET}, {"]",k_EInputButton_RBRACKET}, {"{",k_EInputButton_LBRACKET}, {"}",k_EInputButton_RBRACKET}, {"\\",k_EInputButton_BACKSLASH}, {";",k_EInputButton_SEMICOLON}, {":",k_EInputButton_SEMICOLON}, {"\'",k_EInputButton_APOSTROPHE}, {"\"",k_EInputButton_APOSTROPHE}, {"F1",k_EInputButton_F1}, {"F2",k_EInputButton_F2}, {"F3",k_EInputButton_F3}, {"F4",k_EInputButton_F4}, {"F5",k_EInputButton_F5}, {"F6",k_EInputButton_F6}, {"F7",k_EInputButton_F7}, {"F8",k_EInputButton_F8}, {"F9",k_EInputButton_F9}, {"F10",k_EInputButton_F10}, {"F11",k_EInputButton_F11}, {"F12",k_EInputButton_F12}, {"1",k_EInputButton_1}, {"2",k_EInputButton_2}, {"3",k_EInputButton_3}, {"4",k_EInputButton_4}, {"5",k_EInputButton_5}, {"6",k_EInputButton_6}, {"7",k_EInputButton_7}, {"8",k_EInputButton_8}, {"9",k_EInputButton_9}, {"0",k_EInputButton_0}, {"A",k_EInputButton_A}, {"B",k_EInputButton_B}, {"C",k_EInputButton_C}, {"D",k_EInputButton_D}, {"E",k_EInputButton_E}, {"F",k_EInputButton_F}, {"G",k_EInputButton_G}, {"H",k_EInputButton_H}, {"I",k_EInputButton_I}, {"J",k_EInputButton_J}, {"K",k_EInputButton_K}, {"L",k_EInputButton_L}, {"M",k_EInputButton_M}, {"N",k_EInputButton_N}, {"O",k_EInputButton_O}, {"P",k_EInputButton_P}, {"Q",k_EInputButton_Q}, {"R",k_EInputButton_R}, {"S",k_EInputButton_S}, {"T",k_EInputButton_T}, {"U",k_EInputButton_U}, {"V",k_EInputButton_V}, {"W",k_EInputButton_W}, {"X",k_EInputButton_X}, {"Y",k_EInputButton_Y}, {"Z",k_EInputButton_Z}, }; static EInputButton GetStringAsKey( char *psz ) { for (uint32_t i = 0; i