1. Последовательности нулей быть не может 2.

1. Последовательности нулей быть не может
2. Keyboard Scan Codes: Set 2
3. Для анализа имеем следующий алгоритм:


-- а) проверка 1-го байта на коды 0xE0 (спецклавиша), 0xF0 (BREAK code)
-- б) если 1-ый байт 0xE0, то проверяем 2-ой байт на код 0xF0 (BREAK code)
-- в) если 2-ой байт 0xF0, то по 3-ему байту определяем, какая из спецклавиш была отпущена
-- г) если 2-ой байт не 0xF0, то по 2-ому байту определяем , какая из спецклавиш была нажата
-- д) если 1-ый байт 0xF0, то по по 2-ому байту определяем , какая из клавиш была отпущена
-- е) если 1-ый байт не 0xE0 и не 0xF0, то по 1-ому байту определяем , какая из клавиш была нажата
Далее цикл повторяется для остальных байт. Единственное, что немного смущает, - коды для клавишы PAUSE - надо будет еще покопаться в доке (возможно придется встраивать дополнительную проверку).