Как вы читаете события KeyPress и ButtonPress в корневом окне в X11/Xlib?

Я пишу программу C, которая рисует в корневом окне. (Эта часть работает)

Теперь мне нужно принять ввод с клавиатуры и мыши в корневом окне (щелчки и нажатия клавиш в корневом окне). Я пробовал это:

XSelectInput(display, rootWindow, KeyPressMask);
XNextEvent(display, &event)

но KeyPress никогда не приходит. Я также пытался использовать ButtonPressMask, но это создает ошибку:

X Error of failed request:  BadAccess

Можно ли это сделать, не подключаясь ко всем входным данным? Я видел эту идею при переполнении стека: Определить выпуск ключа модификатора в корне X11 window, но, насколько я могу судить, он подключается ко всему вводу.

Я использую i3wm, поэтому у меня нет корневого окна по умолчанию. (если это поможет)


person Nicholas Ficara    schedule 24.04.2021    source источник