В моем приложении UWP я обнаруживаю нажатие клавиши, наблюдая событие KeyDown. Это дает мне VirtualKey. Но как я могу определить, является ли ключ ключом-модификатором?Определить, является ли VirtualKey ключ-модификатор?
0
A
ответ
0
Это лучшее, что у меня есть. Я уверен, что он неполный, и это определенно не доказательство будущего. Я надеюсь, что есть лучший ответ. Тем временем другим предлагается добавить ключи, которые я пропустил.
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;
}
+0
см. Также http://stackoverflow.com/a/36868943/1755 –
Вы спрашиваете, что, по вашему мнению, является частью вашего решения. Какую проблему ты пытаешься решить? Чаще всего, когда кто-то запрашивает модификаторы в обработчике событий KeyDown, они уже выбрали неправильное решение. – IInspectable
Я хочу обнаружить и ответить на нажатия клавиш. В случае клавиш-модификаторов я вообще не хочу отвечать. В текстовых клавишах я могу получить текст, подписавшись на CharacterReceived. Другие нажатия клавиш я не могу записать таким образом, поэтому я также подписываюсь на KeyDown. Там я делаю разные вещи с определенными ключами - не включая модификаторы. Поэтому я не стал использовать эту информацию здесь, но я все же использую массив, как в KeyDown, я обрабатываю его по-разному в зависимости от того, какие модификаторы нажаты. –
Чтобы добавить немного больше контекста - это внешний интерфейс Windows для приложения, которое уже существует на других платформах. Таким образом, он имеет множество различных обработчиков для различных нажатий клавиш. Задача переднего конца - просто понять, что было нажата, и использовать какое-то разумное сопоставление, чтобы преобразовать его в тип KeyPress ядра. –