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, input.settings
, input_qwerty.ini
(and it's siblings), and input.xml
, whereas scripts dealing with reacting to keybinds can be primarily found in the classes CPlayerInput and CInputManager.
Contents
Concepts[edit | edit source]
Actions[edit | edit source]
An action is a discrete something that is executed by pressing/holding a keybind. For example, AttackWithAlternateLight
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[edit | edit source]
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 input_qwerty.ini
(and it's siblings), the [BASE_*] contexts are inherited by other contexts, but in-game, the keybinds in these contexts are ignored.
Collapsible list of all known contexts[edit | edit source]
- [BASE_ALL_ATTACKS]
- [BASE_ATTACKS_NO_LIGHT]
- [BASE_ATTACK_HEAVY]
- [BASE_ATTACK_LIGHT]
- [BASE_CameraMovement]
- [BASE_CharacterMovement]
- [BASE_CharacterMovementWithSprint]
- [BASE_DEBUG]
- [BASE_DRAW_SWORDS]
- [BASE_DRAW_SWORDS_KEYBOARD]
- [BASE_DRINK_POTIONS]
- [BASE_FocusMode]
- [BASE_INTERACTIONS_HORSE]
- [BASE_INTERACTIONS_KEYBOARD]
- [BASE_INTERACTIONS_PAD]
- [BASE_Interactions]
- [BASE_Items]
- [BASE_JOURNAL_AND_QUEST_MANAGE]
- [BASE_PanelsShortcuts]
- [BASE_SHOW_RADIAL_MENU]
- [BASE_SPECIAL_ATTACK_HEAVY]
- [BASE_SPECIAL_ATTACK_LIGHT]
- [BASE_Signs]
- [Boat]
- [BoatPassenger]
- [Combat]
- [Combat_Replacer_Ciri]
- [Death]
- [Diving]
- [EMPTY_CONTEXT]
- [Exploration]
- [Exploration_Replacer_Ciri]
- [FakeAxisInput]
- [FastMenu]
- [Horse]
- [Horse_Replacer_Ciri]
- [InputSettings]
- [JumpClimb]
- [LootPopup]
- [Meditation]
- [RadialMenu]
- [SCENE_IS_STARTING_HACK]
- [Scene]
- [ScriptedAction]
- [Swimming]
- [ThrowHold]
- [TutorialPopup]
- [BASE_ALL_ATTACKS]
- [BASE_ATTACKS_NO_LIGHT]
- [BASE_ATTACK_HEAVY]
- [BASE_ATTACK_LIGHT]
- [BASE_CameraMovement]
- [BASE_CharacterMovement]
- [BASE_CharacterMovementWithSprint]
- [BASE_DEBUG]
- [BASE_DRAW_SWORDS]
- [BASE_DRAW_SWORDS_KEYBOARD]
- [BASE_DRINK_POTIONS]
- [BASE_FocusMode]
- [BASE_INTERACTIONS_HORSE]
- [BASE_INTERACTIONS_KEYBOARD]
- [BASE_INTERACTIONS_PAD]
- [BASE_Interactions]
- [BASE_Items]
- [BASE_JOURNAL_AND_QUEST_MANAGE]
- [BASE_PanelsShortcuts]
- [BASE_SHOW_RADIAL_MENU]
- [BASE_SPECIAL_ATTACK_HEAVY]
- [BASE_SPECIAL_ATTACK_LIGHT]
- [BASE_Signs]
- [Boat]
- [BoatPassenger]
- [Combat]
- [Combat_Replacer_Ciri]
- [Death]
- [Diving]
- [EMPTY_CONTEXT]
- [Exploration]
- [Exploration_Replacer_Ciri]
- [FakeAxisInput]
- [FastMenu]
- [Horse]
- [Horse_Replacer_Ciri]
- [InputSettings]
- [JumpClimb]
- [LootPopup]
- [Meditation]
- [RadialMenu]
- [SCENE_IS_STARTING_HACK]
- [Scene]
- [ScriptedAction]
- [Swimming]
- [ThrowHold]
- [TutorialPopup]
Important Configuration Files[edit | edit source]
input.xml
[edit | edit source]
The input.xml
file (located in the "\bin\config\r4game\user_config_matrix\pc\"
folder) is where the in-game Key Bindings menu is configured.
input.settings
[edit | edit source]
The input.settings
file (found in the "\My Documents\The Witcher 3\"
folder) is where user-configured keybinds are stored.
input_qwerty.ini
(and its siblings)[edit | edit source]
This family of files (found in the "\bin\config\r4game\legacy\base\"
folder) is used to define the default keybinds.
Important Classes[edit | edit source]
CInputManager[edit | edit source]
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[edit | edit source]
This is where most of player input is listened for.