KeyPress e KeyRelease
Os eventos do X11 para uma tecla descendo e subindo, que entregam um número de tecla e deixam o cliente descobrir sozinho o que ele significava.
Um KeyPress traz o keycode, o estado dos modificadores (Shift, Control, Mod1 e assim por diante), um timestamp, as coordenadas do ponteiro e a janela envolvida. Ele vai para a janela que tem o foco do teclado, ou para a subjanela sob o ponteiro, se esta estiver dentro da janela focada, e só se ela tiver selecionado KeyPressMask. O servidor não traduz nada. O cliente converte keycode e estado em keysym e texto por conta própria, normalmente com XLookupString ou, no caso de métodos de entrada, XmbLookupString.
O autorepeat costuma enviar pares KeyRelease e KeyPress com timestamps idênticos, então um programa que quisesse distinguir tecla segurada de toques rápidos tinha de comparar tempos — até o XKB trazer o autorepeat detectável. Fazer toda a interpretação no cliente também explica por que um programa pode continuar digitando no layout antigo depois que todo o resto já mudou.