From f439911a8d19a24fb7ab0c59d4ba4e1ac30900ae Mon Sep 17 00:00:00 2001 From: Beingpax Date: Wed, 12 Mar 2025 09:06:14 +0545 Subject: [PATCH] added support for right shift key --- VoiceInk/HotkeyManager.swift | 10 ++++++++++ VoiceInk/Views/RecordView.swift | 2 ++ VoiceInk/Views/SettingsView.swift | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/VoiceInk/HotkeyManager.swift b/VoiceInk/HotkeyManager.swift index 452fbb2..f544aae 100644 --- a/VoiceInk/HotkeyManager.swift +++ b/VoiceInk/HotkeyManager.swift @@ -30,6 +30,7 @@ class HotkeyManager: ObservableObject { isRightOptionKeyPressed = false isFnKeyPressed = false isRightCommandKeyPressed = false + isRightShiftKeyPressed = false } setupKeyMonitors() } @@ -40,6 +41,7 @@ class HotkeyManager: ObservableObject { isRightOptionKeyPressed = false isFnKeyPressed = false isRightCommandKeyPressed = false + isRightShiftKeyPressed = false } } @@ -47,6 +49,7 @@ class HotkeyManager: ObservableObject { private var isRightOptionKeyPressed = false private var isFnKeyPressed = false private var isRightCommandKeyPressed = false + private var isRightShiftKeyPressed = false private var localKeyMonitor: Any? private var globalKeyMonitor: Any? private var visibilityTask: Task? @@ -59,12 +62,14 @@ class HotkeyManager: ObservableObject { case rightOption = "rightOption" case fn = "fn" case rightCommand = "rightCommand" + case rightShift = "rightShift" var displayName: String { switch self { case .rightOption: return "Right Option (⌥)" case .fn: return "Fn" case .rightCommand: return "Right Command (⌘)" + case .rightShift: return "Right Shift (⇧)" } } } @@ -281,6 +286,11 @@ class HotkeyManager: ObservableObject { keyState = event.modifierFlags.contains(.command) && event.keyCode == 0x36 guard keyState != isRightCommandKeyPressed else { return } isRightCommandKeyPressed = keyState + + case .rightShift: + keyState = event.modifierFlags.contains(.shift) && event.keyCode == 0x3C + guard keyState != isRightShiftKeyPressed else { return } + isRightShiftKeyPressed = keyState } // Toggle recording based on key state diff --git a/VoiceInk/Views/RecordView.swift b/VoiceInk/Views/RecordView.swift index 8c3247b..5cdf216 100644 --- a/VoiceInk/Views/RecordView.swift +++ b/VoiceInk/Views/RecordView.swift @@ -231,6 +231,8 @@ struct RecordView: View { keyName = "Fn" case .rightCommand: keyName = "right Command (⌘)" + case .rightShift: + keyName = "right Shift (⇧)" } let activateDescription = hotkeyManager.isPushToTalkEnabled ? diff --git a/VoiceInk/Views/SettingsView.swift b/VoiceInk/Views/SettingsView.swift index a39d007..837765f 100644 --- a/VoiceInk/Views/SettingsView.swift +++ b/VoiceInk/Views/SettingsView.swift @@ -204,6 +204,8 @@ struct SettingsView: View { return "Using Function (Fn) key to quickly start recording. Release to stop." case .rightCommand: return "Using Right Command (⌘) key to quickly start recording. Release to stop." + case .rightShift: + return "Using Right Shift (⇧) key to quickly start recording. Release to stop." } } } @@ -306,6 +308,7 @@ struct PushToTalkKeySelector: View { case .rightOption: return "⌥" case .fn: return "Fn" case .rightCommand: return "⌘" + case .rightShift: return "⇧" } } @@ -314,6 +317,7 @@ struct PushToTalkKeySelector: View { case .rightOption: return "Right Option" case .fn: return "Function" case .rightCommand: return "Right Command" + case .rightShift: return "Right Shift" } } }