История изменений
Исправление Zubok, (текущая версия) :
С деревом, конечно, есть и профит, на первый взгляд
Хотя... в событиях XDeviceMotionEvent, XDeviceKeyEvent, XDeviceButtonEvent и др. из X Input Extension тоже в событии идет event window (поле event), но там, похоже, сообщается окно, над которым указатель находится. Надо проверить.
http://www.x.org/archive/X11R7.6/doc/inputproto/XIproto.txt
3.1 Button, Key, and Motion Events
DeviceKeyPress
DeviceKeyRelease
DeviceButtonPress,
DeviceButtonRelease
DeviceMotionNotify
device: CARD8
root, event: WINDOW
child: Window or None
same-screen: BOOL
root-x, root-y, event-x, event-y: INT16
detail: <see below>
state: SETofKEYBUTMASK
time: TIMESTAMP
These events are generated when a key, button, or valuator
logically changes state. The generation of these logical
changes may lag the physical changes, if device event
processing is frozen. Note that DeviceKeyPress and
DeviceKeyRelease are generated for all keys, even those mapped
to modifier bits. The “source” of the event is the window the
pointer is in. The window with respect to which the event is
normally reported is found by looking up the hierarchy
(starting with the source window) for the first window on which
any client has selected interest in the event. The actual
window used for reporting can be modified by active grabs and
by the focus window.The window the event is reported with
respect to is called the “event” window.
Исправление Zubok, :
С деревом, конечно, есть и профит, на первый взгляд
Хотя... в событиях XDeviceMotionEvent, XDeviceKeyEvent, XDeviceButtonEvent и др. из X Input Extension тоже в событии идет event window, но там, похоже, сообщается окно, над которым указатель находится. Надо проверить.
http://www.x.org/archive/X11R7.6/doc/inputproto/XIproto.txt
3.1 Button, Key, and Motion Events
DeviceKeyPress
DeviceKeyRelease
DeviceButtonPress,
DeviceButtonRelease
DeviceMotionNotify
device: CARD8
root, event: WINDOW
child: Window or None
same-screen: BOOL
root-x, root-y, event-x, event-y: INT16
detail: <see below>
state: SETofKEYBUTMASK
time: TIMESTAMP
These events are generated when a key, button, or valuator
logically changes state. The generation of these logical
changes may lag the physical changes, if device event
processing is frozen. Note that DeviceKeyPress and
DeviceKeyRelease are generated for all keys, even those mapped
to modifier bits. The “source” of the event is the window the
pointer is in. The window with respect to which the event is
normally reported is found by looking up the hierarchy
(starting with the source window) for the first window on which
any client has selected interest in the event. The actual
window used for reporting can be modified by active grabs and
by the focus window.The window the event is reported with
respect to is called the “event” window.
Исправление Zubok, :
С деревом, конечно, есть и профит, на первый взгляд
Хотя... в событиях XDeviceMotionEvent, XDeviceKeyEvent, XDeviceButtonEvent и др. из X Input Extension тоже в событии идет child window, но там, похоже, сообщается окно, над которым указатель находится. Надо проверить.
http://www.x.org/archive/X11R7.6/doc/inputproto/XIproto.txt
3.1 Button, Key, and Motion Events
DeviceKeyPress
DeviceKeyRelease
DeviceButtonPress,
DeviceButtonRelease
DeviceMotionNotify
device: CARD8
root, event: WINDOW
child: Window or None
same-screen: BOOL
root-x, root-y, event-x, event-y: INT16
detail: <see below>
state: SETofKEYBUTMASK
time: TIMESTAMP
These events are generated when a key, button, or valuator
logically changes state. The generation of these logical
changes may lag the physical changes, if device event
processing is frozen. Note that DeviceKeyPress and
DeviceKeyRelease are generated for all keys, even those mapped
to modifier bits. The “source” of the event is the window the
pointer is in. The window with respect to which the event is
normally reported is found by looking up the hierarchy
(starting with the source window) for the first window on which
any client has selected interest in the event. The actual
window used for reporting can be modified by active grabs and
by the focus window.The window the event is reported with
respect to is called the “event” window.
Исходная версия Zubok, :
С деревом, конечно, есть и профит, на первый взгляд
Хотя... в событиях XDeviceMotionEvent, XDeviceKeyEvent, XDeviceButtonEvent и др. из X Input Extension тоже в событии идет subwindow, но там, похоже, сообщается окно, над которым указатель находится. Надо проверить.
http://www.x.org/archive/X11R7.6/doc/inputproto/XIproto.txt
3.1 Button, Key, and Motion Events
DeviceKeyPress
DeviceKeyRelease
DeviceButtonPress,
DeviceButtonRelease
DeviceMotionNotify
device: CARD8
root, event: WINDOW
child: Window or None
same-screen: BOOL
root-x, root-y, event-x, event-y: INT16
detail: <see below>
state: SETofKEYBUTMASK
time: TIMESTAMP
These events are generated when a key, button, or valuator
logically changes state. The generation of these logical
changes may lag the physical changes, if device event
processing is frozen. Note that DeviceKeyPress and
DeviceKeyRelease are generated for all keys, even those mapped
to modifier bits. The “source” of the event is the window the
pointer is in. The window with respect to which the event is
normally reported is found by looking up the hierarchy
(starting with the source window) for the first window on which
any client has selected interest in the event. The actual
window used for reporting can be modified by active grabs and
by the focus window.The window the event is reported with
respect to is called the “event” window.