KeyPress e KeyRelease
Gli eventi X11 per la pressione e il rilascio di un tasto, che consegnano un numero di tasto e lasciano al client il compito di capire che cosa significasse.
Un KeyPress contiene un keycode, lo stato dei modificatori (Shift, Control, Mod1 e così via), un timestamp, le coordinate del puntatore e la finestra coinvolta. Va alla finestra che ha il focus della tastiera, oppure alla sottofinestra sotto il puntatore se questa si trova dentro la finestra con il focus, e solo se la finestra ha selezionato KeyPressMask. Il server non traduce nulla: è il client a trasformare keycode e stato in un keysym e in testo, di solito con XLookupString oppure, per i metodi di input, XmbLookupString.
L'autorepeat invia normalmente coppie di KeyRelease e KeyPress con timestamp identici, quindi un programma che volesse distinguere un tasto tenuto premuto da battute rapide doveva confrontare i tempi — finché XKB non ha introdotto l'autorepeat rilevabile. Se tutta l'interpretazione avviene lato client, è anche perché un programma può continuare a scrivere con il vecchio layout quando tutti gli altri sono passati al nuovo.