Keybinds in The Witcher 3

Keybinds are how the player interacts with the game world. In The Witcher 3: Wild Hunt, keybind data is stored in a couple different places,,   (and it's siblings), and  , whereas scripts dealing with reacting to keybinds can be primarily found in the classes CPlayerInput and CInputManager.

Actions
An action is a discrete something that is executed by pressing/holding a keybind. For example,  is the action that is, by default, bound to left mouse button. When you click a button, the engine executes all script events that are registered for all bound actions to that button.

Contexts
What a key does depends on the current state of the player in the game. Each time that the context changes, the keybind set does as well, allowing for completely different keybind sets in different situations, though this capability is generally not used. Generally speaking, the player is normally in either [Exploration] or [Combat], though during Ciri sections of the game, those are replaced by [Exploration_Replacer_Ciri] and [Combat_Replacer_Ciri]. Inside of  (and it's siblings), the [BASE_*] contexts are inherited by other contexts, but in-game, the keybinds in these contexts are ignored.

The  file (located in the   folder) is where the in-game Key Bindings menu is configured.

The  file (found in the   folder) is where user-configured keybinds are stored.

(and its siblings)
This family of files (found in the  folder) is used to define the default keybinds.

CInputManager
This class binds the REDengine input code to the scripting components of the Witcher 3 and is normally accessed by the static global object theInput.

CPlayerInput
This is where most of player input is listened for.