KeyDown 事件和 AltGr
KeyDown event and AltGr
How can I detect Alt Gr key press?
我有 KeyDown
事件附加到 WPF window。
当我按下 Alt Gr 时,KeyEventArg
对象中的 Key
参数等于 LeftCtrl
.
此外,当我检查 Keyboard.IsKeyDown
和 Keyboard.Modifiers
时,它总是 returns Control
键被按下。
如何检测 AltGr
按键?最好的方法是什么?
你试过了吗:
void MainWindow_KeyDown(object sender, KeyEventArgs e) {
if (e.Key == Key.RightAlt)
{
// Do something
} }
如果没有,请定义您已经尝试过的方法。
看起来像这样 post 回答了您的问题:
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 被 windows
注册为 "ALT + LEFT CTRL"
我找到了解决问题的方法。 AltGr
由 Menu
组件处理。
我将我的 KeyDown
事件更改为 KeyUp
,所以现在我可以正确捕捉 AltGr
。
How can I detect Alt Gr key press?
我有 KeyDown
事件附加到 WPF window。
当我按下 Alt Gr 时,KeyEventArg
对象中的 Key
参数等于 LeftCtrl
.
此外,当我检查 Keyboard.IsKeyDown
和 Keyboard.Modifiers
时,它总是 returns Control
键被按下。
如何检测 AltGr
按键?最好的方法是什么?
你试过了吗:
void MainWindow_KeyDown(object sender, KeyEventArgs e) {
if (e.Key == Key.RightAlt)
{
// Do something
} }
如果没有,请定义您已经尝试过的方法。
看起来像这样 post 回答了您的问题:
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 被 windows
注册为 "ALT + LEFT CTRL"我找到了解决问题的方法。 AltGr
由 Menu
组件处理。
我将我的 KeyDown
事件更改为 KeyUp
,所以现在我可以正确捕捉 AltGr
。