2017-01-03 3 views
0

В моем приложении UWP я обнаруживаю нажатие клавиши, наблюдая событие KeyDown. Это дает мне VirtualKey. Но как я могу определить, является ли ключ ключом-модификатором?Определить, является ли VirtualKey ключ-модификатор?

+0

Вы спрашиваете, что, по вашему мнению, является частью вашего решения. Какую проблему ты пытаешься решить? Чаще всего, когда кто-то запрашивает модификаторы в обработчике событий KeyDown, они уже выбрали неправильное решение. – IInspectable

+0

Я хочу обнаружить и ответить на нажатия клавиш. В случае клавиш-модификаторов я вообще не хочу отвечать. В текстовых клавишах я могу получить текст, подписавшись на CharacterReceived. Другие нажатия клавиш я не могу записать таким образом, поэтому я также подписываюсь на KeyDown. Там я делаю разные вещи с определенными ключами - не включая модификаторы. Поэтому я не стал использовать эту информацию здесь, но я все же использую массив, как в KeyDown, я обрабатываю его по-разному в зависимости от того, какие модификаторы нажаты. –

+0

Чтобы добавить немного больше контекста - это внешний интерфейс Windows для приложения, которое уже существует на других платформах. Таким образом, он имеет множество различных обработчиков для различных нажатий клавиш. Задача переднего конца - просто понять, что было нажата, и использовать какое-то разумное сопоставление, чтобы преобразовать его в тип KeyPress ядра. –

ответ

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 –

 Смежные вопросы

  • Нет связанных вопросов^_^