Q2PRO-X 1.6 Final by ly
Mouse and controls
Project author: ly
Input modes, sensitivity, zoom and system shortcuts.
English edition • Q2PRO-X 1.6 Final by ly • November 7, 2026
Contents
The entries are links: click one to jump to that section.
12. Importing an r1q2 cfg: practical order
15. Movement timing and waiting inside aliases
17. Russian input and translation
Mouse input and fullscreen cursor
Controls, mouse and zoom
This guide helps tune the controls in Q2PRO-X, especially when importing an older Q2PRO, R1Q2 or mixed config.
Crosshair size
ch_scale and cl_zoom_ch_scale allow crosshair scales up to 10. The menu sliders change them in steps of 0.1.
1. Where to find the menu
| What you are setting | Menu path |
|---|---|
| Controls and weapon view | Main menu → Options → Controls & Weapon View |
| Input setup | Main menu → Options → Controls & Weapon View → Input Setup |
| Key bindings | Main menu → Options → Controls & Weapon View → Key Bindings |
| Weapon bindings | Main menu → Options → Controls & Weapon View → Weapon Bindings |
| Weapon view and hand | Main menu → Options → Controls & Weapon View → Weapon View & Hand |
| Movement basics | Main menu → Options → Controls & Weapon View → Movement Basics |
| Mouse and zoom | Main menu → Options → Controls & Weapon View → Q2PRO-X / Mouse & Zoom |
| Movement and view bob | Main menu → Online Play Setup → Movement |
| Weapon prediction | Main menu → Online Play Setup → Weapon Predicts |
The main controls page
Controls & Weapon View
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Binds | Binds | ||
| Navigation | Binds | Input setup... | g_input | Mouse sensitivity, auto-sens, mouse filter, free look and always-run toggles. |
| Navigation | Binds | Key bindings... | g_keys | Bind keys for movement, attack, weapon switch, inventory, chat and scoreboard. |
| Navigation | Binds | Weapon bindings... | g_weapons | Bind a key to select each weapon directly (blaster … BFG10K, grenades). |
| Section | View & Movement | View & Movement | ||
| Navigation | View & Movement | Weapon view & hand... | g_weapon_view | Hand, view-weapon visibility/opacity/FOV and X/Y/Z position offsets. |
| Navigation | View & Movement | Movement basics... | g_movement_basics | Mouse feel, movement/predict modes, step smoothing and fixed-move timing. |
| Navigation | View & Movement | Mouse & zoom... | q2prox_mouse | Mouse & zoom: sensitivity, mouse feel, FOV, and hold-to-zoom settings. |
Mouse and zoom
Q2PRO-X / Mouse & Zoom
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Field of view | Field of view | ||
| Slider | Field of view | Field of view | fov | fov: 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. |
| Slider | Field of view | Movement view bob | cl_viewbob | How 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. |
| Section | Mouse | Mouse | ||
| List | Mouse | Mouse behavior | cl_mouse_behavior_mode | Overall mouse feel. Q2PRO: Raw Input with m_accel and m_autosens. R1q2: classic R1Q2 turning (sensitivity only); its input source is the next row. Applies immediately. [q2pro / r1q2] |
| List | Mouse | R1q2 mouse source | m_directinput | m_directinput: mouse input source for R1q2 behavior only. Windows cursor = R1Q2 legacy path: reads the pointer position, so Windows pointer speed and acceleration apply. Raw Input reads the mouse directly; 1 and 2 are the same source (there is no DirectInput). Applies immediately. [Windows cursor (legacy) / Raw Input / Raw Input (2 = same as 1)] |
| Toggle | Mouse | No Windows accel in play | m_fixaccel | m_fixaccel: only for R1q2 with the Windows cursor source. Yes: Windows pointer acceleration is off while you play and given back in menus, on Alt+Tab and on exit. No: Windows settings stay as they are (if acceleration is already off, both feel the same). Pointer speed is never changed. Applies immediately. |
| Slider | Mouse | Sensitivity | sensitivity | sensitivity: base mouse look sensitivity. Higher = faster turning. Applies immediately. |
| Slider | Mouse | Pitch gain | m_pitch | m_pitch: vertical look gain; a negative value inverts the Y axis. Applies immediately. |
| Slider | Mouse | Yaw gain | m_yaw | m_yaw: horizontal look gain (turn amount per mouse movement). Applies immediately. |
| Slider | Mouse | Mouse accel | m_accel | m_accel: mouse acceleration — faster flicks turn more. No effect in r1q2 mode. Applies immediately. |
| Toggle | Mouse | Mouse filter | m_filter | m_filter: smooth the mouse by averaging with the previous frame (less jitter, slight lag). Applies immediately. |
| Slider | Mouse | Baseline auto-sens FOV | m_autosens | m_autosens: scale non-zoom sensitivity to FOV (Q2PRO mouse path). 0=off; 91..179 set the base FOV. Separate from +zoom. Applies immediately. |
| Toggle | Mouse | Freelook | freelook | freelook: mouse always controls looking, no +mlook hold needed. Applies immediately. |
| Navigation | Mouse | Mouse report... | mouse_info | Print the real mouse state to the console: selected and active source, focus and grab, cursor clip, window centre, Windows acceleration and pointer speed, what m_fixaccel did, failure counters. Changes nothing. |
| Toggle | Mouse | Mouse log | cl_mouse_debug | cl_mouse_debug: log mouse grab/release, source changes, Windows acceleration changes and failed Windows calls to the console, at most one line per second per kind. This session only. |
| Section | Zoom | Zoom | ||
| Slider | Zoom | Zoom FOV | cl_zoom_fov | Horizontal FOV while +zoom is held. Never exceeds your base FOV — zoom-in only. Applies immediately. |
| List | Zoom | Zoom sens mode | cl_zoom_sensitivity_mode | Auto scales sensitivity by FOV ratio (geometrically correct); Manual uses the cvar below. Applies immediately. [auto / manual] |
| Slider | Zoom | Zoom sensitivity | cl_zoom_sensitivity | Sensitivity at full zoom (same units as sensitivity). Manual mode only. Applies immediately. |
| Slider | Zoom | Zoom time | cl_zoom_time | Zoom in/out duration (sec); 0 = instant. FOV and sensitivity share one transition so they never desync. Applies immediately. |
| Toggle | Zoom | Walk while zoomed | cl_zoom_walk | Also hold +speed while +zoom is held (walk while zoomed). Off by default. Applies immediately. |
| Section | Zoom crosshair | Zoom crosshair | ||
| Toggle | Zoom crosshair | Zoom crosshair | cl_zoom_crosshair_enable | Swap to the zoom crosshair below while zoomed; off keeps your normal crosshair. Applies immediately. |
| List | Zoom crosshair | Zoom style | cl_zoom_crosshair | Crosshair shape while zoomed (needs Zoom crosshair on). Applies immediately. [none / cross / dot / angle] |
| Slider | Zoom crosshair | Zoom scale | cl_zoom_ch_scale | Size of the zoom crosshair (0.25..10.0). Applies immediately. |
| Toggle | Zoom crosshair | Zoom color by health | cl_zoom_ch_health | Tint the zoom crosshair by your current health (overrides the RGB below). Applies immediately. |
| Slider | Zoom crosshair | Zoom red | cl_zoom_ch_red | Zoom crosshair red level (ignored if color-by-health is on). Applies immediately. |
| Slider | Zoom crosshair | Zoom green | cl_zoom_ch_green | Zoom crosshair green level (ignored if color-by-health is on). Applies immediately. |
| Slider | Zoom crosshair | Zoom blue | cl_zoom_ch_blue | Zoom crosshair blue level (ignored if color-by-health is on). Applies immediately. |
| Slider | Zoom crosshair | Zoom alpha | cl_zoom_ch_alpha | Opacity of the zoom crosshair (1 = solid). Applies immediately. |
| Section | Bind | Bind | ||
| Key | Bind | Hold: zoom | +zoom | Hold to zoom in to cl_zoom_fov; release to return to your base FOV. |
2. Mouse behavior mode
cl_mouse_behavior_mode selects the overall mouse semantics:
The selected mode determines how older mouse variables are interpreted, which can change the feel of an imported configuration.
If you start clean with Q2PRO-X:
If you import an old r1q2 cfg:
3. Base mouse cvars
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:
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:
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:
The menu row Hold: zoom lets you bind the key.
6. Zoom sensitivity
Zoom sensitivity has two modes:
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:
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.
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:
If the master is off, the normal crosshair remains visible while zoomed.
Practical setup:
10. Movement feel
Related cvars:
If you want an r1q2-like feel, check:
Command:
It prints the resolved movement feel state and helps compare cfg profiles.
11. Binds
Useful actions:
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 Final by ly 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
Vertical axis inverted
Zoom sensitivity feels wrong
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:
15. Movement timing and waiting inside aliases
| Variable | Accepted values | Description |
|---|---|---|
| cl_fixedmove | 0=native command clock / 1=fixed 10 ms movement command tick | Normalize 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_mode | 0=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 binding is available when the active mod supports it. Temporary field-of-view values during connection and map loading do not need manual adjustment.
16. Movement view bob
| Variable | Accepted values | Description |
|---|---|---|
| cl_viewbob | 0..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
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Movement modes | Movement modes | ||
| List | Movement modes | Mouse behavior | cl_mouse_behavior_mode | Overall mouse feel. Q2PRO = default. R1q2 = compatibility; its mouse source (Windows cursor or Raw Input) is on the Mouse & Zoom page. [q2pro / r1q2] |
| List | Movement modes | Movement feel | cl_movement_feel_mode | Movement feel. Like r1q2 = classic standstill-start and jump; Q2PRO = modern feel. [q2pro / r1q2-like] |
| List | Movement modes | Client predict | cl_predict_move_mode | Client-prediction backend: Modern (new Q2PRO/Q2PRO-X) or Legacy (q2pro-m / q2pro r1826). [modern (new q2pro/Q2PRO-X) / legacy (q2pro-m/q2pro r1826)] |
| List | Movement modes | Step smoothing | cl_step_smoothing_mode | Local stair-step smoothing feel: Q2PRO or one of three R1q2 variants. [q2pro / r1q2-1 / r1q2-2 / r1q2-3] |
| Section | Fixed move | Fixed move | ||
| Toggle | Fixed move | Fixed move | cl_fixedmove | Normalize movement commands to a fixed 10 ms clock. |
| Toggle | Fixed move | Fixedmove debug | cl_fixedmove_debug | Print the finalized fixedmove command timing to console. |
| Toggle | Fixed move | Fixedmove-aware wait | cl_fixedmove_wait_mode | Gameplay 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. |
| Toggle | Fixed move | Fixedmove wait debug | cl_fixedmove_wait_debug | Per-sub-cmd diagnostics for the fixedmove-aware wait path (wait count, queue size, drain flag, upmove). Level 1 = only interesting sub-cmds, 2 = verbose. |
| Section | Player predict | Player predict | ||
| List | Player predict | Predict player | cl_predict_player | Player 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] |
| Section | Service | Service | ||
| Navigation | Service | Movement feel info... | movementfeel_info | Print the resolved movement-feel state and the backend applied. |
| Section | Movement camera | Movement camera | ||
| Slider | Movement camera | Movement view bob | cl_viewbob | How 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:
| Variable | Accepted values | Description |
|---|---|---|
| cl_console_utf8_ru | -1=Auto (default) / 0=English / 1=Russian | Interface language. -1 (Auto, default) selects Russian when the Windows display language is Russian, otherwise English. 0 explicitly selects English; 1 explicitly selects Russian. Changes translated interface text and console help immediately. Game menus follow this setting unless cl_menu_utf8_ru overrides it. Browser windows may also have their own language settings. Does not change keyboard layout or console input. |
The complete list of quick commands and their Russian aliases is in the cvar and command reference.
18. Key bindings
Key Bindings
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Combat | Combat | ||
| Key | Combat | Attack | +attack | +attack: fire the currently selected weapon. |
| Key | Combat | Next weapon | weapnext | weapnext: switch to the next weapon. |
| Key | Combat | Previous weapon | weapprev | weapprev: switch to the previous weapon. |
| Section | Movement | Movement | ||
| Key | Movement | Walk forward | +forward | +forward: move forward. |
| Key | Movement | Backpedal | +back | +back: move backward. |
| Key | Movement | Run | +speed | +speed: hold to run (or to walk if Always run is on). |
| Key | Movement | Step left | +moveleft | +moveleft: strafe left (sidestep). |
| Key | Movement | Step right | +moveright | +moveright: strafe right (sidestep). |
| Key | Movement | Up / jump | +moveup | +moveup: jump / swim up. |
| Key | Movement | Down / crouch | +movedown | +movedown: crouch / swim down. |
| Section | Inventory | Inventory | ||
| Key | Inventory | Inventory | inven | inven: open or close the inventory. |
| Key | Inventory | Use item | invuse | invuse: use the highlighted inventory item. |
| Key | Inventory | Drop item | invdrop | invdrop: drop the highlighted inventory item. |
| Key | Inventory | Prev item | invprev | invprev: highlight the previous inventory item. |
| Key | Inventory | Next item | invnext | invnext: highlight the next inventory item. |
| Section | Interface | Interface | ||
| Key | Interface | Help computer | help | help: open the help computer / objectives screen. |
| Key | Interface | Pause game | pause | pause: pause the game (single player). |
| Key | Interface | Scoreboard | score | score: show the scoreboard. |
| Key | Interface | Chat | messagemode | messagemode: open the chat prompt to type a message. |
| Navigation | Interface | Legacy keys... | g_legacykeys | Legacy binds: keyboard turn/strafe, look up/down, center view, mouse/keyboard look. |
Separate pages own the weapon bindings and the weapon view:
Weapon Bindings
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Guns | Guns | ||
| Key | Guns | Blaster | use Blaster | Select the Blaster (use Blaster). |
| Key | Guns | Shotgun | use Shotgun | Select the Shotgun (use Shotgun). |
| Key | Guns | Super shotgun | use Super Shotgun | Select the Super Shotgun (use Super Shotgun). |
| Key | Guns | Machinegun | use Machinegun | Select the Machinegun (use Machinegun). |
| Key | Guns | Chaingun | use Chaingun | Select the Chaingun (use Chaingun). |
| Section | Explosive | Explosive | ||
| Key | Explosive | Grenade launcher | use Grenade Launcher | Select the Grenade Launcher (use Grenade Launcher). |
| Key | Explosive | Rocket launcher | use Rocket Launcher | Select the Rocket Launcher (use Rocket Launcher). |
| Section | Energy | Energy | ||
| Key | Energy | Hyperblaster | use HyperBlaster | Select the HyperBlaster (use HyperBlaster). |
| Key | Energy | Railgun | use Railgun | Select the Railgun (use Railgun). |
| Key | Energy | Bfg10k | use BFG10K | Select the BFG10K (use BFG10K). |
| Section | Grenades | Grenades | ||
| Key | Grenades | Grenades | use Grenades | Select hand grenades (use Grenades). |
Weapon View & Hand
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| List | Hand | hand | hand: which side you hold weapons — right/left/center. Server-visible; affects the projectile spawn side. Applies immediately. [right / left / center] | |
| List | View weapon | cl_gun | cl_gun: show your first-person weapon model — off, normal, or centered. Applies immediately. [off / on / centered] | |
| Slider | View weapon alpha | cl_gunalpha | cl_gunalpha: opacity of your view weapon (1 = solid, lower = see-through). Applies immediately. | |
| Slider | View weapon FOV | cl_gunfov | cl_gunfov: FOV used to draw the view weapon (90 = default; higher pushes it back). Applies immediately. | |
| Slider | View weapon X | cl_gun_x | Move the view weapon left/right. Applies immediately. | |
| Slider | View weapon Y | cl_gun_y | Move the view weapon forward/back. Applies immediately. | |
| Slider | View weapon Z | cl_gun_z | Move the view weapon up/down. Applies immediately. |
Translator chord
Translator Settings capture a complete chord with Ctrl, Alt or Shift. Press Enter on the row, hold modifiers and press the main key. Backspace clears it. The factory value is empty; the chord works only with the console open and toggles the window both ways.
Mouse input and fullscreen cursor
Fullscreen cursor confinement also works in menus to prevent accidental Windows taskbar activation. It releases on focus loss and supports WGL and EGL.
In R1Q2 behavior mode, m_directinput 0 selects legacy Windows cursor-position input; 1 and 2 select Raw Input, not DirectInput. m_fixaccel suppresses Windows acceleration only for legacy input. Zero leaves Windows as configured and does not force acceleration on. If Windows acceleration was already off, 0 and 1 can therefore feel identical. The selected source and m_fixaccel setting persist globally.
mouse_info shows selected and actual source, capture/confinement, acceleration and movement errors. If legacy input changes after extended play, retain this output while the symptom occurs and describe jumps, spinning, lost motion or sensitivity changes. Launch one session with +set cl_mouse_debug 1 for a detailed log. This diagnostic defaults off and is session-only; a permanent config cannot enable it. Diagnostics do not imply that every possible legacy-input issue has been solved.
System-key behavior
Open Settings → System → System key behavior, immediately after Menu settings. Settings are global across mods; all default to No and take effect immediately.
| Menu item | Variable | What Yes blocks |
|---|---|---|
| Win and Win combinations | win_block_windows_key | Windows keys and their combinations |
| Alt+Tab | win_block_alt_tab | Window switching |
| Alt+Esc | win_block_alt_esc | Cycling windows with Alt+Esc |
| Alt+F4 | win_block_alt_f4 | Closing the window with Alt+F4 |
| Alt+Enter | win_block_alt_enter | Windowed/fullscreen switching |
| Alt+Space | win_block_alt_space | The window system menu |
| Ctrl+Esc | win_block_ctrl_esc | Opening Start |
| Ctrl+Shift+Esc | win_block_ctrl_shift_esc | Opening Task Manager with the shortcut |
| Print Screen | win_block_printscreen | Print Screen key handling |
Blocking applies only while the game window is active, with either WGL or EGL. Other foreground applications keep their keyboard behavior. Ctrl+Alt+Delete is not intercepted. If Alt+F4 is blocked, the normal game menu can still be used to quit.
Individual system-key blocks while the game is active. This screenshot shows custom settings; all blocks are off by default.