Features

Ten areas, with the boundaries written down

Each section below describes behaviour that exists in the source, plus the limits of that behaviour. Where something is untested on Windows, it is marked as untested rather than described as working.

01Editor

Editor

Exact pixel geometry. Every control updates the preview on the same frame, at 1:1 physical pixels.

  • Per-axis arm lengths, so a horizontal/vertical asymmetry is a setting, not a trick
  • Separate gaps per axis: open the centre vertically while keeping the sides tight
  • Any arm can be switched off independently
  • Centre dot in square or round, with its own colour if you want one
  • Centre ring with its own diameter and thickness
  • Rotation and horizontal/vertical offset for crosshairs that deliberately sit off-centre
  • Undo and redo, with a slider drag counted as one step

02Styles

Styles

Seven starting points that write element flags into the configuration. Nothing is locked: every element stays editable.

  • Classic, Cross + dot, Dot, Circle, Ring + dot, Compact, Cross + ring
  • Applying a style never touches colour, opacity, outline colour, glow colour or placement
  • A geometry reset returns values to the current style's defaults without changing which elements are visible

03Overlay

Overlay

A real desktop window: borderless, transparent, always on top, and click-through.

  • No taskbar button and no Alt-Tab entry for the overlay itself
  • Live update while it runs: change thickness and the desktop crosshair changes with the editor
  • Positioned from real monitor rectangles, including negative virtual-desktop coordinates
  • Repositions when a display is added, removed, moved or resized
  • Nothing renders while the crosshair and display state are unchanged

04Input transparency

Input transparency

The overlay never takes your mouse or your keyboard focus, and it never becomes the active window.

  • Extended window styles plus hit-testing, chosen for a window that must not be hit at all
  • Click, double-click, right-click and drag pass through to whatever is underneath
  • The cursor shape is never changed by the overlay
  • Verified against ordinary desktop windows; game verification is on the manual matrix and is not yet done

Verified against desktop windows; not yet against games

Click-through is implemented with extended window styles plus hit-testing, and was reasoned about rather than observed in this environment. Testing it against a running game is on the manual matrix and has not been performed.

05Dynamic crosshair switching

Dynamic crosshair switching

Assign your own keys to saved crosshairs and swap the overlay mid-game. No game mapping is assumed and no weapon is ever detected.

  • Bare keys such as 1 or 2 are supported, which a global hotkey cannot do
  • A low-level keyboard observer that always passes the key on: never swallowed, remapped, delayed or synthesised
  • Auto-repeat suppressed, so holding a key does not storm through switches
  • Exact modifier matching: a bare 1 never fires for Ctrl+1, and Ctrl+1 never fires for a bare 1
  • Ignored while the feature is off, while the overlay is stopped, while crshX has focus, and while a key is being recorded
  • Optional restriction to one foreground application, by process name
  • Nothing is written to disk when you press a key
A key press is ignored in each of these situations.
SituationWhy
The feature is offNothing can run globally unless you asked for it.
No bindings existThe listener is not installed at all.
The overlay is stoppedSwitching has nothing to change, and the overlay is never started implicitly.
crshX has focusTyping a preset name must never swap your crosshair.
A key is being recordedThe key you are assigning must not also fire.
The foreground filter is on and another application is in frontOptional restriction; the ignition is deliberate.
The key has a modifier set you did not configureA bare 1 never fires for Ctrl+1, and Ctrl+1 never fires for 1.
The assigned crosshair was deletedThe row is flagged and skipped instead of silently following a different crosshair.
Assignments that are refused, and what you would see instead.
RuleWhat happens
Duplicate keys are refusedThe new assignment is rejected with the name of the crosshair that owns the key. The existing binding is not overwritten.
Keys owned by a crshX shortcut are refusedBy default Ctrl+Alt+X, Ctrl+Alt+C and Ctrl+Alt+E. Change the shortcut first if you want the combination for switching.
Modifier-only keys cannot be boundShift, Ctrl, Alt and the Windows key are ignored as bindings because they are used as modifiers.
Movement keys technically work but are a bad ideaW, A, S, D and Space would switch crosshair every time you walk. Bare number keys and function keys are the practical choice.

06Preset library

Preset library

Eight original presets ship with the application, and your own save, duplicate, rename, favourite, search and filter.

  • Built-in presets can be restored after editing or deleting them
  • Search matches name, description and style; filter by style or favourites
  • Names collide safely: a duplicate gets a suffix rather than overwriting an existing crosshair

07Profiles

Profiles

Bind a crosshair and a display to a profile, with optional per-game associations.

  • Manual activation at any time
  • Optional foreground detection using only the process name and window title of the application in front
  • Automatic detection is opt-in, and its limits are documented rather than guessed at

08Import, export and files

Import, export and files

A documented, versioned JSON format with strict validation, and files you can read and fix by hand.

  • Export a single crosshair or a whole library
  • Import validates schema version, ranges, string lengths, colour formats and identifiers
  • A malformed file is refused with a readable reason and changes nothing
  • Imported crosshairs always receive new identifiers, so an import can never overwrite your work
  • A previous-good backup of every data file is kept, and an unreadable file is quarantined rather than silently replaced

09Settings and shortcuts

Settings and shortcuts

Theme, reduced motion, overlay startup behaviour, launch at sign-in, shortcuts, logs and a diagnostics report.

  • Dark, light, or follow Windows
  • Shortcuts require at least one modifier, report conflicts instead of taking them, and are released on exit
  • Launch at sign-in is off until you ask for it
  • A one-click diagnostics report with versions, displays, overlay state and recent log lines

10Resource use

Resource use

No polling loops, no per-frame timer, and no rendering when nothing has changed.

  • The overlay redraws when the crosshair or the display configuration changes, and at no other time
  • No network activity at all, so no background calls, retries or update checks
  • Idle CPU and memory figures are on the manual test matrix and have not been measured yet on Windows

11Reference

Every configurable value

The editor's ranges, exactly as the application enforces them. A value outside its range is clamped on load rather than rejected, so a hand-edited preset file cannot produce an unrenderable crosshair.

Geometry
SettingRangeStepUnit
Arm length, horizontal0 – 2001px
Arm length, vertical0 – 2001px
Line thickness1 – 201px
Gap, horizontal0 – 801px
Gap, vertical0 – 801px
Centre
SettingRangeStepUnit
Dot size1 – 401px
Ring diameter4 – 2561px
Ring thickness1 – 201px
Appearance
SettingRangeStepUnit
Opacity0.05 – 10.05—
Outline thickness1 – 121px
Glow radius1 – 241px
Placement
SettingRangeStepUnit
Rotation-180 – 1801°
Horizontal offset-600 – 6001px
Vertical offset-600 – 6001px

Element toggles — top, bottom, left and right arms, centre dot, centre ring, outline and glow — are switches rather than ranges, and are not listed above.

12Files

Where your data lives

Under your own application data folder, never in the install directory, and never on a server. Ordinary JSON you can read, diff and fix by hand.

FileContainsNotes
settings.jsonPreferences, shortcuts, overlay behaviour, dynamic switching bindingsRepaired on load if hand-edited into an invalid state; the original is kept as .bak
presets.jsonYour crosshair libraryBuilt-in presets are re-seedable at any time
profiles.jsonProfiles, their crosshairs, displays and game associationsA broken entry is repaired rather than dropped where possible
*.json.bakThe last known good copy of each file aboveUsed automatically when the primary file cannot be read
logs/Rolling logs, one file per day1 MB per file, five files kept. No credentials exist to log.
exports/Default location for exported crosshairs and librariesOrdinary JSON you can read, diff and edit