Getting Started
From download to a working controller in about five minutes.
Requirements
| Component | Requirement |
|---|---|
| Minecraft | 1.7.10 – 26.3, 13 versions: 1.20.1 / 1.19.2 / 1.18.2 (Forge / Fabric); 1.21.1, 1.21.11, 26.x (NeoForge / Fabric); 1.16.5 and older are Forge builds (1.16.5 also has Fabric) — see Minecraft Versions |
| Java | 8 (1.16.5 and older); 17 (1.18.2 – 1.20.1); 21 (1.21.x); 25 (26.x) |
| Fabric API | Required on Fabric (Forge / NeoForge builds have no extra dependencies) |
| SDL3 | Bundled on all three desktop platforms; on Android it comes from the launcher — see Platform Support |
| Platform | Windows (x86_64), macOS (Intel / Apple Silicon), Linux (x86_64 / aarch64); on Android it runs inside a launcher (FCL / Zalith Launcher 2 / Mojo / Amethyst) — see Platform Support |
| Side | Client-side only; servers do not need it and other players are unaffected |
| Controllers | Xbox One / Series X|S, PS4 / PS5 (DualShock 4, DualSense), Switch Pro, Xbox Elite (paddles), Steam Controller, generic XInput / DirectInput pads |
Download & Install
- On the CurseForge project page, pick the file matching your MC version and loader.
-
Put the JAR into the game's
mods/folder (on Fabric, make sure Fabric API is installed too). - Launch the game. Connection status, name, and type of each controller appear under Control Flex Settings → Gamepad Selection.
Multiple controllers (hotplug): Control Flex detects pads via SDL3 hotplug events and tracks them by identity (name / type / serial). If the active pad disconnects, the first available one is selected automatically.
On Android (Fold Craft Launcher, Zalith Launcher 2, Mojo, Amethyst, and similar): just drop the JAR into that instance's mods/. There is no SDL3 to install — it comes from the launcher itself. Three things to watch: the launcher's -Dos.version must not be overridden by custom JVM arguments, or the mod treats the JVM as desktop Linux and no controller ever appears; hide the launcher's own virtual mouse pointer (turn it off, or set its size / opacity to 0); and on ZL2 / FCL set the gamepad input mode to SDL Direct. See Platform Support.
Opening Settings
Defaults: F9 on keyboard, Back + Start on a controller. The open-settings action is itself rebindable and lives in the Control Flex category of Key Mapping.
Pick a Template
Three templates ship with the mod; switch between them in the settings screen at any time:
| Template | What it is |
|---|---|
| Basic | The foundation: A jump, RT attack, LT use, left stick move, right stick look |
| Bedrock | Closer to the Bedrock Edition controller feel |
| Recommend | The author's modpack-oriented layout with more actions pre-bound |
A template is a set of default bindings; your edits are stored separately and never modify the template. See Settings & Controls.
Default Bindings (Basic Template)
Main layer (in-game)
| Action | Button | Mode |
|---|---|---|
| Move | Left stick | Hold |
| Look | Right stick | Hold |
| Jump | A | Hold |
| Sneak (hold) | R-stick click | Hold |
| Sneak (latch) | R-stick click | Double Toggle |
| Sprint | L-stick click | Hold |
| Attack | RT | Hold |
| Use / Place | LT | Hold |
| Drop | D-Pad ↓ | Press |
| Drop stack (combo) | R-stick click + D-Pad ↓ | Press |
| Inventory | D-Pad ↑ | Press |
| Perspective | D-Pad → | Tap |
| Hotbar prev / next | LB / RB | Tap |
| Pause menu | Start | Long Press |
| Open settings | Back + Start | Press |
| Radial menus 1–5 | Back(on Shift 1–4, hold Back for menus 2–5) | Hold |
| Shift layer 1 / 2 | LB / RB | Hold |
| Open guide | Guide | Press |
Screen layer (whenever a screen is open)
| Action | Button | Mode |
|---|---|---|
| Cursor move | Left stick | Hold |
| Slot navigation | D-Pad | Hold |
| Confirm / click | A | Press |
| Back / close | B | Press |
| Tab prev / next | LB / RB | Press |
| Quick move (shift-click) | Y | Tap |
| Take half | X | Press |
| Scroll | R-stick ↑ / ↓ | Hold |
| Cycle options | R-stick ← / → | Tap |
| JEI recipe / uses | RT + D-Pad ← / → | Press |
Overlay layer (interactive HUDs)
The Overlay layer is explicit (no Main inheritance): movement, jump, attack, use, look, and scrolling stay bound, with B as back. Unconfigured actions stay silent during overlays so combat keys cannot misfire.
Virtual KBM & Thresholds
- Virtual KBM: B injects physical Esc in screens; LT injects Left Shift (GUI layer); Page Up / Page Down are enabled for the GUI layer.
- Default thresholds: Tap 500 ms, Long Press 1000 ms (configurable in Other Settings).
These are the Basic template defaults. Bedrock and Recommend differ slightly, and every binding can be changed — see Settings & Controls for rebinding and calibration.