diff --git a/src/cascadia/TerminalApp/AppActionHandlers.cpp b/src/cascadia/TerminalApp/AppActionHandlers.cpp index df8a55009..7da1daa6f 100644 --- a/src/cascadia/TerminalApp/AppActionHandlers.cpp +++ b/src/cascadia/TerminalApp/AppActionHandlers.cpp @@ -551,4 +551,15 @@ namespace winrt::TerminalApp::implementation actionArgs.Handled(true); } } + + void TerminalPage::_HandleBreakIntoDebugger(const IInspectable& /*sender*/, + const ActionEventArgs& actionArgs) + { + if (_settings.GlobalSettings().DebugFeaturesEnabled()) + { + actionArgs.Handled(true); + DebugBreak(); + } + } + } diff --git a/src/cascadia/TerminalApp/ShortcutActionDispatch.cpp b/src/cascadia/TerminalApp/ShortcutActionDispatch.cpp index e3e045bce..80a7d9aea 100644 --- a/src/cascadia/TerminalApp/ShortcutActionDispatch.cpp +++ b/src/cascadia/TerminalApp/ShortcutActionDispatch.cpp @@ -242,6 +242,11 @@ namespace winrt::TerminalApp::implementation _TabSearchHandlers(*this, eventArgs); break; } + case ShortcutAction::BreakIntoDebugger: + { + _BreakIntoDebuggerHandlers(*this, eventArgs); + break; + } default: return false; } diff --git a/src/cascadia/TerminalApp/ShortcutActionDispatch.h b/src/cascadia/TerminalApp/ShortcutActionDispatch.h index 40b8bdf67..60770a48e 100644 --- a/src/cascadia/TerminalApp/ShortcutActionDispatch.h +++ b/src/cascadia/TerminalApp/ShortcutActionDispatch.h @@ -62,6 +62,7 @@ namespace winrt::TerminalApp::implementation TYPED_EVENT(CloseTabsAfter, TerminalApp::ShortcutActionDispatch, Microsoft::Terminal::Settings::Model::ActionEventArgs); TYPED_EVENT(TabSearch, TerminalApp::ShortcutActionDispatch, Microsoft::Terminal::Settings::Model::ActionEventArgs); TYPED_EVENT(MoveTab, TerminalApp::ShortcutActionDispatch, Microsoft::Terminal::Settings::Model::ActionEventArgs); + TYPED_EVENT(BreakIntoDebugger, TerminalApp::ShortcutActionDispatch, Microsoft::Terminal::Settings::Model::ActionEventArgs); // clang-format on private: diff --git a/src/cascadia/TerminalApp/ShortcutActionDispatch.idl b/src/cascadia/TerminalApp/ShortcutActionDispatch.idl index ef84a58d7..2f9e7ccea 100644 --- a/src/cascadia/TerminalApp/ShortcutActionDispatch.idl +++ b/src/cascadia/TerminalApp/ShortcutActionDispatch.idl @@ -48,5 +48,6 @@ namespace TerminalApp event Windows.Foundation.TypedEventHandler CloseTabsAfter; event Windows.Foundation.TypedEventHandler TabSearch; event Windows.Foundation.TypedEventHandler MoveTab; + event Windows.Foundation.TypedEventHandler BreakIntoDebugger; } } diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 0bd06ac43..eab3929e1 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -929,6 +929,7 @@ namespace winrt::TerminalApp::implementation _actionDispatch->CloseTabsAfter({ this, &TerminalPage::_HandleCloseTabsAfter }); _actionDispatch->TabSearch({ this, &TerminalPage::_HandleOpenTabSearch }); _actionDispatch->MoveTab({ this, &TerminalPage::_HandleMoveTab }); + _actionDispatch->BreakIntoDebugger({ this, &TerminalPage::_HandleBreakIntoDebugger }); } // Method Description: diff --git a/src/cascadia/TerminalApp/TerminalPage.h b/src/cascadia/TerminalApp/TerminalPage.h index 7545f0c01..e24ee8710 100644 --- a/src/cascadia/TerminalApp/TerminalPage.h +++ b/src/cascadia/TerminalApp/TerminalPage.h @@ -288,6 +288,7 @@ namespace winrt::TerminalApp::implementation void _HandleCloseTabsAfter(const IInspectable& sender, const Microsoft::Terminal::Settings::Model::ActionEventArgs& args); void _HandleOpenTabSearch(const IInspectable& sender, const Microsoft::Terminal::Settings::Model::ActionEventArgs& args); void _HandleMoveTab(const IInspectable& sender, const Microsoft::Terminal::Settings::Model::ActionEventArgs& args); + void _HandleBreakIntoDebugger(const IInspectable& sender, const Microsoft::Terminal::Settings::Model::ActionEventArgs& args); // Make sure to hook new actions up in _RegisterActionCallbacks! #pragma endregion diff --git a/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp b/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp index 97341ba58..d4262276b 100644 --- a/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp +++ b/src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp @@ -47,6 +47,7 @@ static constexpr std::string_view ToggleFullscreenKey{ "toggleFullscreen" }; static constexpr std::string_view TogglePaneZoomKey{ "togglePaneZoom" }; static constexpr std::string_view ToggleRetroEffectKey{ "toggleRetroEffect" }; static constexpr std::string_view MoveTabKey{ "moveTab" }; +static constexpr std::string_view BreakIntoDebuggerKey{ "breakIntoDebugger" }; static constexpr std::string_view ActionKey{ "action" }; @@ -106,6 +107,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation { TogglePaneZoomKey, ShortcutAction::TogglePaneZoom }, { ToggleRetroEffectKey, ShortcutAction::ToggleRetroEffect }, { MoveTabKey, ShortcutAction::MoveTab }, + { BreakIntoDebuggerKey, ShortcutAction::BreakIntoDebugger }, { UnboundKey, ShortcutAction::Invalid }, }; @@ -303,6 +305,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation { ShortcutAction::TogglePaneZoom, RS_(L"TogglePaneZoomCommandKey") }, { ShortcutAction::ToggleRetroEffect, RS_(L"ToggleRetroEffectCommandKey") }, { ShortcutAction::MoveTab, L"" }, // Intentionally omitted, must be generated by GenerateName + { ShortcutAction::BreakIntoDebugger, RS_(L"BreakIntoDebuggerCommandKey") }, }; }(); diff --git a/src/cascadia/TerminalSettingsModel/KeyMapping.idl b/src/cascadia/TerminalSettingsModel/KeyMapping.idl index 21c9534f5..a334ce3e9 100644 --- a/src/cascadia/TerminalSettingsModel/KeyMapping.idl +++ b/src/cascadia/TerminalSettingsModel/KeyMapping.idl @@ -49,7 +49,8 @@ namespace Microsoft.Terminal.Settings.Model CloseOtherTabs, CloseTabsAfter, TabSearch, - MoveTab + MoveTab, + BreakIntoDebugger }; [default_interface] runtimeclass ActionAndArgs { diff --git a/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw b/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw index 414eb1b17..5c7330a57 100644 --- a/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw +++ b/src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw @@ -1,17 +1,17 @@  - @@ -348,4 +348,7 @@ Toggle retro terminal effect + + Break into the debugger +