Цитата Сообщение от Patron Посмотреть сообщение
Я в своём эмуляторе терминала разбираю скан-коды клавиш:
case WM_SYSKEYDOWN:
case WM_KEYDOWN:
У главной клавиши <Enter> код 28, у <NumPadEnter> код 284.
Patron, в ранних версиях было также. Там в коде остались даже закомментированные места с использованием WM_KEYDOWN и WM_KEYUP. Но с УКНЦ тут есть некоторые моменты. Клавиатура передает как коды отжатия, так и нажатия, тем более скэн-коды, преобразование в КОИ-8 уже производится в драйвере клавиатуры в системном ПЗУ. Соответственно, если эмулятор получил по WM_KEYDOWN код клавиши, потом пропал фокус ввода, а клавишу отжали, то уже события WM_KEYUP не придет. Сама клавиша западёт в автоповтор в драйвере системного ПЗУ. А при использовании GetKeyboardState при получении фокуса клавиша не будет нажата и клавиатура в эмуляторе уже получит код отжатия.
Так же в УКНЦ клавиатура работает в режиме опроса, по 64 мкс на каждую клавишу, всего 128 клавиш. Получил таблицу, установил виртуальную матрицу в УКНЦ, и особо думать не надо.
Если же эмулировать 15ИЭ-00-013, то да, здесь я согласен - использовать WM_KEYDOWN значительно удобнее. Т.к. 15ИЭ-00-013 всё-таки терминал, то и проблема удобной раскладки решается легко.