This design is unpatented and will stay that way

Here is the paper trail so you don't have to take my word for it.

I filed US provisional patent application 63/819,460 on June 6, 2025, titled "Virtual Scroll Wheel Input Device with Adaptive Touch Sensing and Modular Haptic Feedback." I let it lapse — no non-provisional was filed, and the twelve-month window closed on June 6, 2026. In August 2025 I released the full specification and figures as open source, posting them at several online locations including LinkedIn, together with the one-page sell sheet in the gallery above. That publication is now more than a year old, which under US law bars me from patenting this and makes it prior art against anyone who files after that date. Patent searches turned up no prior art that would block implementation. A defensive publication is on file at Technical Disclosure Commons so the record is indexed and searchable by patent examiners.

So: if you make laptops, mice, touch controllers, or haptic drivers, you can build this. You owe me nothing. I would like attribution and I would like to see it exist.

And build the small version. Costed line by line below, the whole thing — arc, haptic motor, tilt, zoom — comes to roughly $4.80–8.70 of BOM at 100k units a year, and Core alone is roughly $3.70–6.50. But the reason to start with Core is not the dollar or two. Core is three components and a firmware loop: a curved capacitive arc, a smartwatch-class LRA, and centroid-based vertical scrolling with synthetic detents. It delivers what a mouse wheel delivers, in a 9.5 mm stack, without putting a vibration-isolation problem on your critical path. Tilt-to-horizontal is there when you want a second generation, and pressure-zoom adds nothing to the BOM at all.

If you are a hobbyist, the interesting unsolved parts are the arc electrode layout, tuning the contact-width gate against real finger data so press-down never registers as a stroke, and getting convincing detent feel out of a cheap LRA. Fork it and tell me what breaks.

— Madhav Kavuru, mkavuru2@gmail.com

The problem, stated precisely

Every laptop maker has been asked for a scroll wheel. None ship one. The reason is not taste, it is 15 millimeters.

Scroll wheels on current mice run roughly 15–22 mm in diameter. A thin laptop's keyboard section gives you about 10 mm total. Shrink the wheel below 15 mm and it becomes unpleasant to use, and you still have to redesign and miniaturize the optical encoder, the bearing, and the ratchet. So instead we get scroll strips painted onto a corner of the touchpad, which are too sensitive to be precise, break after driver updates, eat usable touchpad area, and force you to steer around them to avoid scrolling by accident. They feel like dragging a scroll-bar thumb, not like a wheel.

Arrow keys, meanwhile, remain terrible. In a word processor they move line by line and then jump a page at a time.

The idea

You never touch most of a scroll wheel. You touch an arc at the top. So build only that arc.

Take a disk segment — a circular segment no bigger than a semicircle — and stand it up through an opening in the chassis. Put a mutual-capacitance touch sensor along its curved outer face. Now your fingertip has the same curved reference geometry it gets from a real wheel, which is exactly what a flat strip fails to provide. With a 22 mm implied wheel diameter and a 17 mm chord, the segment is 4.02 mm tall — about the same as the exposed part of a mouse wheel — and about 2 mm of it pokes above the keycaps.

Then give it detents that don't exist. Bond a linear resonant actuator to part of the flat chord face of the segment. Smartwatch LRAs (12 × 5 × 3 mm, the class of part used in Apple Watch) are mature, cheap in volume, and already qualified for sub-20 ms haptic latency. Dimensions that are a problem in a watch are nothing in a laptop. Drive it with PWM waveform profiles and you can synthesize click detents, free-spin inertia, and page-turn cues — and change all of them in software after the hardware ships.

Why anyone would actually want this

The engineering case is the stack height. The user case is simpler, and it is what the sell sheet led with:

And on the hardware side: software-tunable detent and free-spin profiles, no moving parts to wear out or collect dust, a standard HID descriptor that does not touch the touchpad driver stack, and — in the Full configuration — tilt-to-horizontal and pressure-zoom with no mechanical tilt assembly.

THREE WAYS TO BUILD THIS — read this section first if you make laptops

I originally wrote this project up as one design with every feature switched on. That was a mistake for anyone who has to actually ship it. The value is concentrated almost entirely in one feature — wheel-feel vertical scrolling — and two of the things I was most excited about are the two things that would slow a product down the most.

So here is the same design, separated into what you need and what you can leave out.

Core

Core + zoom

Full

Curved touch arc (disk segment)

●

●

●

LRA + driver, synthetic detents

●

●

●

Silicone isolator

●

●

●

Vertical scroll, centroid tracking

●

●

●

Pressure-to-zoom

—

● (firmware only)

