I don't think I need the TerminalPage.xaml change here, but the TabBase one feels unnecessarily hacky. That being said, there's no non-hack solution to this one.

This commit is contained in:
Mike Griese 2021-11-02 14:40:30 -05:00
parent 6da5d79d47
commit cb08108871
3 changed files with 24 additions and 0 deletions

View file

@ -250,5 +250,25 @@ namespace winrt::TerminalApp::implementation
tab->_RequestFocusActiveControlHandlers();
}
});
TabViewItem().KeyUp({ get_weak(), &TabBase::_KeyHandler });
}
void TabBase::_KeyHandler(Windows::Foundation::IInspectable const& /*sender*/,
Windows::UI::Xaml::Input::KeyRoutedEventArgs const& e)
{
const auto key = e.OriginalKey();
const auto scanCode = e.KeyStatus().ScanCode;
const auto coreWindow = CoreWindow::GetForCurrentThread();
const auto ctrlDown = WI_IsFlagSet(coreWindow.GetKeyState(VirtualKey::Control), CoreVirtualKeyStates::Down);
const auto altDown = WI_IsFlagSet(coreWindow.GetKeyState(VirtualKey::Menu), CoreVirtualKeyStates::Down);
const auto shiftDown = WI_IsFlagSet(coreWindow.GetKeyState(VirtualKey::Shift), CoreVirtualKeyStates::Down);
KeyChord kc{ ctrlDown, altDown, shiftDown, false, static_cast<int32_t>(key), static_cast<int32_t>(scanCode) };
if (const auto cmd{ _actionMap.GetActionByKeyChord(kc) })
{
_dispatch.DoAction(cmd.ActionAndArgs());
e.Handled(true);
}
}
}

View file

@ -63,6 +63,9 @@ namespace winrt::TerminalApp::implementation
winrt::fire_and_forget _UpdateSwitchToTabKeyChord();
void _UpdateToolTip();
void _KeyHandler(Windows::Foundation::IInspectable const& /*sender*/,
Windows::UI::Xaml::Input::KeyRoutedEventArgs const& e);
friend class ::TerminalAppLocalTests::TabTests;
};
}

View file

@ -10,6 +10,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
Background="Transparent"
KeyDown="_KeyDownHandler"
mc:Ignorable="d">
<Grid x:Name="Root"