Cthulhu is no longer a fork. Now it is a screen reader written in Golang.
This commit is contained in:
1 parent
a998fe67de
commit
069fc674dc
708 files changed
+112482
-532
No files matched your search
@@ -0,0 +1,31 @@
|
||||
// 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{}
|
||||
}
|
||||
Reference in new issue
Block a user