ix multiple paste operations by adding cooldown mechanism to keyboard shortcuts
This commit is contained in:
parent
d6d5cd0c45
commit
f0406e67b5
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user