From Valve Developer Community
Conventionally, each type of supported peripheral has its own CPP file. Valve's
CInput interface implementation is in
in_main.cpp (for usercmd packaging and keyboard),
static CInput g_Input; IInput* input = (IInput*)&g_Input;
Bug: Although your mod will compile fine if you bypass creating the
g_Inputobject, you may encounter bizarre errors (including the world not rendering and a cursor that is re-centred every frame) when launching with a debugger attached!
CInput, Valve's basic