Коды клавиш-модификаторов для глобальной регистрации горячих клавиш
Я подключаю USB-пульт к своему программному обеспечению, и мне нужно зарегистрировать глобальные горячие клавиши для работы с ним. У меня есть код на месте, и он работает, как и ожидалось, но когда я подключил пульт, я обнаружил, что для работы с клавишами-модификаторами требуется определенный Alt или Right Alt.
Другими словами, сейчас у меня есть глобальная горячая клавиша, настроенная для принятия ALT + SHIFT + 0 для запуска определенной функции. Когда я подключил пульт, я понял, что для их сопоставления требуется определенный модификатор Key. Таким образом, мне нужно специально искать L-ALT + L-SHIFT + 0. Я искал эти сопоставления модификаторов, но не смог найти ничего, что говорит о том, что они есть. Мне удалось найти только модификаторы для общего ключа ALT, а не конкретный модификатор L-ALT.
В настоящее время мои ключи определены так:
public const int NOMOD = 0x0000; // No HotKey
public const int ALT = 0x0001; // ALT
public const int CTRL = 0x0002; // CTRL
public const int SHIFT = 0x0004; // SHIFT
public const int WIN = 0x0008; // WIN button
public const int WM_HOTKEY_MSG_ID = 0x0312; // Windows message ID for HotKey
Я пытался найти отображение для того, что код будет для L-Alt, L-CTRL и L-Shift, но безуспешно. Они не кажутся ASCII. Кто-нибудь знает правильные коды для них, или где я могу их найти? Благодарю.
2 ответа
Я набрал Keys
и нажмите F12, чтобы перейти к определению, и он оставил alt и правый alt в списке как LMenu
а также RMenu
со значениями 164 и 165. Помогает ли это вам или я совершенно не в том месте.
Дополнительные исследования показывают, что вы не можете отобразить глобальную горячую клавишу, используя определенные клавиши SHIFT, ALT и CTRL. Однако, после долгих экспериментов и перечитывания документации пульта, я обнаружил, что они не используют стандартное сопоставление ключей ASCII для своих ключей. Они отмечали верхнюю левую клавишу как 0, и считали поперек, а затем вниз до правой нижней клавиши. Таким образом, 0 был сопоставлен с ESC, а в моем случае 18 был сопоставлен с ключом 1.