Observer-first
By default it observes and transforms coordinates — metadata only. No synthetic input is injected and no drivers are mutated without an explicit, approved step.
TouchLink is the control-surface lane of AIM — RQ MCP LLC's local-first AI operator stack — and a standalone macOS driver in its own right.
↑ See the full stackMac has never really handled USB touchscreens — plug one in and your taps land in the wrong spot, or just move the pointer instead of pressing the button. TouchLink is a virtual touchscreen driver for Mac. On its own, it makes touch behave like touch — your touchscreen works like a touchscreen, and your mouse stays a mouse. And because it's a virtual driver, it also folds into a larger stack as a programmable control surface — the way AIM uses it.
Plug a touchscreen into a Mac and it mostly doesn't behave — your taps land on the wrong screen, in the wrong place, or just move the pointer. macOS treats a touchscreen as a mouse; TouchLink makes it behave like a touchscreen.
A quick, guided four-corner tap teaches TouchLink your exact panel and layout — so from then on, your touch lands on the right spot, every time.
4-point matrixTouchLink runs as a menu-bar app on public macOS frameworks — IOHIDManager and a CGEvent tap. No kernel extension to break on an OS update.
It corrects events for the specific display you've bound the touchscreen to, leaving your other screens untouched. The right surface gets the touch.
display-boundTouchLink watches the raw HID stream, recognises the miscalibrated event, applies your calibration, and returns a corrected native event — all on-device.
Reads raw USB touchscreen HID reports through IOHIDManager.
A CGEvent tap catches the miscalibrated pointer event macOS generated.
Applies your per-device 4-point calibration matrix to the coordinates.
Returns the corrected event to the stream — the tap lands exactly where you touched.
Inside AIM, TouchLink is the pattern for turning a physical touchscreen into a safe driver of a virtual workspace — under the same bounded-autonomy rules as the rest of the stack.
By default it observes and transforms coordinates — metadata only. No synthetic input is injected and no drivers are mutated without an explicit, approved step.
The control-surface lane is designed to route touch into a virtual workspace without stealing focus or duplicating input — the operator's other work keeps running.
Any real routing or synthetic input sits behind explicit approval — the same "no single part acts unchecked" posture that governs the whole AIM operator.
Extending the lane to route a Windows-owned touchscreen into a Mac workspace is on the roadmap, behind hard safety rails. Not a shipping feature today.
TouchLink builds, signs, launches, and passes its test suite on real hardware. Signing, notarization, and broader device testing come next. Follow the build, or try it on your panel.