I'm trying to write a unit test for a WPF component. How is it possible to simulate a key combination (not only 1 key)?
Simulating to press 1 key is easy:
var window = new Window();
var keyEventArgs = new KeyEventArgs(Keyboard.PrimaryDevice, Substitute.For<PresentationSource>(), 0, Key.E)
{
RoutedEvent = Keyboard.KeyDownEvent,
};
window.RaiseEvent(keyEventArgs);
Finding out if a specific key combination was used (e.g. Ctrl+Alt+Shift+E):
if(EventArgs.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Alt | ModifierKeys.Control | ModifierKeys.Shift)
&& EventArgs.Key == Key.E)
We see: It's possible to access the modifiers via EventArgs.KeyboardDevice.
But how can we set them?
I experimented a lot. I tried to mock the first argument of the KeyEventArgs constructor, but without success.
How is it possible to simulate a key combination?