В Windows, как мы преобразуем код виртуальной клавиши в сдвинутый символ? - PullRequest
1 голос
/ 05 октября 2010

Я посмотрел на MapVirtualKey () и ToAscii ().

MapVirtualKey () дает мне только неперемещенный символ.ToAscii () работает только для vk-кодов, которые переводят в значения ASCII.

Мне нужно определить, например, «Ctrl + Shift + 3» при активном Ctrl, активный Shift и «#».

Есть какие-нибудь подсказки?

Ответы [ 2 ]

3 голосов
/ 05 октября 2010

Вот как я наконец это сделал:

case WM_KEYDOWN:
        GetKeyboardState(kbs);
        if(kbs[VK_CONTROL] & 0x00000080)
        {
            kbs[VK_CONTROL] &= 0x0000007f;
            ::ToAscii(p_wParam, ::MapVirtualKey(p_wParam, MAPVK_VK_TO_VSC), kbs, ch, 0);
            kbs[VK_CONTROL] |= 0x00000080;
        }
        else
            ::ToAscii(p_wParam, ::MapVirtualKey(p_wParam, MAPVK_VK_TO_VSC), kbs, ch, 0);

Затем я получаю состояния всех клавиш-модификаторов из kbs [].

2 голосов
/ 05 октября 2010

Вы можете использовать GetKeyState () для определения состояния ключа путем предоставления кода виртуальной клавиши.Смотрите также: GetKeyboardState () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...