diff --git a/src/cascadia/TerminalApp/App.cpp b/src/cascadia/TerminalApp/App.cpp index 19f8a97cb31..f66e6c9d1bd 100644 --- a/src/cascadia/TerminalApp/App.cpp +++ b/src/cascadia/TerminalApp/App.cpp @@ -330,6 +330,7 @@ namespace winrt::TerminalApp::implementation bindings.NextTab([this]() { _SelectNextTab(true); }); bindings.PrevTab([this]() { _SelectNextTab(false); }); bindings.SwitchToTab([this](const auto index) { _SelectTab({ index }); }); + bindings.OpenSettings([this]() { _OpenSettings(); }); } // Method Description: @@ -658,6 +659,11 @@ namespace winrt::TerminalApp::implementation return _tabView.SelectedIndex(); } + void App::_OpenSettings() + { + LaunchSettings(); + } + // Method Description: // - Close the currently focused tab. Focus will move to the left, if possible. void App::_CloseFocusedTab() diff --git a/src/cascadia/TerminalApp/App.h b/src/cascadia/TerminalApp/App.h index b31f265571b..318090de58b 100644 --- a/src/cascadia/TerminalApp/App.h +++ b/src/cascadia/TerminalApp/App.h @@ -72,6 +72,8 @@ namespace winrt::TerminalApp::implementation void _CreateNewTabFlyout(); void _LoadSettings(); + void _OpenSettings(); + void _HookupKeyBindings(TerminalApp::AppKeyBindings bindings) noexcept; void _RegisterSettingsChange(); diff --git a/src/cascadia/TerminalApp/AppKeyBindings.cpp b/src/cascadia/TerminalApp/AppKeyBindings.cpp index 6bb25bace25..8d13dd905ce 100644 --- a/src/cascadia/TerminalApp/AppKeyBindings.cpp +++ b/src/cascadia/TerminalApp/AppKeyBindings.cpp @@ -38,6 +38,9 @@ namespace winrt::TerminalApp::implementation case ShortcutAction::NewTab: _NewTabHandlers(); return true; + case ShortcutAction::OpenSettings: + _OpenSettingsHandlers(); + return true; case ShortcutAction::NewTabProfile0: _NewTabWithProfileHandlers(0); @@ -143,6 +146,7 @@ namespace winrt::TerminalApp::implementation DEFINE_EVENT(AppKeyBindings, DecreaseFontSize, _DecreaseFontSizeHandlers, TerminalApp::DecreaseFontSizeEventArgs); DEFINE_EVENT(AppKeyBindings, ScrollUp, _ScrollUpHandlers, TerminalApp::ScrollUpEventArgs); DEFINE_EVENT(AppKeyBindings, ScrollDown, _ScrollDownHandlers, TerminalApp::ScrollDownEventArgs); + DEFINE_EVENT(AppKeyBindings, OpenSettings, _OpenSettingsHandlers, TerminalApp::OpenSettingsEventArgs); } diff --git a/src/cascadia/TerminalApp/AppKeyBindings.h b/src/cascadia/TerminalApp/AppKeyBindings.h index 800a72ea56d..ec9181a00b1 100644 --- a/src/cascadia/TerminalApp/AppKeyBindings.h +++ b/src/cascadia/TerminalApp/AppKeyBindings.h @@ -49,6 +49,7 @@ namespace winrt::TerminalApp::implementation DECLARE_EVENT(DecreaseFontSize, _DecreaseFontSizeHandlers, TerminalApp::DecreaseFontSizeEventArgs); DECLARE_EVENT(ScrollUp, _ScrollUpHandlers, TerminalApp::ScrollUpEventArgs); DECLARE_EVENT(ScrollDown, _ScrollDownHandlers, TerminalApp::ScrollDownEventArgs); + DECLARE_EVENT(OpenSettings, _OpenSettingsHandlers, TerminalApp::OpenSettingsEventArgs); private: std::unordered_map _keyShortcuts; diff --git a/src/cascadia/TerminalApp/AppKeyBindings.idl b/src/cascadia/TerminalApp/AppKeyBindings.idl index 19624284056..86ca5ca1109 100644 --- a/src/cascadia/TerminalApp/AppKeyBindings.idl +++ b/src/cascadia/TerminalApp/AppKeyBindings.idl @@ -36,7 +36,8 @@ namespace TerminalApp IncreaseFontSize, DecreaseFontSize, ScrollUp, - ScrollDown + ScrollDown, + OpenSettings }; delegate void CopyTextEventArgs(); @@ -53,6 +54,7 @@ namespace TerminalApp delegate void DecreaseFontSizeEventArgs(); delegate void ScrollUpEventArgs(); delegate void ScrollDownEventArgs(); + delegate void OpenSettingsEventArgs(); [default_interface] runtimeclass AppKeyBindings : Microsoft.Terminal.Settings.IKeyBindings @@ -75,5 +77,6 @@ namespace TerminalApp event DecreaseFontSizeEventArgs DecreaseFontSize; event ScrollUpEventArgs ScrollUp; event ScrollDownEventArgs ScrollDown; + event OpenSettingsEventArgs OpenSettings; } } diff --git a/src/cascadia/TerminalApp/CascadiaSettings.cpp b/src/cascadia/TerminalApp/CascadiaSettings.cpp index eceb32eb87e..85a73ea7f42 100644 --- a/src/cascadia/TerminalApp/CascadiaSettings.cpp +++ b/src/cascadia/TerminalApp/CascadiaSettings.cpp @@ -175,6 +175,9 @@ void CascadiaSettings::_CreateDefaultKeybindings() keyBindings.SetKeyBinding(ShortcutAction::CloseTab, KeyChord{ KeyModifiers::Ctrl, static_cast('W') }); + keyBindings.SetKeyBinding(ShortcutAction::OpenSettings, + KeyChord{ KeyModifiers::Ctrl, + VK_OEM_COMMA }); keyBindings.SetKeyBinding(ShortcutAction::NextTab, KeyChord{ KeyModifiers::Ctrl,