Q2PRO-X

Q2PRO-X 1.6 Beta 5 by ly — Q2PRO-X 1.6 Beta 5 Controls, Mouse and Zoom Guide

The complete guide in HTML. The original DOCX is available from its documentation card.

Q2PRO-X 1.6 Beta 5 by ly

Q2PRO-X 1.6 Beta 5 Controls, Mouse and Zoom Guide

Q2PRO-X document image

Project author: ly

Key bindings, mouse setup, zoom and Russian text input

English edition • Q2PRO-X 1.6 Beta 5 by ly • 2026-10-10


Contents

The entries are links: click one to jump to that section.

Crosshair scale clarification in beta 2

Controls, mouse and zoom

1. Where to find the menu

The main controls page

Mouse and zoom

2. Main new concept: mouse behavior mode

3. Base mouse cvars

4. m_autosens

5. Zoom FOV

6. Zoom sensitivity

Auto

Manual

7. Zoom time

8. Walk while zoomed

9. Zoom crosshair

10. Movement feel

11. Binds

12. Importing an r1q2 cfg: practical order

13. Common problems

Mouse too fast after import

Vertical axis inverted

Zoom sensitivity feels wrong

Bind rows show ???

14. Good baseline

15. Movement timing and waiting inside aliases

16. Movement view bob

17. Russian input and translation

18. Key bindings


Crosshair scale clarification in beta 2

The actual maximum for ch_scale and cl_zoom_ch_scale is 10. Console help, CVar Browser and menu hints agree in both languages; the previous maximum-8 hint was incorrect. The menu step remains 0.1.


Controls, mouse and zoom

This guide helps tune the controls in Q2PRO-X, especially when importing an older Q2PRO, R1Q2 or mixed config.


1. Where to find the menu

What you are settingMenu path
Controls and weapon viewMain menu → Options → Controls & Weapon View
Input setupMain menu → Options → Controls & Weapon View → Input Setup
Key bindingsMain menu → Options → Controls & Weapon View → Key Bindings
Weapon bindingsMain menu → Options → Controls & Weapon View → Weapon Bindings
Weapon view and handMain menu → Options → Controls & Weapon View → Weapon View & Hand
Movement basicsMain menu → Options → Controls & Weapon View → Movement Basics
Mouse and zoomMain menu → Options → Controls & Weapon View → Q2PRO-X / Mouse & Zoom
Movement and view bobMain menu → Online Play Setup → Movement
Weapon predictionMain menu → Online Play Setup → Weapon Predicts

The main controls page

Controls & Weapon View

TypeSectionRowVariable or targetWhat it does
SectionBindsBinds
NavigationBindsInput setup...g_inputMouse sensitivity, auto-sens, mouse filter, free look and always-run toggles.
NavigationBindsKey bindings...g_keysBind keys for movement, attack, weapon switch, inventory, chat and scoreboard.
NavigationBindsWeapon bindings...g_weaponsBind a key to select each weapon directly (blaster … BFG10K, grenades).
SectionView & MovementView & Movement
NavigationView & MovementWeapon view & hand...g_weapon_viewHand, view-weapon visibility/opacity/FOV and X/Y/Z position offsets.
NavigationView & MovementMovement basics...g_movement_basicsMouse feel, movement/predict modes, step smoothing and fixed-move timing.
NavigationView & MovementMouse & zoom...q2prox_mouseMouse & zoom: sensitivity, mouse feel, FOV, and hold-to-zoom settings.

Mouse and zoom

Q2PRO-X / Mouse & Zoom

