Когда пользователь нажимает клавишу клавиатуры, программа получает событие KeyPress. Сервер также может послать событие KeyRelease, когда клавиша отпускается, но это справедливо не для всех типов компьютеров.
Оба этих события сопровождаются структурой типа XKeyEvent. Ее поле keycode содержит код нажатой клавиши, а поле state - состояние клавиш-модификаторов и кнопок мыши. Модификаторами называются такие клавиши, как Shift, Ctrl, Caps Look. Кроме этого, X предусматривает наличие дополнительных модификаторов, которые обозначаются Mod1, . . ., Mod5. Каждой нажатой клавише-модификатору и кнопке мыши соответствует флаг в поле state. Клавиши и соответствующие им флаги приведены в таблице 1.2.8. приложения 1.