●

Tilt-to-horizontal-scroll

—

—

●

Metal post + MEMS accelerometer

—

—

●

New parts vs. Core

—

none

2

Est. BOM at 100k/yr

$3.70–6.50

$3.70–6.50

$4.80–8.70

Time to market

fastest

fastest

longest

Core is the product. A curved arc, a haptic motor, and vertical scrolling with real detents. That is what a mouse wheel gives you, and it is the entire reason anyone has ever asked for a scroll wheel on a laptop. Everything below Core in the table is a refinement of something users mostly did not ask for.

Core + zoom costs nothing in hardware. Pressure sensing reuses the capacitance array that is already there — press harder, the fingertip flattens, contact area grows, the controller already sees it. It is firmware. If it doesn't tune well on your panel, ship without it and add it in an update.

Full is for a second-generation part, or for a flagship where horizontal scroll is a spec-sheet line you want.

Costed line by line in the section below, Core lands at roughly $3.70–6.50 per unit and Full at roughly $4.80–8.70 at laptop volumes. I originally guessed "under $10" for the full thing; that turned out to be a fair ceiling rather than a target.

Two honest caveats:

Core does not make the module thinner. The accelerometer sits beside the controller rather than in the stack, so the ≈9.5 mm budget below holds either way. What you save by choosing Core is parts, tuning time, validation scope, and risk — not height.

And the case for Core is schedule, not BOM. The per-unit difference between Core and Full is only about $1.10–2.20. The real difference is one-time engineering: the accelerometer path is where the mechanical isolation characterization, the FIR filter work, and the late-validation risk all live. Cut tilt to ship sooner, not to save a dollar.

What it costs to build

Every figure below is per unit, in USD, assuming a single laptop SKU at roughly 100k units per year. Two kinds of number appear:

Core

Line

Basis

Distributor anchor

Modeled at 100k/yr

Disk segment — molded dielectric, 17 mm chord × 4.02 mm, hard-coated

[modeled] simple 2-plate mold, no undercuts

—

$0.35–0.70

Electrode array — FPC, 1 TX + 16 RX, laminated to the arc

[modeled] ~19 × 8 mm 2-layer FPC, 200 µm pitch

—

$0.25–0.50

Mutual-capacitance touch controller

[quoted] Azoteq IQS7211E002CSR, $0.392 at 3k, $0.349 at 6k (Mouser)

$0.39

$0.25–0.40

Linear resonant actuator, 12 × 4 × 3.5 mm class

[quoted] Jinlong/Vybronics bar LRA, $2.09 at 1k (JLCPCB)

$2.09

$1.20–1.80

LRA driver with back-EMF and auto-resonance

[quoted] TI DRV2605LYZFR, $1.06 at 1k, $0.99 at 3k, $0.969 at 6k (Mouser)

$0.99

$0.60–0.90

Silicone isolator, die-cut, 1 mm, 50–70 Shore A

[modeled] die-cut sheet, pennies at volume

—

$0.05–0.12

Module PCB, 2-layer, ~15 × 20 mm

[modeled]

—

$0.10–0.25

FPC termination — connector or hot-bar bond

[modeled]

—

$0.08–0.20

Passives, decoupling, ESD protection

[modeled]

—

$0.05–0.10

SMT + mechanical assembly + functional test

[modeled] module-level, includes handling the arc

—

$0.60–1.20

Tooling amortization over ~500k lifetime units

[modeled]

—

$0.03–0.08

Yield and scrap allowance, 3–5%

[modeled]

—

$0.10–0.20

Core total

$3.66–6.45

Full — what tilt-to-horizontal adds on top of Core

Line

Basis

Distributor anchor

Modeled at 100k/yr

MEMS accelerometer

[quoted] Bosch BMA530, $1.48 at 1 pc, 10k reel (Mouser)

$1.48

$0.70–1.10

Rigid metal post

[modeled] stamped or turned stainless, ~2 × 8 mm

—

$0.08–0.20

Silicone sleeve for the post

[modeled]

—

$0.03–0.08

Added assembly step — post insertion and alignment

[modeled] tighter tolerance than any Core step

—

$0.15–0.35

Per-unit tilt calibration at end of line

[modeled] added test time

—

$0.10–0.30

Added yield risk on the isolation stack

[modeled]

—

$0.05–0.15

Full adder

$1.11–2.18

Full total

$4.77–8.63

Pressure-to-zoom: what it costs

Per unit: $0.00. No component, no PCB area, no thickness, no assembly step, no test step. It reuses the contact-width measurement the tracking gate already computes from the capacitance array you already have. There is genuinely nothing to add to the BOM.

