Windows 7, и я получаю только VK_SHIFT, а не варианты L / R
Что является объяснением того, почему это не работает так, как вы думаете, должно.За этим стоит древняя история.Контроллер клавиатуры был переработан для IBM AT, опять же для улучшенной клавиатуры.Он начал рассылать префиксы 0xe0 и 0xe1 для клавиш, которые были добавлены в раскладку клавиатуры.Как правые клавиши Ctrl и Alt.
Но на клавиатурах всегда было две клавиши Shift.Оригинальный IBM PC не считал их специальными ключами, они просто имеют другой код сканирования.Который был сохранен в более поздних обновлениях.Соответственно, вы не получаете флаги RI_KEY_E0 или E1 для них.Вы должны различать их по значению RAWKEYBOARD.MakeCode.Левая клавиша Shift имеет makecode 0x2a, правая клавиша 0x36.
Обратите внимание, что левая клавиша Ctrl и Alt также не имеют флагов.Они соответствуют соответствующим клавишам на старой раскладке клавиатуры ПК.Описание флагов в статье библиотеки MSDN не очень точное.