added support for right shift key

This commit is contained in:
Beingpax 2025-03-12 09:06:14 +05:45
parent a7bd81e387
commit f439911a8d
3 changed files with 16 additions and 0 deletions

View File

@ -30,6 +30,7 @@ class HotkeyManager: ObservableObject {
isRightOptionKeyPressed = false isRightOptionKeyPressed = false
isFnKeyPressed = false isFnKeyPressed = false
isRightCommandKeyPressed = false isRightCommandKeyPressed = false
isRightShiftKeyPressed = false
} }
setupKeyMonitors() setupKeyMonitors()
} }
@ -40,6 +41,7 @@ class HotkeyManager: ObservableObject {
isRightOptionKeyPressed = false isRightOptionKeyPressed = false
isFnKeyPressed = false isFnKeyPressed = false
isRightCommandKeyPressed = false isRightCommandKeyPressed = false
isRightShiftKeyPressed = false
} }
} }
@ -47,6 +49,7 @@ class HotkeyManager: ObservableObject {
private var isRightOptionKeyPressed = false private var isRightOptionKeyPressed = false
private var isFnKeyPressed = false private var isFnKeyPressed = false
private var isRightCommandKeyPressed = false private var isRightCommandKeyPressed = false
private var isRightShiftKeyPressed = false
private var localKeyMonitor: Any? private var localKeyMonitor: Any?
private var globalKeyMonitor: Any? private var globalKeyMonitor: Any?
private var visibilityTask: Task<Void, Never>? private var visibilityTask: Task<Void, Never>?
@ -59,12 +62,14 @@ class HotkeyManager: ObservableObject {
case rightOption = "rightOption" case rightOption = "rightOption"
case fn = "fn" case fn = "fn"
case rightCommand = "rightCommand" case rightCommand = "rightCommand"
case rightShift = "rightShift"
var displayName: String { var displayName: String {
switch self { switch self {
case .rightOption: return "Right Option (⌥)" case .rightOption: return "Right Option (⌥)"
case .fn: return "Fn" case .fn: return "Fn"
case .rightCommand: return "Right Command (⌘)" 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 keyState = event.modifierFlags.contains(.command) && event.keyCode == 0x36
guard keyState != isRightCommandKeyPressed else { return } guard keyState != isRightCommandKeyPressed else { return }
isRightCommandKeyPressed = keyState 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 // Toggle recording based on key state

View File

@ -231,6 +231,8 @@ struct RecordView: View {
keyName = "Fn" keyName = "Fn"
case .rightCommand: case .rightCommand:
keyName = "right Command (⌘)" keyName = "right Command (⌘)"
case .rightShift:
keyName = "right Shift (⇧)"
} }
let activateDescription = hotkeyManager.isPushToTalkEnabled ? let activateDescription = hotkeyManager.isPushToTalkEnabled ?

View File

@ -204,6 +204,8 @@ struct SettingsView: View {
return "Using Function (Fn) key to quickly start recording. Release to stop." return "Using Function (Fn) key to quickly start recording. Release to stop."
case .rightCommand: case .rightCommand:
return "Using Right Command (⌘) key to quickly start recording. Release to stop." 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 .rightOption: return ""
case .fn: return "Fn" case .fn: return "Fn"
case .rightCommand: return "" case .rightCommand: return ""
case .rightShift: return ""
} }
} }
@ -314,6 +317,7 @@ struct PushToTalkKeySelector: View {
case .rightOption: return "Right Option" case .rightOption: return "Right Option"
case .fn: return "Function" case .fn: return "Function"
case .rightCommand: return "Right Command" case .rightCommand: return "Right Command"
case .rightShift: return "Right Shift"
} }
} }
} }