CrimsonInput · Lesson 8 of 8

Chords & User Settings

Intermediate5 minRuntimeSettings

Before you start

  • Completed: Apply the Mapping Context
Video coming soon

Chapters

1. Inline chords (fixed)

On an IMC key mapping, add the Crimson Dynamic Chord trigger (UInputTriggerCrimsonDynamicChord) and set its Default ChordbRequiresShift / bRequiresCtrl / bRequiresAlt. Leave Mapping Name empty for an inline, non-rebindable chord. Matching is exact: Shift+Q does not fire a plain-Q binding, and gamepads bypass chords entirely.

The Crimson Dynamic Chord trigger with a Shift requirement on a key mapping.

2. Turn on user settings

Persistent, player-rebindable chords ride on Enhanced Input's user settings. In Project Settings → Engine → Enhanced Input: tick Enable User Settings and set User Settings Class = CrimsonInputUserSettings.

Enable User Settings + CrimsonInputUserSettings — both are required.
The number-one cause
If chord rebinds silently don't persist, one of those two toggles is off — GetUserSettings() returns null and every write is dropped. This is the most common setup miss in the whole plugin.

3. Make a chord rebindable

Give the action a Player Mappable Key Settings of class CrimsonPlayerMappableKeySettings with a unique NameAddMappingContextWithChordTriggers injects the trigger automatically. Then read and write through CrimsonInputUserSettings: SetChordRequirement / GetChordRequirementWithDefaults, validate with FindChordConflict, and show the right glyphs with UCrimsonInputHelpers::GetChordDisplayTextForAction.

What's next
The docs continue with settings-driven modifiers (deadzone, aim inversion), gamepad sensitivity tables (CrimsonAimSensitivityData), and CommonUI action binding — all on the config you just built.