Settings & Controls
Open settings with F9 (keyboard) or Back + Start (controller). This page covers what is in the UI, how to rebind, how to calibrate, where configs live, and what to check when something misbehaves.
Inside the Settings Screen
| Area | What you do there |
|---|---|
| Key Mapping | View and edit every binding per layer (Main / Shift 1–4 / Screen / Overlay); searchable, including pinyin search |
| Mod Adaptation | Per-mod discovered keys, Screen / Overlay rules, and community config sync — see Mod Compatibility |
| Calibration | Stick deadzones and movement / camera response curves; auto or per-axis calibration |
| Other Settings | Tap / Long Press thresholds, Analog Movement (360°) and the server whitelist, and other global options |
| Gamepad Selection | Detected controllers (name / type / serial); pick which one is active when several are connected |
Rebinding
- Find the action's layer and category in Key Mapping (search by name, or by Chinese pinyin).
- Select the row to start capture, then press a controller button — the resolved input appears live.
- For a chord: press the first button, then add the rest within 500 ms until the chord is complete.
- Some actions restrict their mode (layer switches are fixed to Hold; Shift-layer return-to-Main to Release) and the UI only offers valid modes.
Edited entries are marked “User modified”, keeping them distinct from template defaults; reset per page or restore the whole template default.
Stick & Trigger Calibration
- Deadzones are per-axis: left stick X/Y, right stick X/Y, left trigger, right trigger.
- Both one-click auto calibration (all axes) and single-axis calibration are available, with live axis readouts so you can spot drift.
- Movement and camera response curves live here too; the Analog Movement policy (360° / keyboard-like 8-way) is under Other Settings.
Templates, Profiles & Reset
- Templates (Basic / Bedrock / Recommend) are complete default layouts; custom templates can be dropped in as JSON under
config/controlflex/templates/. - Your edits live in profiles, separate from the template — switching templates neither loses them nor rewrites the template file.
- Reset per page, or restore everything to template defaults.
- Upgrading from 0.8.6.x migrates profiles, compat files, and client settings automatically on first launch; originals are backed up under
config/controlflex/backup/.
Key Detection (Debug)
To debug “why did that button do nothing”, open the tick-by-tick detection log. It shows physical keys, virtual keys, the resolved action, the layer, and timing, with separate In-Game and GUI test modes matching the different input paths. While active, controller input is dedicated to logging.
Where Configs Live
config/controlflex/
├── templates/ # template JSON files
├── profiles/ # your edits (profiles)
├── compat/ # mod compat configs (default / mods / user)
├── radial_menu/ # radial menu layouts and icons
├── backup/ # automatic backups from migrations
└── cfx-client.json # client state
Layer priority and override rules for pack authors are on the Configuration page.
Troubleshooting
Controller not detected
First check Gamepad Selection for a detected device (name / type). If the list is empty: try another USB port or re-pair Bluetooth, verify the pad works system-wide, and make sure the JAR matches your MC version and loader; on Fabric, confirm Fabric API is installed.
A mod's key is bound but does nothing
Check in order: (1) which layer the screen belongs to (Screen / Overlay / Main) and bind there; (2) add a rule for that mod's screen in Mod Adaptation, or sync a community config; (3) if the mod only listens to physical keys, bind it via Virtual KBM. Full flow on Mod Compatibility.
Movement looks abnormal to a server
Switch the Analog Movement policy to keyboard-like 8-way (the default for public servers and Realms); whitelist a server if it should still get smooth movement. See Analog Movement.
Character freezes when the window loses focus
That is vanilla Pause on Lost Focus. Press F3+P to disable it (required for couch co-op; the pause screen also shows a hint).
Starting over from scratch
Back up and rename the whole config/controlflex/ directory; the game regenerates defaults on the next launch, and community/packaged configs are re-extracted at startup.