Compare commits

..

4 Commits

Author SHA1 Message Date
Marc Brooks 43e31824a1
Merge 51d80bec65 into 8f4081a5b1 2025-09-26 11:22:36 +02:00
Marc Brooks 51d80bec65
Run paste/macros in background on their own queue.
Also returns a token for cancellation.
Fixed error in length check for macro key state.
Removed redundant clear operation.
2025-09-25 20:57:33 -05:00
Marc Brooks 0321a7473a
Move the HID keyboard descriptor LED state
Seems to interfere with boot mode
2025-09-25 16:36:28 -05:00
Marc Brooks 704d65bde6
Reduce traffic during pastes
Suspend KeyDownMessages while processing a macro.
Make sure we don't emit huge debugging traces.
Allow 30 seconds for RPC to finish (not ideal)
Reduced default delay between keys (and allow as low as 0)
2025-09-25 12:25:10 -05:00
1 changed files with 2 additions and 11 deletions

View File

@ -1078,20 +1078,15 @@ type RunningMacro struct {
var (
keyboardMacroCancelMap map[uuid.UUID]RunningMacro
keyboardMacroLock sync.Mutex
keyboardMacroOnce sync.Once
)
func getKeyboardMacroCancelMap() map[uuid.UUID]RunningMacro {
keyboardMacroOnce.Do(func() {
func init() {
keyboardMacroCancelMap = make(map[uuid.UUID]RunningMacro)
})
return keyboardMacroCancelMap
}
func addKeyboardMacro(isPaste bool, cancel context.CancelFunc) uuid.UUID {
keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
token := uuid.New() // Generate a unique token
keyboardMacroCancelMap[token] = RunningMacro{
@ -1104,7 +1099,6 @@ func addKeyboardMacro(isPaste bool, cancel context.CancelFunc) uuid.UUID {
func removeRunningKeyboardMacro(token uuid.UUID) {
keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
delete(keyboardMacroCancelMap, token)
}
@ -1112,7 +1106,6 @@ func removeRunningKeyboardMacro(token uuid.UUID) {
func cancelRunningKeyboardMacro(token uuid.UUID) {
keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
if runningMacro, exists := keyboardMacroCancelMap[token]; exists {
runningMacro.cancel()
@ -1126,7 +1119,6 @@ func cancelRunningKeyboardMacro(token uuid.UUID) {
func cancelAllRunningKeyboardMacros() {
keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
for token, runningMacro := range keyboardMacroCancelMap {
runningMacro.cancel()
@ -1139,7 +1131,6 @@ func reportRunningMacrosState() {
if currentSession != nil {
keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
isPaste := false
anyRunning := false