feat(desktop): add 'global' flag to voice hotkey binding (default false)
This commit is contained in:
@@ -20,6 +20,13 @@ export interface VoiceHotkeyBinding {
|
|||||||
shift: boolean;
|
shift: boolean;
|
||||||
alt: boolean;
|
alt: boolean;
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
|
/**
|
||||||
|
* When true, the hotkey is registered as an OS-level shortcut and fires
|
||||||
|
* even when the app isn't focused. When false (default) the binding only
|
||||||
|
* fires from the window's keydown listener — so e.g. setting "M" as mute
|
||||||
|
* doesn't break typing "m" everywhere else on the system.
|
||||||
|
*/
|
||||||
|
global: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface VoiceHotkeys {
|
export interface VoiceHotkeys {
|
||||||
@@ -36,46 +43,11 @@ export interface VoiceHotkeys {
|
|||||||
export type VoiceHotkeyKind = keyof VoiceHotkeys;
|
export type VoiceHotkeyKind = keyof VoiceHotkeys;
|
||||||
|
|
||||||
const DEFAULTS: VoiceHotkeys = {
|
const DEFAULTS: VoiceHotkeys = {
|
||||||
mute: {
|
mute: { key: 'KeyM', keyLabel: 'Ctrl+Shift+M', ctrl: true, shift: true, alt: false, enabled: false, global: false },
|
||||||
key: 'KeyM',
|
deafen: { key: 'KeyD', keyLabel: 'Ctrl+Shift+D', ctrl: true, shift: true, alt: false, enabled: false, global: false },
|
||||||
keyLabel: 'Ctrl+Shift+M',
|
hangup: { key: 'KeyH', keyLabel: 'Ctrl+Shift+H', ctrl: true, shift: true, alt: false, enabled: false, global: false },
|
||||||
ctrl: true,
|
screenShare: { key: 'KeyE', keyLabel: 'Ctrl+Shift+E', ctrl: true, shift: true, alt: false, enabled: false, global: false },
|
||||||
shift: true,
|
video: { key: 'KeyV', keyLabel: 'Ctrl+Shift+V', ctrl: true, shift: true, alt: false, enabled: false, global: false },
|
||||||
alt: false,
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
deafen: {
|
|
||||||
key: 'KeyD',
|
|
||||||
keyLabel: 'Ctrl+Shift+D',
|
|
||||||
ctrl: true,
|
|
||||||
shift: true,
|
|
||||||
alt: false,
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
hangup: {
|
|
||||||
key: 'KeyH',
|
|
||||||
keyLabel: 'Ctrl+Shift+H',
|
|
||||||
ctrl: true,
|
|
||||||
shift: true,
|
|
||||||
alt: false,
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
screenShare: {
|
|
||||||
key: 'KeyE',
|
|
||||||
keyLabel: 'Ctrl+Shift+E',
|
|
||||||
ctrl: true,
|
|
||||||
shift: true,
|
|
||||||
alt: false,
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
video: {
|
|
||||||
key: 'KeyV',
|
|
||||||
keyLabel: 'Ctrl+Shift+V',
|
|
||||||
ctrl: true,
|
|
||||||
shift: true,
|
|
||||||
alt: false,
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
type Listener = (s: VoiceHotkeys) => void;
|
type Listener = (s: VoiceHotkeys) => void;
|
||||||
@@ -93,6 +65,7 @@ function validateBinding(raw: unknown, fallback: VoiceHotkeyBinding): VoiceHotke
|
|||||||
shift: typeof b.shift === 'boolean' ? b.shift : fallback.shift,
|
shift: typeof b.shift === 'boolean' ? b.shift : fallback.shift,
|
||||||
alt: typeof b.alt === 'boolean' ? b.alt : fallback.alt,
|
alt: typeof b.alt === 'boolean' ? b.alt : fallback.alt,
|
||||||
enabled: typeof b.enabled === 'boolean' ? b.enabled : fallback.enabled,
|
enabled: typeof b.enabled === 'boolean' ? b.enabled : fallback.enabled,
|
||||||
|
global: typeof b.global === 'boolean' ? b.global : fallback.global,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user