Получаю скан-коды клавиатуры через прерывание BIOS int 16h, функцией 0:
Код:
uint8_t _asciiCode = 0;
uint8_t _scanCode = 0;
__asm
{
mov ah, 00h
int 16h
mov _asciiCode, al
mov _scanCode, ah
}
Экспериментально установлено, что приходят сканкоды из набора 1.
Однако выявился ряд странных особенностей:
- Все приходящие сканкоды однобайтовые. Даже если нажата клавиша, у которой в описании указан двухбайтовый сканкод(например Del).
- Не приходят сканкоды отпускание клавиш, только на нажатие.
- Не приходят сканкоды на нажатие клавиш-модификаторов.
- При нажатой клавише Alt при нажатии цифровых клавиш приходят совсем другие сканкоды. А при нажатии символьных клавиш не приходит никаких сканкодов.
Это всё по большей части можно пережить, за исключением последнего пункта. Я не могу ловить нажатия сочетаний Alt+символьная клавиша (например Alt-[). Подскажите пожалуйста, как можно решить эту проблему наиболее простым способом?