Offset compensation belongs at the system layer and should not be repeated by applications
Aliases: system compensation · touch offset · double compensation
What it is
Basic touch calibration and offset compensation normally belong at the system layer: OS, driver, and hardware know sensor characteristics, orientation, and user settings. If an app assumes the same offset after receiving coordinates and applies it again, double correction can move an already corrected touch to the wrong side.
Why it happens
Firmware and input stacks calibrate, filter, transform orientation, and adapt accessibility settings before supplying logical coordinates — meaning the coordinates an app receives have very likely already been corrected once, using device information the system itself has and the app does not. If a developer eyeballs "taps always land a bit high" on their own test device and hand-codes an "offset down by a few pixels" patch into the app, that patch's correctness is implicitly tied to one specific bundle of conditions: this test device, this system version, no accessibility feature currently enabled. The moment the system adjusts its own correction algorithm in a later release, a person switches to a device with different sensor characteristics, or a person turns on a system-level touch accommodation, the system layer is now applying a different correction than before, and the app's hard-coded patch stacks a further, possibly wrong-direction offset on top of it — hit accuracy ends up worse than doing no compensation at all. And this degradation is typically silent: nothing tells the developer "your compensation is now stale."
Studying it
Inspect hit behaviour from received coordinates across system defaults, devices, orientation, scaling, and accessibility settings. When bias appears, separate undersized layout, system configuration, hardware fault, and true application mapping issues before adding an offset from one test machine. One targeted check is to measure the app's hit accuracy immediately before and after a system version upgrade, or before and after toggling a system-level touch accommodation — if the app carries a privately stacked coordinate offset, this before/after comparison is often exactly where the mismatch surfaces.
Where it stops holding
Apps may provide semantic tolerance—larger hit regions, candidate snapping, magnified confirmation, and undo—without changing base coordinates. Some specialist device APIs may explicitly require raw-data handling, but that must follow their contract and remain a dedicated mode.
Applying it
- Use platform logical touch points and native hit testing; do not stack speculative global offsets.
- Address touch error through tolerant layout and recoverable interaction.
- How to check: measure the app's hit accuracy before and after a system version upgrade, a device model change, or toggling a system-level touch accommodation; a directional shift in accuracy is a strong sign to check the codebase for a hard-coded coordinate offset patch, rather than rushing to layer on yet another compensation to mask it.
Related
- Same group: C2.06.1 The user’s aim point is systematically biased above the touch point · C2.06.2 Touch bias varies with finger angle and screen position
- Nearby: C2.01 Finger contact area and touch centroid · C2.04 Fat-finger problem
- Search terms:
touch calibration·system input·offset compensation