ix multiple paste operations by adding cooldown mechanism to keyboard shortcuts

This commit is contained in:
Prakash Joshi Pax 2025-03-27 08:23:30 +05:45 committed by GitHub
parent d6d5cd0c45
commit f0406e67b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -49,6 +49,10 @@ class HotkeyManager: ObservableObject {
private var isLockedRecording = false // For toggle mode after double-press
private let doublePressThreshold = 0.3 // 300ms for faster double-press detection
private let briefPressThreshold = 1.0 // 1000ms threshold for brief press
// Add cooldown management
private var lastShortcutTriggerTime: Date?
private let shortcutCooldownInterval: TimeInterval = 0.5 // 500ms cooldown
enum PushToTalkKey: String, CaseIterable {
case rightOption = "rightOption"
@ -332,14 +336,29 @@ class HotkeyManager: ObservableObject {
}
}
private func setupShortcutHandler() {
KeyboardShortcuts.onKeyUp(for: .toggleMiniRecorder) { [weak self] in
Task { @MainActor in
await self?.whisperState.handleToggleMiniRecorder()
await self?.handleShortcutTriggered()
}
}
}
private func handleShortcutTriggered() async {
// Check cooldown
if let lastTrigger = lastShortcutTriggerTime,
Date().timeIntervalSince(lastTrigger) < shortcutCooldownInterval {
return // Still in cooldown period
}
// Update last trigger time
lastShortcutTriggerTime = Date()
// Handle the shortcut
await whisperState.handleToggleMiniRecorder()
}
deinit {
visibilityTask?.cancel()
Task { @MainActor in
@ -348,4 +367,4 @@ class HotkeyManager: ObservableObject {
removeEnhancementShortcut()
}
}
}
}