TypeSectionRowVariable or targetWhat it does
SectionField of viewField of view
SliderField of viewField of viewfovfov: horizontal field of view (degrees). 90 = stock Q2 default, 100..110 popular for wide monitors. Server-visible userinfo cvar — affects what the server reports as your FOV. Applies immediately.
SliderField of viewMovement view bobcl_viewbobHow much of the walking movement stays in your view: 1.00 = normal, 0.00 = neither the up-and-down bounce nor the tilt when running and strafing. Works on any server, including someone else's. A server that sends no movement effect is left alone. Applies immediately.
SectionMouseMouse
ListMouseMouse behaviorcl_mouse_behavior_modeOverall mouse feel — Q2PRO default or r1q2 compatibility. Applies immediately. [q2pro / r1q2]
SliderMouseSensitivitysensitivitysensitivity: base mouse look sensitivity. Higher = faster turning. Applies immediately.
SliderMousePitch gainm_pitchm_pitch: vertical look gain; a negative value inverts the Y axis. Applies immediately.
SliderMouseYaw gainm_yawm_yaw: horizontal look gain (turn amount per mouse movement). Applies immediately.
SliderMouseMouse accelm_accelm_accel: mouse acceleration — faster flicks turn more. No effect in r1q2 mode. Applies immediately.
ToggleMouseMouse filterm_filterm_filter: smooth the mouse by averaging with the previous frame (less jitter, slight lag). Applies immediately.
SliderMouseBaseline auto-sens FOVm_autosensm_autosens: scale non-zoom sensitivity to FOV (Q2PRO mouse path). 0=off; 91..179 set the base FOV. Separate from +zoom. Applies immediately.
ToggleMouseFreelookfreelookfreelook: mouse always controls looking, no +mlook hold needed. Applies immediately.
SectionZoomZoom
SliderZoomZoom FOVcl_zoom_fovHorizontal FOV while +zoom is held. Never exceeds your base FOV — zoom-in only. Applies immediately.
ListZoomZoom sens modecl_zoom_sensitivity_modeAuto scales sensitivity by FOV ratio (geometrically correct); Manual uses the cvar below. Applies immediately. [auto / manual]
SliderZoomZoom sensitivitycl_zoom_sensitivitySensitivity at full zoom (same units as sensitivity). Manual mode only. Applies immediately.
SliderZoomZoom timecl_zoom_timeZoom in/out duration (sec); 0 = instant. FOV and sensitivity share one transition so they never desync. Applies immediately.
ToggleZoomWalk while zoomedcl_zoom_walkAlso hold +speed while +zoom is held (walk while zoomed). Off by default. Applies immediately.
SectionZoom crosshairZoom crosshair
ToggleZoom crosshairZoom crosshaircl_zoom_crosshair_enableSwap to the zoom crosshair below while zoomed; off keeps your normal crosshair. Applies immediately.
ListZoom crosshairZoom stylecl_zoom_crosshairCrosshair shape while zoomed (needs Zoom crosshair on). Applies immediately. [none / cross / dot / angle]
SliderZoom crosshairZoom scalecl_zoom_ch_scaleSize of the zoom crosshair (0.25..10.0). Applies immediately.
ToggleZoom crosshairZoom color by healthcl_zoom_ch_healthTint the zoom crosshair by your current health (overrides the RGB below). Applies immediately.
SliderZoom crosshairZoom redcl_zoom_ch_redZoom crosshair red level (ignored if color-by-health is on). Applies immediately.
SliderZoom crosshairZoom greencl_zoom_ch_greenZoom crosshair green level (ignored if color-by-health is on). Applies immediately.
SliderZoom crosshairZoom bluecl_zoom_ch_blueZoom crosshair blue level (ignored if color-by-health is on). Applies immediately.
SliderZoom crosshairZoom alphacl_zoom_ch_alphaOpacity of the zoom crosshair (1 = solid). Applies immediately.
SectionBindBind
KeyBindHold: zoom+zoomHold to zoom in to cl_zoom_fov; release to return to your base FOV.


2. Main new concept: mouse behavior mode

cl_mouse_behavior_mode selects the overall mouse semantics:

q2pro - default Q2PRO-X behavior;
r1q2 - compatibility behavior for older r1q2 cfg files.

This is not just a cosmetic toggle. It affects how older variables are

interpreted and how the mouse feels after importing cfg.

If you start clean with Q2PRO-X:

