Depende: no console do Linux, o "módulo" responsável é o kernel. No X, o servidor X interpreta os eventos de teclado subjacentes e passa alguns deles para os clientes como eventos de pressionamento e liberação de teclas.
Isso é o máximo possível. Em um emulador de terminal, os aplicativos não lêem eventos (a menos que eles abram uma conexão especial ao console). Eles lêem caracteres .