# IA_* — Input Actions + IMC_* — Input Mapping Contexts > **UE5 Path:** `Content/Framework/Input/Actions/` + `Content/Framework/Input/Contexts/` > **Plugin Required:** Enhanced Input (enabled in project plugins) --- ## Prerequisites 1. **Project Settings → Plugins → Enhanced Input** → Enabled ✓ 2. Restart editor after enabling --- ## Input Actions — Create All (17 assets) ### Gameplay Actions | Asset Name | Value Type | Description | |-----------|-----------|-------------| | `IA_Move` | `Axis2D` | WASD / Left Stick movement | | `IA_Look` | `Axis2D` | Mouse / Right Stick camera | | `IA_Jump` | `Digital (bool)` | Jump / Vault | | `IA_Sprint` | `Digital (bool)` | Sprint (hold) | | `IA_Crouch` | `Digital (bool)` | Toggle crouch | | `IA_Interact` | `Digital (bool)` | Primary interact (E / X) | | `IA_InteractHold` | `Digital (bool)` | Hold interaction (hold E) | | `IA_Reload` | `Digital (bool)` | Reload weapon | | `IA_Fire` | `Digital (bool)` | Primary fire | | `IA_AimDownSights` | `Digital (bool)` | Aim (hold) | | `IA_Melee` | `Digital (bool)` | Melee attack | | `IA_UseItem` | `Digital (bool)` | Use equipped/quick-slot item | | `IA_ToggleInventory` | `Digital (bool)` | Open/close inventory | | `IA_ToggleJournal` | `Digital (bool)` | Open/close journal | | `IA_Pause` | `Digital (bool)` | Pause menu | | `IA_Hide` | `Digital (bool)` | Enter/exit hiding | | `IA_Peek` | `Digital (bool)` | Peek while hiding | ### How to Create Each 1. Content Browser → `Content/Framework/Input/Actions/` 2. Right-click → **Input → Input Action** 3. Name: `IA_{Action}` 4. Open the asset → set **Value Type** per the table above 5. Optionally add **Triggers** (Tap, Hold, Pressed, Released) 6. Optionally add **Modifiers** (Negate, Dead Zone, Swizzle Axis) ### Common Trigger/Modifier Setup ``` IA_Interact: Trigger: Pressed IA_InteractHold: Trigger: Hold (HoldTimeThreshold = 0.5) IA_Sprint: Trigger: Hold IA_Crouch: Trigger: Pressed (toggle behavior in code) IA_Fire: Trigger: Pressed + Trigger: Hold (for auto-fire) IA_AimDownSights: Trigger: Hold IA_Pause: Trigger: Pressed ``` --- ## Input Mapping Contexts — Create All (6 assets) | Asset Name | Priority | Contains These Actions | When Active | |-----------|----------|----------------------|-------------| | `IMC_Default` | 0 | Move, Look, Jump, Sprint, Crouch, Interact, InteractHold, Reload, Fire, AimDownSights, Melee, UseItem, ToggleInventory, ToggleJournal, Pause | Always (lowest priority) | | `IMC_Hiding` | 5 | Hide, Peek (overrides some IMC_Default) | While hidden | | `IMC_WristwatchUI` | 10 | Interact (re-mapped to wristwatch), Look | Wristwatch mode | | `IMC_Inspection` | 20 | Look (rotation only), Interact (exit inspect) | 3D inspect mode | | `IMC_UI` | 100 | Pause (close), Interact (confirm) | Any menu open | | `IMC_Vehicle` | 3 | Move (vehicle), Look, Interact (exit) | While in vehicle | ### How to Create Each 1. Content Browser → `Content/Framework/Input/Contexts/` 2. Right-click → **Input → Input Mapping Context** 3. Name: `IMC_{Context}` 4. Open → **Add Mapping** for each action in the table 5. For each mapping, select the `IA_` asset and assign a key binding ### Default Key Bindings (PC — IMC_Default) | Action | Primary Key | Secondary Key | |--------|------------|---------------| | `IA_Move` | `W/A/S/D` | Left Stick | | `IA_Look` | `Mouse XY` | Right Stick | | `IA_Jump` | `Space` | `A` (gamepad) | | `IA_Sprint` | `Left Shift` | Left Stick Click | | `IA_Crouch` | `Left Ctrl` | `B` (gamepad) | | `IA_Interact` | `E` | `X` (gamepad) | | `IA_Reload` | `R` | `Y` (gamepad) | | `IA_Fire` | `Left Mouse` | Right Trigger | | `IA_AimDownSights` | `Right Mouse` | Left Trigger | | `IA_Melee` | `V` | Right Stick Click | | `IA_UseItem` | `Q` | `D-Pad Up` | | `IA_ToggleInventory` | `Tab` | `Select` | | `IA_ToggleJournal` | `J` | `D-Pad Left` | | `IA_Pause` | `Escape` | `Start` | --- ## Context Priority System ``` IMC_UI (100) ← Highest — blocks everything IMC_Inspection (20) IMC_WristwatchUI (10) IMC_Hiding (5) IMC_Vehicle (3) IMC_Default (0) ← Lowest — always active ``` When a higher-priority context is pushed, conflicting inputs from lower contexts are overridden. Non-conflicting inputs still pass through. --- ## Test It - [ ] All 17 IA_ assets created with correct Value Types - [ ] All 6 IMC_ assets created with correct mappings - [ ] PIE: WASD moves character, mouse looks around, E interacts - [ ] Push IMC_Hiding → IMC_Default actions blocked except those also in IMC_Hiding - [ ] Open inventory → IMC_UI pushes → cursor appears → game inputs blocked