Two conditions where that stops being true, both worth checking before you promise it:

So the real cost of pressure-zoom is engineering time: threshold and mapping tuning across finger sizes, a settings toggle, QA. It is the cheapest feature in the project by a wide margin.

One-time costs, which are not BOM

These dominate the decision far more than the per-unit numbers do:

Item

Core

Full

Injection mold for the segment, plus housing changes

$8k–25k [modeled]

same

Custom FPC tooling

~$2,000 typical, MOQ 5k (Vybronics)

same

Electrode pattern tuning and controller configuration

4–8 engineer-weeks

same

Haptic waveform design and tuning

2–4 engineer-weeks

same

I²C-HID descriptor, host integration, settings UI

4–8 engineer-weeks

same

EMC, ESD, drop, and life testing

$15k–40k [modeled]

more

Accelerometer isolation characterization, FIR development, scope and shaker time

—

+3–6 engineer-weeks

Pressure-zoom tuning and QA

optional, 1–2 engineer-weeks

same

That last-but-one row is the actual argument for shipping Core. A dollar or two of BOM is noise inside a laptop. Several engineer-weeks of vibration isolation work sitting on the critical path, on the feature most likely to fail late validation, is not.

Cost levers, if you want to go lower

All distributor prices above were checked in September 2026 and will drift.

Stack budget

Layer

Thickness

Config

Touch arc / disk segment

4.0 mm (≈2 mm protrudes, roughly flush with keycaps)

all

Haptic motor with LRA

3.0 mm

all

Silicone damping isolator

1.0 mm

all

PCB

0.6–1.6 mm

all

PCB-to-wall standoff

0.5–1.0 mm

all

MEMS accelerometer

1.2 × 0.8 × 0.55 mm, beside the controller — not in the stack

Full only

Total

≈ 9.5 mm

all

That fits a 10 mm keyboard section. This is the whole point of the project.

Sensing details

One TX electrode along the strip's length, RX electrodes perpendicular and segmented along it. RX count sets resolution — strips typically use 5–20; use 16 or more for 0.5 mm. One end of each line routes to a dedicated controller pin, the other terminates at the pattern edge. Even electrode spacing along the arc, which makes the software mapping trivial.

Do not use a self-capacitance (RX-only) strip. Ghost touches, noise susceptibility, worse resolution, less stable responsiveness.

Because the segment is a rigid, non-bendable part with evenly spaced electrodes, it should be easier to manufacture than the curved touch panels already mass-produced for phones.

Position tracking: centroid, with a contact-growth gate

Earlier versions of this write-up argued for tracking the leading edge of the contact patch instead of its centroid. I no longer recommend it, and I want to explain why in public rather than quietly delete it, because the reasoning is useful either way.

The original argument. On a 17 mm arc your index fingertip covers a large fraction of the sensor at once. As the finger travels, the centroid of that broad contact patch shifts less than the finger does. So scroll distance comes out understated, and direction at the very start of a stroke comes out mushy.

Why that argument doesn't survive contact. The problem with tracking the leading edge is that the contact patch changes size as well as position, and an edge estimator cannot tell those two apart. As the index finger presses down, the patch grows in both directions along the arc. The leading edge therefore advances upward while the user is beginning a downward swipe — so the pointer jumps up before it goes down. That artifact is not a corner case; it happens at the start of nearly every stroke, exactly where the original argument claimed edge tracking would help most.

Three more objections, in order of severity:

What to do instead. Keep the centroid — decades of touch controllers already compute it well, every vendor's front end hands it to you, and it interpolates. Then fix the real defect the original argument identified, which was never the centroid itself but the press-down and lift-off transients, by gating on contact width:

Vertical only. The width signal from step 4 is the same signal pressure-zoom uses, so nothing is wasted.

For completeness, the leading-edge variant remains fully documented in the specification and in the defensive publication, and it stays there deliberately — as prior art, broader disclosure is better, and someone with a smaller contact patch or a longer arc may find the tradeoff goes the other way. It just should not be the shipping default, and if you implement it at all, put it behind a settings toggle rather than in the main path.

Haptic profiles

Detents at roughly 0.1 N·m, free-spin at 0.05 N·m.

Parameter

Value

Base frequency

100–200 Hz (LRA resonance)

Detent click

50% duty, 1–2 ms pulses

Free scroll

10–30% duty, continuous sine modulation

Pressure feedback

5–80% duty, proportional to force

Crisp detent waveform

Square, 175 Hz at 50% duty

Inertial scroll waveform

Sine sweep 100 → 200 Hz

Page turn

