Search code examples
c#.netxamluwpwindows-runtime

Detect if Modifier Key is Pressed in KeyRoutedEventArgs Event


I have the following code:

public void tbSpeed_KeyDown(object sender, KeyRoutedEventArgs e)
{
    e.Handled = !((e.Key >= 48 && e.Key <= 57) || (e.Key >= 96 && e.Key <= 105) || (e.Key == 109) || (e.Key == 189));
}

Is there any way to detect if any modifier key like shift is being pressed ?


Solution

  • Use GetKeyState. e.g.

    var state = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift);
    return (state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
    

    Note: For Alt, you would use VirtualKey.Menu.