keep q2pro.

If you import an old r1q2 cfg:

try r1q2;
check sensitivity, m_pitch, m_yaw;
tune zoom separately.


3. Base mouse cvars

sensitivity - main multiplier;
m_pitch - vertical gain, negative value inverts Y;
m_yaw - horizontal gain;
m_accel - Q2PRO-X mouse acceleration, no effect in r1q2 mode;
m_filter - smooth delta by averaging with the previous frame;
m_autosens - non-zoom FOV-proportional scaling;
freelook - always-on mouse look.

Recommended import order:

1. Choose cl_mouse_behavior_mode.

1. Tune sensitivity.

1. Check m_pitch / m_yaw.

1. Only then touch acceleration, autosens, and zoom.


4. m_autosens

m_autosens is not zoom sensitivity. It is non-zoom FOV-based scaling for

normal view movement.

Values:

0 - off;
91..179 - base FOV for scaling;
any other non-zero value - base FOV 90.

If you do not know why you need it, keep it 0. Most players should tune zoom

through the dedicated cl_zoom_* cvars instead.


5. Zoom FOV

Main cvar:

cl_zoom_fov.

It sets horizontal FOV while +zoom is held. The value is clamped so it never

exceeds the live base FOV: zoom should zoom in, not out.

Bind:

+zoom - hold zoom;
-zoom - release zoom.

The menu row Hold: zoom lets you bind the key.


6. Zoom sensitivity

Zoom sensitivity has two modes:

cl_zoom_sensitivity_mode auto;
cl_zoom_sensitivity_mode manual.

Auto

Auto uses a tangent-space FOV ratio. This is the geometrically correct model:

as FOV narrows, sensitivity scales with the changed view angle.

This is the recommended default for most players.

Manual

Manual uses:

cl_zoom_sensitivity.

This is an absolute sensitivity value in the same units as sensitivity. Use

manual only when you want a specific familiar number.


7. Zoom time

cl_zoom_time sets transition duration in seconds.

0 - instant zoom;
0.05..0.20 - fast but visible transition;
higher values - cinematic feel, usually not for competitive play.

FOV and sensitivity share the same transition so they do not desync.


8. Walk while zoomed

cl_zoom_walk holds +speed together with +zoom.

Use it if you want to slow down automatically while zoomed. It coexists with a

normal +speed bind.

Default is off.


9. Zoom crosshair

Separate zoom crosshair:

cl_zoom_crosshair_enable;
cl_zoom_crosshair;
cl_zoom_ch_scale;
cl_zoom_ch_health;
cl_zoom_ch_red;
cl_zoom_ch_green;
cl_zoom_ch_blue;
cl_zoom_ch_alpha.

If the master is off, the normal crosshair remains visible while zoomed.

Practical setup:

cl_zoom_crosshair_enable 1;
style dot or cross;
alpha 0.7..1.0;
color by health off if you want a stable color.


10. Movement feel

Related cvars:

cl_movement_feel_mode;
cl_predict_move_mode;
cl_step_smoothing_mode;
cl_fixedmove;
cl_predict_player.

If you want an r1q2-like feel, check:

mouse behavior = r1q2;
movement feel = r1q2-like;
step smoothing r1q2 profile;
fixedmove to taste.

Command:

movementfeel_info.

It prints the resolved movement feel state and helps compare cfg profiles.


11. Binds

Useful actions:

+zoom;
+voiceptt;
voice_mic_toggle;
demo_pause_toggle;
+demo_seek_back;
+demo_seek_forward;
serverbrowser_toggle;
cvar_browser_toggle;
demo_browser_toggle;
demo_player_toggle.

Q2PRO-X binds participate in the scoped config system. Demo-visual defaults

should not reset binds.


12. Importing an r1q2 cfg: practical order

1. Start Q2PRO-X 1.6 Beta 5 without the old cfg and confirm it runs.

1. Copy only the needed binds and mouse values if possible, not the whole old

cfg.

