Input Settings and Controls Guide

June 1, 2026 ยท View on GitHub

This guide covers the main ways to configure keyboard, mouse, and controller input in OpenQ4, including the in-game menu, console commands, default binds, config files, and common troubleshooting.

Quick Start

  • To rebind actions, open Settings -> Controls.
  • To tune mouse and controller feel, open Settings -> Game Options.
  • Start with sensitivity and dead zone before changing advanced values.
  • Press ` or ~ to open the console with the stock default bindings.
  • Run listBinds to see your current bindings.
  • Run writeConfig my-input-backup.cfg to save a manual backup before large binding changes.
  • Use Load Defaults if the controls get into a bad state. This also resets custom binds.

Where Things Are

MenuUse it for
Settings -> Controls -> MovementForward, back, strafe, jump, crouch, turn, run/walk.
Settings -> Controls -> WeaponsDirect weapon slots and buy menu.
Settings -> Controls -> AttackAttack, reload, zoom, next/previous weapon, flashlight, objectives, weapon wheel.
Settings -> Controls -> OtherQuick save/load, chat, vote, ready, stats, emotes, voice chat.
Settings -> Game OptionsFree look, toggle zoom, mouse input tuning, controller tuning, console access.

To rebind an action, select its row and press the key, mouse button, or controller button you want to use. Analog sticks are configured through the controller settings instead of being rebound as buttons.

Where OpenQ4 Stores Input Settings

At startup, OpenQ4 loads input-related config in this order:

  1. default.cfg
  2. openq4_defaults.cfg (if present)
  3. openq4_profile_<profile>.cfg, such as openq4_profile_steamdeck.cfg when a platform profile is active
  4. OpenQ4Config.cfg
  5. autoexec.cfg (if present)

What this means in practice:

  • Stock defaults come from content/baseoq4/default.cfg.
  • OpenQ4-specific overrides can be layered on top through openq4_defaults.cfg.
  • Platform-specific overrides can be applied through com_platformProfile.
  • Your saved personal changes live in OpenQ4Config.cfg.
  • Advanced users can place their own final overrides in autoexec.cfg.

OpenQ4Config.cfg is the main user config file name, and it is written under the normal writable save/config area (fs_savepath, which defaults to fs_homepath).

Mouse Settings

Mouse tuning lives in Settings -> Game Options.

SettingBacking cvarGood starting pointWhat it changes
Free Lookin_freeLookOnLets the mouse control view direction by default.
Toggle Zoomin_toggleZoomOffMakes zoom act as a toggle instead of hold-to-zoom.
Mouse Pitchm_pitchNormalFlips vertical mouse look.
Mouse Smoothm_smooth1Higher values smooth motion but can feel less direct.
Mouse SensitivitysensitivityPersonal preferenceMain mouse look speed. With Mouse CPI enabled, this is degrees per centimeter.
Mouse CPIm_cpi0Set this to your mouse CPI/DPI for physical sensitivity. 0 keeps classic raw-count behavior.
View Filterm_filter0Optional QuakeLive-style view-angle history filtering. Leave it off for the most direct raw input.
Mouse Accelcl_mouseAccel0QuakeLive-style acceleration. Positive values add sensitivity as movement rate rises; negative values subtract it.
Accel Offsetcl_mouseAccelOffset0Movement-rate threshold before acceleration starts.
Accel Curvecl_mouseAccelPower2Acceleration curve shape. 2 matches QuakeLive's default power.
Sensitivity Capcl_mouseSensCap0Caps accelerated sensitivity when set above 0.
Console Accesscon_allowConsoleTildeControls whether tilde opens the console directly or requires Ctrl+Alt+Tilde.

Useful console-only fallback:

seta m_maxMouseDelta 0

m_maxMouseDelta 0 keeps the modern high-DPI path unclamped. Set a positive value only if a faulty mouse or driver creates large camera jumps.

Debug-only console fallback:

seta cl_mouseAccelDebug 0

cl_mouseAccelDebug 1 writes acceleration samples to logs/mouse.log under the active save path.

For CPI-normalized tuning, set m_cpi to the mouse hardware value and use 360 / sensitivity as an approximate centimeters-per-360 target.

Controller Settings

Controller tuning lives in Settings -> Game Options -> Controller.

SettingBacking cvarDefaultWhat it changes
Controllerin_joystickOnEnables SDL3 gamepad/joystick input and hotplug support.
Stick Layoutin_joystickSouthpawDefaultUse Southpaw to swap movement and look sticks.
Stick Dead Zonein_joystickDeadZone0.18Raises or lowers the center area ignored by analog sticks.
Look Sensitivityin_joystickLookSensitivity0.75Scales controller turn speed.
Look Curvein_joystickLookCurve1.35Higher values damp small aim movements; full-stick turn speed is controlled by Look Sensitivity.
Invert Lookin_joystickInvertLookOffFlips vertical controller look.
Trigger Pressin_joystickTriggerThreshold0.35Controls how far LT/RT must be pressed before they count as buttons.
Rumblein_joystickRumbleOnEnables gameplay rumble when the device supports it.
Rumble Strengthin_joystickRumbleScale1.0Scales rumble intensity from 0.0 to 2.0.

Suggested adjustments:

  • If the view or movement drifts, raise Stick Dead Zone a little.
  • If aiming feels sluggish, raise Look Sensitivity.
  • If small aim corrections are too twitchy, raise Look Curve or Stick Dead Zone.
  • If you cannot reach full turn speed comfortably, lower Look Curve toward 1.0.
  • If triggers fire too easily, raise Trigger Press.
  • If triggers feel unresponsive, lower Trigger Press.

Advanced movement tuning is available from the console:

seta in_joystickMoveCurve 1.0

1.0 is linear movement. Higher values make walking easier near the center of the stick but require more stick travel to reach full movement.

Stock Keyboard and Mouse Binds

The shipped defaults are defined in content/baseoq4/default.cfg.

Core Movement and Combat

ActionDefault bind
Move forward / backW / S, Up Arrow / Down Arrow
Move left / rightA / D
Turn left / rightLeft Arrow / Right Arrow
JumpSpace
CrouchC
AttackMouse1, LeftCtrl, RightCtrl
ZoomMouse2, Mouse3
ReloadR
FlashlightF
Weapon wheelE
Next / previous weaponMWHEELDOWN / MWHEELUP, [ / ]

Common UI and Utility Binds

ActionDefault bind
Console` and ~
MenuEscape
Objectives / scoresTab
ChatT
Team chatY
Quick save / quick loadF5 / F9
ScreenshotF12

