KeyDown事件和AltGr

时间:2016-09-13 10:50:27

标签: wpf keydown

  

如何检测Alt Gr按键?

我将KeyDown事件附加到WPF窗口。

当我按 Alt Gr 时,Key对象中的KeyEventArg参数等于LeftCtrl

当我检查Keyboard.IsKeyDownKeyboard.Modifiers时,它始终会返回Control键。

如何检测AltGr按键?最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

你有没有试过这个:

void MainWindow_KeyDown(object sender, KeyEventArgs e) {
    if (e.Key == Key.RightAlt)
    {
        // Do something
    } }

如果没有,请定义您已经尝试过的内容。

答案 1 :(得分:0)

看起来这篇文章回答了你的问题:

How to distinguish between multiple key combination in wpf/c#

具体来说,这段代码就是你如何看待按AltGr键:

private void WindowKeyDown(object sender, KeyEventArgs e)
{
    var alt = e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Alt);
    var ctrl = e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Control);
    var altGr = alt & ctrl;
    var shift = e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Shift);
}

这是因为Alt GR注册为" ALT + LEFT CTRL"通过Windows

答案 2 :(得分:0)

我找到了解决问题的方法。 /etc/portage/somethingAltGr组件处理。

我将Menu事件更改为KeyDown,所以现在我正确地抓住了KeyUp