1. Set cl_mouse_behavior_mode r1q2.

1. Check sensitivity, m_pitch, m_yaw.

1. Disable m_accel if the old cfg did not use acceleration.

1. Tune zoom through cl_zoom_*, not old alias hacks.

1. Save with q2prox_cfg_save_global.


13. Common problems

Mouse too fast after import

check cl_mouse_behavior_mode;
check whether m_autosens is enabled;
check sensitivity;
check m_yaw.

Vertical axis inverted

negative m_pitch = invert Y;
use a positive value such as 0.022.

Zoom sensitivity feels wrong

set cl_zoom_sensitivity_mode auto;
temporarily disable m_autosens;
check cl_zoom_fov;
if you want an old manual feel, use manual mode and

cl_zoom_sensitivity.

Bind rows show ???

??? on a bind row means no key is assigned to that action. It is not a

command error. Assign a key in the menu or through bind.


14. Good baseline

For clean Q2PRO-X:

cl_mouse_behavior_mode q2pro;
tune sensitivity manually;
m_pitch 0.022;
m_yaw 0.022;
m_accel 0;
m_filter 0;
m_autosens 0;
freelook 1;
cl_zoom_sensitivity_mode auto;
cl_zoom_time 0;
cl_zoom_walk 0.



15. Movement timing and waiting inside aliases

VariableAccepted valuesDescription
cl_fixedmove0=native command clock / 1=fixed 10 ms movement command tickNormalize the movement command clock to 10 ms ticks so input command timing is independent of rendering frame rate. Reduces movement-feel variance on high-fps and variable-fps setups; recommended for consistent strafing.
cl_fixedmove_wait_mode0=legacy outer-frame wait / 1=fixedmove-aware 10 ms wait for cmd_buffer (default)Make the gameplay command-buffer wait advance on each 10 ms fixedmove tick instead of once per outer render frame, so movement aliases like double-jump (alias +2j "+moveup; wait; wait; wait; -moveup; wait; wait; wait; +moveup") keep their +moveup / -moveup edges on the 10 ms movement clock regardless of FPS. Default 1 — recommended together with cl_fixedmove (which is already the Q2PRO-X default movement clock). Only takes effect when cl_fixedmove is 1, cl_movement_feel_mode is NOT 1, and the client is in active gameplay; otherwise behaves like the legacy outer-frame wait. Set to 0 only for legacy outer-frame wait timing.

The fixedmove-aware wait mode is on by default. It makes wait inside aliases closer to the fixed movement ticks and improves double-jump aliases at low frame rates. If the older behaviour is needed, the setting is disabled next to the main fixed-movement switch.

The team overlay bind works again in runtime mod-detection scenarios when the mod supports that overlay. The old bad-FOV disconnect is closed: the client protects a transient or zero field of view during connect and map load.


16. Movement view bob

VariableAccepted valuesDescription
cl_viewbob0..1 (default 1)How much your view bounces up and down while you walk. 1 = normal, 0 = no bounce at all, values in between are weaker. Works on ANY server, including someone else's, because it takes the bounce out on your own machine. Not a cheat: it removes only what your own footsteps produce, and it reveals nothing. Measured on a remote server, an incoming bounce of 1.75 units comes out at 0.0005. It covers the whole movement effect: the up-and-down bounce in viewoffset, and the tilt that comes with running and strafing, which arrives separately inside kick_angles. Weapon recoil, damage kicks and landing kicks are never touched - those tell you something. On a server that sends no movement effect this setting does nothing, and says so in cl_viewbob_info. The diagnostic override cl_viewsway can force the tilt half on its own; it follows this setting by default.

This setting weakens or completely removes the camera movement caused by walking: the vertical step bounce and the tilt when running and strafing. It works on every server, including someone else's, and needs no support from it. A server that sends no movement effect is left alone.

Weapon recoil, the kick from damage and landings are preserved deliberately: they are not the same thing as walking bob.

The cl_viewbob_info command shows the actually measured vertical and tilt channels.

