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 должен умереть.
|