TASK 20 step 1: global hotkeys F1-F9 (scenes, stream, mutes, TRAX)
This commit is contained in:
@@ -352,6 +352,39 @@ public class MainViewModel : ViewModelBase
|
||||
_transition.Start(SelectedTransitionType, TransitionDurationMs, null);
|
||||
}
|
||||
|
||||
// ─── Global hotkeys (TASK 20) — dispatch a registered hotkey to its action ───
|
||||
|
||||
public void HandleHotkey(Services.HotkeyId id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case Services.HotkeyId.SceneStarting: TransitionToCanonical(SceneCatalog.Starting); break;
|
||||
case Services.HotkeyId.SceneLive: TransitionToCanonical(SceneCatalog.Live); break;
|
||||
case Services.HotkeyId.SceneBrb: TransitionToCanonical(SceneCatalog.Brb); break;
|
||||
case Services.HotkeyId.SceneChat: TransitionToCanonical(SceneCatalog.Chat); break;
|
||||
case Services.HotkeyId.SceneEnding: TransitionToCanonical(SceneCatalog.Ending); break;
|
||||
case Services.HotkeyId.StartStopStream:
|
||||
if (IsLive)
|
||||
{
|
||||
if (EndStreamCommand.CanExecute(null)) EndStreamCommand.Execute(null);
|
||||
}
|
||||
else if (StartStreamCommand.CanExecute(null))
|
||||
{
|
||||
StartStreamCommand.Execute(null);
|
||||
}
|
||||
break;
|
||||
case Services.HotkeyId.ToggleMicMute: ToggleMicMuteCommand.Execute(null); break;
|
||||
case Services.HotkeyId.ToggleGameMute: ToggleGameMuteCommand.Execute(null); break;
|
||||
case Services.HotkeyId.TraxPlayPause: TraxLeftClick(); break;
|
||||
}
|
||||
}
|
||||
|
||||
private void TransitionToCanonical(string name)
|
||||
{
|
||||
var scene = Scenes.FirstOrDefault(s => SceneCatalog.Is(s.Name, name));
|
||||
if (scene != null) TransitionToScene(scene);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Right-click-on-preview → "Show Webcam": offered when the active scene has no
|
||||
/// webcam config (add one) or hides it (unhide — keeps the config row).
|
||||
|
||||
Reference in New Issue
Block a user