The setting lives here: Main menu → Online Play Setup → Movement

Movement

TypeSectionRowVariable or targetWhat it does
SectionMovement modesMovement modes
ListMovement modesMouse behaviorcl_mouse_behavior_modeOverall mouse feel. Q2PRO = default. R1q2 = compatibility (backend from m_directinput: 0 legacy, 1/2 DI-like relative). [q2pro / r1q2]
ListMovement modesMovement feelcl_movement_feel_modeMovement feel. Like r1q2 = classic standstill-start and jump; Q2PRO = modern feel. [q2pro / r1q2-like]
ListMovement modesClient predictcl_predict_move_modeClient-prediction backend: Modern (new Q2PRO/Q2PRO-X) or Legacy (q2pro-m / q2pro r1826). [modern (new q2pro/Q2PRO-X) / legacy (q2pro-m/q2pro r1826)]
ListMovement modesStep smoothingcl_step_smoothing_modeLocal stair-step smoothing feel: Q2PRO or one of three R1q2 variants. [q2pro / r1q2-1 / r1q2-2 / r1q2-3]
SectionFixed moveFixed move
ToggleFixed moveFixed movecl_fixedmoveNormalize movement commands to a fixed 10 ms clock.
ToggleFixed moveFixedmove debugcl_fixedmove_debugPrint the finalized fixedmove command timing to console.
ToggleFixed moveFixedmove-aware waitcl_fixedmove_wait_modeGameplay wait aliases advance on fixedmove's 10 ms movement ticks instead of render frames. Recommended with fixedmove; turn off only for legacy script timing. Default ON.
ToggleFixed moveFixedmove wait debugcl_fixedmove_wait_debugPer-sub-cmd diagnostics for the fixedmove-aware wait path (wait count, queue size, drain flag, upmove). Level 1 = only interesting sub-cmds, 2 = verbose.
SectionPlayer predictPlayer predict
ListPlayer predictPredict playercl_predict_playerPlayer prediction: Off, On (local jump/fall) or Debug. When cl_predict_ping_min_ms > 0 it is also gated by the shared adaptive ping gate. [off / on / debug]
SectionServiceService
NavigationServiceMovement feel info...movementfeel_infoPrint the resolved movement-feel state and the backend applied.
SectionMovement cameraMovement camera
SliderMovement cameraMovement view bobcl_viewbobHow much of the walking movement stays in your view: 1.00 = normal, 0.00 = neither the up-and-down bounce nor the tilt when running and strafing. Works on any server, including someone else's. A server that sends no movement effect is left alone. Applies immediately.


17. Russian input and translation

Q2PRO-X solves two separate input problems:

1. Safe Russian input and transliteration for the Quake II console and chat.

2. A separate translation command that converts Russian text into English before it is sent to chat.

The interface language is set by one shared setting:

VariableAccepted valuesDescription
cl_console_utf8_ru-1=auto (default — on for Russian Windows) / 0=off / English / 1=on / RussianQ2PRO-X Russian display-localization baseline (tri-state). -1 (auto, default) turns ON automatically when Windows UI language is Russian and OFF otherwise. 0 forces English / legacy behavior regardless of OS locale. 1 forces Russian display. When effectively on: the console and menu draw paths dispatch per-byte — ASCII keeps rendering through stock conchars 1:1 (classic look preserved) while UTF-8 Cyrillic / CP1251-mappable codepoints are routed through the supplementary q2prox_console_font atlas, so Russian console output and Russian device / status text become readable without sacrificing ASCII-log readability; Q2PRO-X menu bottom status/help lines prefer Russian translations when present; console inline /cvarname help prefers Russian desc_ru / values_ru metadata when the entry carries a translation. Display-only — this does NOT enable Russian console input, Unicode editing, or any command parser change. Invalid high-byte legacy content is not force-decoded.

The complete list of quick commands and their Russian aliases is in the cvar and command reference.


18. Key bindings

Key Bindings

