Our game has two input modes when using the controller. One is called Virtual Cursor, where it just mimics a mouse cursor directly. Moving the analog stick moves a cursor on screen. Pressing the gamepad bottom face button registers as EKeys::LeftMouseButton as far as the input system is concerned. This is done using a IInputProcessor.
The other is called Character Pilot, which is your typical 3rd-person controller movement setup. Analog stick moves the character, pressing the gamepad bottom face button registers as EKeys::Gamepad_FaceButton_Bottom. This also uses a IInputProcessor, but it's more of just a dummy one, it doesn't actually process inputs. It's mostly used to help figure out when the player has switched from mouse to controller at any given time.
Whenever the player stops piloting the character, we remove the Virtual Cursor processor and add the Character Pilot processor. Doing this changes what the gamepad bottom face button registers as:
With Virtual Cursor: EKeys::Gamepad_FaceButton_Botto