Every time you rest the heel of your hand on a laptop while typing, several independent filters decide in milliseconds whether that contact is an accidental palm or an intentional gesture. When those filters work, you never notice them. When they fail — cursor flying to a random position mid-sentence, text selection appearing out of nowhere — the frustration is immediate. Understanding what the algorithm actually does explains why some laptops feel effortless to type on and others feel like they are fighting you.
The three classic palm rejection signals
Traditional palm rejection combines three measurable properties of a touchpad contact to decide whether to suppress it:
- Contact area — a fingertip lands as a small, roughly circular capacitance blob. A palm lands as a large, irregular shape covering many electrode rows and columns. Area-based filters reject contacts above a size threshold before any gesture logic runs.
- Position on the pad — palms typically land at the top edge (near the keyboard) or at the lateral edges. Firmware and OS drivers define "curtain" zones along these edges where contacts receive lower trust. A contact arriving in a curtain zone is either discarded or held pending confirmation that it is intentional.
- Timing relative to keyboard activity — the most important signal on a Windows Precision Touchpad. The OS monitors keyboard events and, after any key press, suppresses touchpad input for a brief period. This is called Accidental Activation Prevention (AAP).
How Windows AAP curtain zones work
Microsoft's Precision Touchpad tuning guidelines document a three-region model that divides every touchpad surface into zones with different suppression levels:
- High sensitivity region — the center area of the pad, where intentional pointing happens. After a keyboard event, suppression here is minimal: a tap registers quickly, pointer movement is not filtered.
- Curtain region — the top edge and lateral strips, configurable via registry values (
CurtainTop,CurtainLeft,CurtainRightin himetric units). Contacts in this zone may be suppressed for a tunable period after keyboard activity. OEMs set these values in their driver INF files, which is why identical hardware from different brands can behave differently. - Supercurtain (restricted sensitivity) region — a very narrow strip at each physical edge, typically 100 himetric units wide by default. Taps here are almost always suppressed; the zone is designed for the corner of the pad where a thumb might rest while gripping the chassis. It should only be widened on unusually large pads.
The width of the high-sensitivity region also accounts for keyboard geometry. The SpaceBarOffset and HorizontalOffset registry values tell Windows where the spacebar and the keyboard centerline sit relative to the pad. A touchpad offset to the right of center (common on tenkeyless-style laptops) will shift the active zone to match, keeping rejection symmetric with where palms actually land.
Where traditional methods struggle
Contact-area and zone-based filters share a common weakness: the boundary between finger and palm is not clean. A thumb dragging in from the side looks geometrically similar to a palm resting at the edge. As laptops adopt larger touchpads — filling more of the palm rest area — the physical distance between intentional finger contacts and accidental palm landings shrinks, forcing the curtain zones to grow. A wider curtain means more of the pad's usable area is under suspicion, which directly reduces how close to the edges a deliberate gesture can start.
This trade-off is measurable. A tester that records edge contacts will show the orange edge-warning indicator activating as pointer position approaches within 30 px of the boundary — the same region where OS-level curtain filtering is most aggressive. Gestures that start inside that warning zone have a higher chance of being suppressed before they reach the browser at all.
AI-based palm rejection
Synaptics demonstrated a neural network approach to palm rejection at CES 2025, targeting exactly the boundary problem that area and zone heuristics struggle with. Instead of applying fixed geometric thresholds, the system runs a trained model on every incoming contact, classifying each one as palm, thumb, or finger with per-pixel granularity — including at the edges and corners of the pad where false positives are hardest to avoid. Because the model was trained on large contact datasets, it can distinguish a thumb deliberately tapping a corner from a palm accidentally grazing the same spot, without needing a blanket suppression zone for that area.
The practical result is that the full surface of the pad can remain active rather than having large dead zones imposed by conservative curtain settings. For standard Windows Precision Touchpads, the OS-level AAP remains the baseline; AI-enhanced rejection supplements it at the firmware or driver level on supported hardware.
Limitations every user should know
No palm rejection algorithm is perfect. Three common failure modes recur across all implementations:
- Cold hands — lower skin capacitance shrinks the apparent contact area, making a palm look more like a finger. Area-based filters let more accidental contacts through.
- Stylus or glove use — contacts produced by a non-skin surface have unusual area and pressure profiles. Zone-based filters may suppress intentional contacts because the signal does not look like a fingertip.
- Ultra-fast typists — AAP suppression windows are tuned for average keystroke intervals. A typist above ~120 WPM may find the pad under near-continuous suppression, making quick pointer moves between bursts of typing feel unresponsive. The Windows Settings "Most sensitive" option disables AAP entirely for this case, at the cost of more accidental cursor jumps.
Check yourself: to observe palm rejection in action with the tool above, try tapping the pad with one finger while resting your other fingers lightly on the surface near the edges. Contacts from your resting fingers that the OS suppresses will never appear in the event log — only the contacts that passed through every filter layer become visible events in the tester.