【问题标题】:Determine if a VirtualKey is a modifier key?确定 VirtualKey 是否是修饰键?
【发布时间】:2017-05-17 09:24:29
【问题描述】:

在我的 UWP 应用中,我通过观察 KeyDown 事件来检测按键。这给了我一个 VirtualKey。但是如何判断这个键是否是修饰键呢?

【问题讨论】:

  • 您正在询问您认为哪些是您的解决方案的一部分。你想解决什么问题?通常情况下,当有人在 KeyDown 事件处理程序中请求修饰符时,他们已经选择了错误的解决方案。
  • 我想检测并响应按键。对于修饰键,我根本不想回应。对于文本键,我可以通过订阅 CharacterReceived 来获取文本。其他按键我无法以这种方式捕获,所以我也订阅了 KeyDown。在那里,我用特定的键做各种事情——不包括修饰符。所以我并没有结束使用这里的信息,但我最终使用了数组,就像在 KeyDown 中一样,我根据按下的修饰符以不同的方式处理它。
  • 添加更多上下文 - 这是其他平台上已经存在的应用程序的 Windows 前端。所以它有许多不同的处理程序来处理各种按键。前端的工作只是找出按下了什么,并使用某种合理的映射将其转换为核心的 KeyPress 类型。

标签: keyboard uwp


【解决方案1】:

这是我最好的。我敢肯定它是不完整的,而且绝对不是面向未来的。我希望有更好的答案。同时,邀请其他人添加我错过的密钥。

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;
}

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多