Коды клавиш-модификаторов для глобальной регистрации горячих клавиш

Я подключаю 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.

Другие вопросы по тегам