Цитата(GoodNews @ Feb 21 2010, 23:50)

Я думал вначале использовать сравнение состояний порта клавиатуры. Т.е. при инициализации драйвера берём объявляем некоторую статическую переменную,
Все правильно вы мыслите. Только статических переменных нужно две. В одной переменной хранится предыдущее состояние матрицы кнопок, а в другой - устойчивое (после устранения дребезга) состояние матрицы кнопок. Для формирования кодов повтора используйте вторую переменную. XORите новое устойчивое состояние и старое. Если результат XORа равен нулю, но состояние отличается от того, где ни одна кнопка не нажата, то используете ветвление программы для формирования автоповтора. Автоповтор требует отсчета двух временн
ых интервалов. Первый интервал задает задержку начала автоповтора. Второй интервал формирует период автоповтора. Все просто как суп с лапшой