Keyboard 确定VirtualKey是否是修改键?
在我的UWP应用程序中,我通过观察KeyDown事件来检测按键。这给了我一个虚拟游戏。但是我如何判断该键是否为修改键呢?这是我最好的选择。我确信它是不完整的,而且它肯定不是未来的证据。我希望有更好的答案。同时,其他人被邀请添加我错过的钥匙Keyboard 确定VirtualKey是否是修改键?,keyboard,uwp,Keyboard,Uwp,在我的UWP应用程序中,我通过观察KeyDown事件来检测按键。这给了我一个虚拟游戏。但是我如何判断该键是否为修改键呢?这是我最好的选择。我确信它是不完整的,而且它肯定不是未来的证据。我希望有更好的答案。同时,其他人被邀请添加我错过的钥匙 public static VirtualKey[] ModifierKeys = { VirtualKey.Shift, VirtualKey.LeftShift, VirtualKey.RightShift, VirtualKey.Left
public static VirtualKey[] ModifierKeys =
{
VirtualKey.Shift,
VirtualKey.LeftShift,
VirtualKey.RightShift,
VirtualKey.LeftWindows,
VirtualKey.RightWindows,
VirtualKey.Menu, // aka alt
VirtualKey.Control,
VirtualKey.LeftControl,
VirtualKey.RightControl,
VirtualKey.CapitalLock,
VirtualKey.NumberKeyLock,
VirtualKey.Insert,
};
public static bool IsModifierKey(this VirtualKey key) {
bool r = ModifierKeys.Contains(key);
return r;
}
您正在询问您认为解决方案的一部分是什么。你想解决什么问题?通常,当有人在
KeyDown
事件处理程序中请求修饰符时,他们已经选择了错误的解决方案。我想检测并响应按键。在修改键的情况下,我根本不想响应。对于文本键,我可以通过订阅CharacterReceived来获取文本。其他按键我不能用这种方式捕捉,所以我也订阅了KeyDown。在这里,我用特定的键做各种事情——不包括修改器。因此,我没有从这里结束使用信息,但我最终使用了数组,就像在KeyDown中一样,我根据所按下的修饰符进行不同的处理。为了添加更多的上下文,这是一个Windows前端,用于其他平台上已经存在的应用程序。因此,它有许多不同的处理程序用于各种按键。前端的工作只是找出按下了什么,并使用某种合理的映射将其转换为核心的按键类型。