macOS Pre-release · in daily use, release hardening
Kinetip
A pen tablet that finally feels native on macOS.
A native macOS driver that turns pen input into precise pointing, dragging, and inertial scrolling — aware of whether the pen landed on scrollable content or on controls.
~82MB · <2% of 1 core Benchmarked on a Mac Studio, across a full workday of daily-driver use — not a synthetic demo.
A device you touch thousands of times a day deserves better
I run my Mac with a pen tablet instead of a mouse. All day, for everything — code, documents, windows, browsing. Not drawing: work. A pen is kinder to the hand, and once absolute positioning rewires your brain, a mouse feels clumsy.
macOS never really wanted anyone to work this way. Vendor drivers bury everything in per-model jargon, treat scrolling as an afterthought, fight you when the pen lands near a button, and can quietly stop working after the machine sleeps. For a device you touch thousands of times a day, small interruptions compound into a real cost — for me, and for every illustrator, editor, and accessibility-minded user who depends on a pen the same way.
So I wrote the driver I wanted to exist: a clean-room, native macOS driver that turns pen input into precise pointing, dragging, and scrolling — built around how macOS actually behaves, not ported through a compatibility layer.
The pen becomes a real pointer — and a better scroll wheel
Kinetip's signature move is context-aware pan scrolling: touch the pen down and drag, and the page glides with momentum, like a trackpad fling. The driver knows whether the pen landed on scrollable content or on a control — so a drag over a document scrolls, while a drag on a slider just works as a drag. No modes to toggle, no chords to memorize.
-
Feather-light
~82MB of memory and under 2% of a single CPU core across a full workday of active use — real daily-driver measurements, not a synthetic benchmark. It won’t compete with your work for your Mac’s resources.
-
Absolute positioning
The tablet maps directly to the screen — or to one display, or to a custom active area with a visual editor. Point at a thing and the pointer is on it.
-
Native inertia
Fling a page and it decays like macOS expects, with re-fling boosts and momentum physics you can preview and tune in the settings window.
-
Per-app policies
Disable panning in your paint app, force a behavior in a stubborn one, adjust gain per application — exceptions live where the exceptions are.
-
Truthful diagnostics
The first screen answers whether the tablet, permissions, mapping, and event posting are actually healthy. A failure names its fix; a fallback is never painted as success.
Every setting is a preset, not a wall of numbers
Kinetip has an absurd number of things you could tune — where the active area sits on your tablet, what each pen button and motion maps to, how scrolling decays, how loud a click feels, which apps get their own rules. Expose all of that as raw values and you don't get power, you get a spreadsheet nobody wants to touch.
So every dial here is a named choice instead of a naked number: pick Wood or Silicon for how a click sounds, not a decay coefficient; drag the active area on a visual map, not four raw coordinates; set a per-app override for the one paint tool that fights you, and leave everything else on sane defaults that already feel right out of the box. Maximum control, without ever making you do the math to get there.
Built to disappear — from your workflow, and from Activity Monitor
Kinetip does one job, on one lightweight thread, and nothing else. Running it all day as my only pointing device, it holds around 82MB of memory and under 2% of a single CPU core — measured across a full workday of real use, not a synthetic benchmark. No background service phoning home, no cloud sync, no idle timers waking the CPU while you work.
That efficiency isn't an accident. One realtime thread owns the whole input spine — decode, screen mapping, gesture recognition, inertia, event synthesis — and it never allocates, never takes a lock, never calls into anything slow. Benchmarked on a Mac Studio, turning a raw hardware report into a gesture command takes a median of about 400 nanoseconds — sub-microsecond, for the whole decode-map-reduce chain. And every update is paced to whatever display you're on, so motion holds up at 60Hz and stays smooth all the way to ProMotion's 120Hz — the pen never feels like it's arriving a frame late.
Reliability is treated as a feature with a spec: 800+ tests, seeded fuzzers, and soak storms that hammer device churn and permission flaps, so the driver recovers cleanly from sleep, wake, and hardware disconnects instead of degrading quietly.
The best compliment an input driver can get is silence
Kinetip is my daily driver — used, tested, and refined with the same pen it drives. It is now more reliable than the vendor software that came with the hardware, and the release-hardening milestones are complete, with final acceptance gates in progress ahead of a public 1.0.
The tool I built to fight my tablet driver is now the reason I forget the driver exists. For an input device, disappearing is the finish line.
Kinetip at a glance
- Platform
- macOS 14+
- Status
- Pre-release — daily-driven, release gates in progress
- Model
- Native menu-bar app + settings window
- Stack
- Swift 6 · IOKit HID · CoreGraphics · SwiftUI
- Footprint
- ~82MB memory · under 2% of a single CPU core across a full workday
- Input path
- Realtime thread — no locks, no allocations
- Latency
- Median ~400ns per report, hardware to gesture — benchmarked on a Mac Studio
- Display sync
- Frame-paced to your panel — 60Hz or ProMotion 120Hz
- Customization
- Active area, gestures, momentum, sound, and per-app overrides — all named presets, no raw numbers
- Testing
- 800+ tests · seeded fuzzers · runtime soak storms
- Privacy
- Fully local — no network, no telemetry
- Distribution
- Open to publishing partners