Default Controller Buttons

SDL gamepads use stable JOY button names so binds work across common Xbox, PlayStation, and Steam Input layouts.

ButtonDefault action
JOY1 / LBWeapon wheel
JOY2 / RBLast weapon
JOY3 / A or CrossJump
JOY4 / B or CircleCrouch
JOY5 / Y or TriangleFlashlight
JOY6 / X or SquareReload
JOY9 / D-pad UpObjectives or scores
JOY10 / D-pad DownCenter view
JOY11 / D-pad RightPrevious weapon
JOY12 / D-pad LeftNext weapon
JOY13 / Left stick clickRun or walk modifier
JOY14 / Right stick clickCenter view
JOY15 / RTAttack
JOY16 / LTZoom
JOY18 / TouchpadObjectives or scores, when available

Menu behavior:

  • JOY7 and JOY8 open the in-game menu.
  • JOY3 activates the focused menu item.
  • JOY4, JOY7, and JOY8 back out of menus.
  • The D-pad and movement stick move menu focus.
  • Holding the D-pad, movement stick, or shoulder buttons repeats navigation for long lists.
  • Steam Deck packages enable the steamdeck platform profile, which applies openq4_profile_steamdeck.cfg on top of the normal defaults.

Useful Console Commands

CommandWhat it does
bind <key> "<command>"Assigns a command to a key or button.
unbind <key>Removes a bind from one key or button.
unbindallClears all binds. Use with care.
listBindsPrints the current binds.
writeConfig <filename>Writes a config snapshot to a .cfg file.

Examples:

bind mouse2 "_zoom"
bind JOY4 "_movedown"
bind q "_weaponWheel"
unbind JOY18
listBinds
writeConfig my-input-backup.cfg

Most input cvars are archived, so changes made through the menu or with seta persist after exit.

Example Tweaks

CPI-Normalized Mouse With Acceleration Disabled

seta sensitivity 3.5
seta m_smooth 1
seta m_cpi 0
seta m_filter 0
seta cl_mouseAccel 0
seta cl_mouseAccelOffset 0
seta cl_mouseAccelPower 2
seta cl_mouseSensCap 0

Invert Mouse

seta m_pitch -0.022

Higher Mouse Sensitivity With Light Smoothing

seta sensitivity 6.50
seta m_smooth 2

Toggle Crouch and Toggle Zoom

seta in_toggleCrouch 1
seta in_toggleZoom 1

Controller Tuning With a Larger Dead Zone and Weaker Rumble

seta in_joystick 1
seta in_joystickDeadZone 0.24
seta in_joystickLookSensitivity 0.75
seta in_joystickLookCurve 1.35
seta in_joystickTriggerThreshold 0.40
seta in_joystickRumbleScale 0.50

Steam Deck-Style Profile Selection

seta com_platformProfile steamdeck

Troubleshooting

ProblemTry this
Console does not openVerify you are using the stock console binds (` / ~) or rebind a key through the Controls screen.
Controller is not detectedMake sure Controller is enabled, reconnect the device, and check whether Steam Input is remapping it.
Movement or aim driftsRaise Stick Dead Zone until the drift stops.
Aim feels too slowRaise Look Sensitivity.
Aim feels too twitchy near centerRaise Look Curve or Stick Dead Zone.
Triggers activate by accidentRaise Trigger Press.
Triggers feel unresponsiveLower Trigger Press.
Rumble does not workEnable Rumble, set Rumble Strength above 0, confirm the device supports haptics, and reset s_controllerRumble to 1 if it was changed from the console.
Mouse look is backwards verticallyChange Mouse Pitch or Invert Look, depending on the device.
Binding change did not stickRun writeConfig my-input-backup.cfg to confirm your commands are valid, then quit normally so OpenQ4Config.cfg is rewritten.

If you want a final personal override layer that survives menu changes, place your preferred seta and bind commands in autoexec.cfg.

For Steam Deck launcher details and Deck-specific notes, see steam-deck.md.