TypeSectionRowVariable or targetWhat it does
SectionCombatCombat
KeyCombatAttack+attack+attack: fire the currently selected weapon.
KeyCombatNext weaponweapnextweapnext: switch to the next weapon.
KeyCombatPrevious weaponweapprevweapprev: switch to the previous weapon.
SectionMovementMovement
KeyMovementWalk forward+forward+forward: move forward.
KeyMovementBackpedal+back+back: move backward.
KeyMovementRun+speed+speed: hold to run (or to walk if Always run is on).
KeyMovementStep left+moveleft+moveleft: strafe left (sidestep).
KeyMovementStep right+moveright+moveright: strafe right (sidestep).
KeyMovementUp / jump+moveup+moveup: jump / swim up.
KeyMovementDown / crouch+movedown+movedown: crouch / swim down.
SectionInventoryInventory
KeyInventoryInventoryinveninven: open or close the inventory.
KeyInventoryUse iteminvuseinvuse: use the highlighted inventory item.
KeyInventoryDrop iteminvdropinvdrop: drop the highlighted inventory item.
KeyInventoryPrev iteminvprevinvprev: highlight the previous inventory item.
KeyInventoryNext iteminvnextinvnext: highlight the next inventory item.
SectionInterfaceInterface
KeyInterfaceHelp computerhelphelp: open the help computer / objectives screen.
KeyInterfacePause gamepausepause: pause the game (single player).
KeyInterfaceScoreboardscorescore: show the scoreboard.
KeyInterfaceChatmessagemodemessagemode: open the chat prompt to type a message.
NavigationInterfaceLegacy keys...g_legacykeysLegacy binds: keyboard turn/strafe, look up/down, center view, mouse/keyboard look.

Separate pages own the weapon bindings and the weapon view:

Weapon Bindings

TypeSectionRowVariable or targetWhat it does
SectionGunsGuns
KeyGunsBlasteruse BlasterSelect the Blaster (use Blaster).
KeyGunsShotgunuse ShotgunSelect the Shotgun (use Shotgun).
KeyGunsSuper shotgunuse Super ShotgunSelect the Super Shotgun (use Super Shotgun).
KeyGunsMachinegunuse MachinegunSelect the Machinegun (use Machinegun).
KeyGunsChaingunuse ChaingunSelect the Chaingun (use Chaingun).
SectionExplosiveExplosive
KeyExplosiveGrenade launcheruse Grenade LauncherSelect the Grenade Launcher (use Grenade Launcher).
KeyExplosiveRocket launcheruse Rocket LauncherSelect the Rocket Launcher (use Rocket Launcher).
SectionEnergyEnergy
KeyEnergyHyperblasteruse HyperBlasterSelect the HyperBlaster (use HyperBlaster).
KeyEnergyRailgunuse RailgunSelect the Railgun (use Railgun).
KeyEnergyBfg10kuse BFG10KSelect the BFG10K (use BFG10K).
SectionGrenadesGrenades
KeyGrenadesGrenadesuse GrenadesSelect hand grenades (use Grenades).

Weapon View & Hand

TypeSectionRowVariable or targetWhat it does
ListHandhandhand: which side you hold weapons — right/left/center. Server-visible; affects the projectile spawn side. Applies immediately. [right / left / center]
ListView weaponcl_guncl_gun: show your first-person weapon model — off, normal, or centered. Applies immediately. [off / on / centered]
SliderView weapon alphacl_gunalphacl_gunalpha: opacity of your view weapon (1 = solid, lower = see-through). Applies immediately.
SliderView weapon FOVcl_gunfovcl_gunfov: FOV used to draw the view weapon (90 = default; higher pushes it back). Applies immediately.
SliderView weapon Xcl_gun_xMove the view weapon left/right. Applies immediately.
SliderView weapon Ycl_gun_yMove the view weapon forward/back. Applies immediately.
SliderView weapon Zcl_gun_zMove the view weapon up/down. Applies immediately.