Вот это вот:
Цитата Сообщение от andreil Посмотреть сообщение
1) опросить клавиатуру;
2) преобразовать HID-сканикоды в матрицу;
Весьма не много ресурсов съест, и делать это надо всего-то 5-10 раз в секунду, постоянно актуализируя массив эмуляции матрицы (например во время кадрового бланка когда есть время простоя)

Цитата Сообщение от andreil Посмотреть сообщение
3) выдать запрошенную строку из матрицы.
А вот это ровно 3 команды на ассемблере: считать сканкод (в контроллере на Атмеге измение сканкода на порте вводе генерит прерывание), из готовой таблицы (той самой что постоянно актуализируется на шагах 1-2) используя скан код как индекс прочитать ответ, выдать этот ответ на порт.
Все остальное время обрабатывать дисплей.

Контроллер по моей ссылке тоже обрабатывает клавиатуру (там же не только видеокарта, но полный терминал), при этом на частоте в 25МГц ему хватает времени еще и на VGA с полной эмуляцией VT100/52. Исходники на git есть по ссылке в статье.