Burst, 3–5 cycles at 175 Hz

Touch-to-vibration latency

< 20 ms

Closed-loop: back-EMF sensing to correct PWM in real time, auto-resonance tracking to hold efficiency across temperature and aging.

The 1 mm silicone isolator is required in every configuration — it keeps the sensation at the fingertip instead of buzzing the whole palm rest. In the Full configuration it does double duty by keeping actuator energy out of the accelerometer's data.

Optional: pressure to zoom (firmware only, no added parts)

No force sensor. Press harder, your fingertip flattens, contact area grows, and the mutual-capacitance array already sees it — it is the same width measurement the tracking gate uses. Threshold at about 10 g to enter zoom mode so ordinary scrolling never triggers it, then map 10–50 g linearly to 1×–5× zoom granularity. Scroll forward under pressure to zoom in, backward to zoom out — the convention people already know from Photoshop and video editors. A double-pulse marks the moment you cross into zoom mode.

This is the cheapest feature in the project: it adds no component, no thickness, and no tooling. The only reason to leave it out of a first release is tuning time on your specific panel.

In the Full configuration, tilt data disables pressure zoom during horizontal scrolling so the two never fight. In Core + zoom there is no horizontal scroll, so that interlock is simply not needed — one less state machine.

Optional: tilt to scroll horizontally

This is the feature I would cut first, and I say that as the person who came up with it. Most people never horizontally scroll deliberately, and the ones who do already reach for shift-scroll or a trackpad gesture. Meanwhile it is the single most expensive feature in the design in engineering terms: it adds two components, a mechanical isolation problem, and a signal-processing problem, and it is the part most likely to fail validation late. Omitting it leaves the main selling point — a scroll wheel in a laptop — completely intact.

If you do want it: a rigid metal post in a silicone sleeve runs alongside the LRA and mechanically bypasses it, coupling the touch arc straight to the PCB. Press the arc, the board flexes a little, and a MEMS accelerometer a few millimeters away reads that flexure. Tilting mice use a rocker assembly for this; here there is no pivot at all. The ±2 g setting is plenty. The Bosch BMA580 fits well: a 1.2 × 0.8 × 0.55 mm six-pin WLCSP, 16-bit, selectable ±2/±4/±8/±16 g, 12.5 Hz to 6.4 kHz in high-performance mode, 120 µg/√Hz typical noise density, programmable low-pass filtering, I²C up to 1 MHz (BMA580 datasheet). Bosch aims it at hearables and XR glasses and sells it on bone-conduction voice activity detection, which is dead weight here — so the sibling BMA530, aimed at wearables and smartphones, is just as good a pick. Its published package, range, rate, resolution, noise, and interface numbers are identical. Honestly any low-g triaxial part that hits those numbers works — nothing in this design needs a specific chip.

The obvious objection is that the LRA will drown the accelerometer in its own vibration. Three things together fix it, and you need all three:

Add FIR filtering in the DSP pipeline and the haptic energy stays out of the force signal. If that sentence sounds like a week of oscilloscope time, it is, and that is the argument for shipping Core first.

Where it goes

Adjacent to the upper right corner of the touchpad, or adjacent to the lower right corner of the key field. Both sit outside the region your hands sweep while touch-typing, so accidental actuation isn't an issue. Cut recesses in the housing at both ends of the segment to expose more arc to the index finger.

The same module drops into a mouse: mount it to a sloped internal PCB surface matched to the shell's slope and it looks and feels like the wheel it replaces, minus the bearing. A USB-C numpad is a third host.

How it compares

This design (Core)

This design (Full)

Mechanical wheel

Flat touch strip

Tactile feedback

Variable LRA pulses, software-defined

Same

Fixed mechanical detents

Undifferentiated buzz

Finger reference geometry

Curved arc, same as a wheel

Same

Curved wheel

None — flat

Resolution

0.5 mm, 0.1 mm in precision mode

Same

1.5° optical encoder

~2 mm zones

Form factor

4 mm protrusion, 9.5 mm stack

Same

15–22 mm diameter

Flat

Moving parts

None

None

Bearing, encoder, ratchet

None

Horizontal scroll

No — use shift-scroll

MEMS tilt, no pivot

Bulky rocker

Second strip or gesture

Zoom

Optional, firmware only

Capacitive force, no added sensor

No

No

Service life

No wear surfaces

No wear surfaces

Wears, collects grit

No wear surfaces

Driver risk

Separate device, own HID descriptor

Same

n/a

Shares the touchpad stack

Added components vs. Core

—

2

n/a

n/a

License

No patent rights are asserted by the author.