| w00zy |
|
|
Темы:
20
Сообщения:
336
Участник с: 09 декабря 2008
|
Подскажите, как отловит евенты для всех окон. Допустим изменение фокуса. Если повесить отлов на root окно, то отлавливает конечно его само ( в случае с openbox рабочий стол), а вот окна приложений нет. Видимо надо в цикле вешать эвенты на все дочерние окна? И на все вновь открытые? Вот примерный код событий на root окно. int
init()
{
Display *dpy;
dpy = GDK_DISPLAY();
Window winRoot = GDK_ROOT_WINDOW();
XSetWindowAttributes a;
a.event_mask = FocusChangeMask | EnterWindowMask|LeaveWindowMask;
XSelectInput(dpy, winRoot, a.event_mask);
gdk_window_add_filter (NULL, (GdkFilterFunc) handle_xevent, NULL);
return 0;
}Если-б исходники простого примера найти, а то что-то нагуглилась каша какая-то. |
| h4tr3d |
|
|
Темы:
34
Сообщения:
2656
Участник с: 12 июля 2007
|
что бы обработать эвенты для всех окон, достаточно ловить их для рутового окна, согласно документации. У нас так и работало, но есть нюанс: когда появляется какой нить DE/WM там root-окно не есть то что запускает wm. Попробуй посмотреть xbindkeys как они там ловят клавиатурные эвенты.
systemd должен умереть.
|