// Copyright (c) 2026 Storm Dragon // Authors: Storm Dragon, Angus Kola // SPDX-License-Identifier: GPL-3.0-or-later package input // RepeatTracker is owned by the native input producer. Classic X11 repeats // release and press with the same timestamp; detectable autorepeat emits // another press while the key remains down. Neither is a fresh physical press. type RepeatTracker struct { held [256]bool releasedTimestamp [256]uint32 } func (tracker *RepeatTracker) Observe(event Event) bool { code := event.Keycode if !event.Pressed { tracker.held[code] = false tracker.releasedTimestamp[code] = event.Timestamp return false } repeated := tracker.held[code] || event.Timestamp != 0 && tracker.releasedTimestamp[code] == event.Timestamp tracker.held[code] = true tracker.releasedTimestamp[code] = 0 return repeated } func (tracker *RepeatTracker) Reset() { *tracker = RepeatTracker{} }