Если еще нужно могу предложить свой вариант 4x4, вот только я его недавно на С перевел и в железе не проверял. Но на AlgBuilder работало. На всякий случай в архиве и то и другое...
Имеется возможность реакции как на нажатие "ReleaseKey" так и на отпускание "PressKey"
Клавиатура не поддерживает одновременного нажатие двух и более кнопок, код при этом
не изменяется. При нажатии конпок последовательно, первая из них выполняет роль
регистра (Shift), что позволяет расширить диапазон клавиатуры. также возможно
Shift "PressDuble" или отжатия с Shift "ReleaseDuble"
Подпрограмма может вызываться в рабочем цикле или в прерывании.