|
-
Selected by:
-
:focus-change.
:focus-in
and :focus-out
events are generated when the input focus changes. All
:focus-out events caused by a window :unmap are
generated after any
:unmap-notify event, but the ordering of :focus-out
with respect to generated
:enter-notify,
:leave-notify,
:visibility-notify, and :expose events is not
constrained.
-
window, event-window
-
Type window.
For
:focus-in, the new input focus window. For
:focus-out, the previous input focus window.
-
mode
-
Type (member :normal :while-grabbed :grab :ungrab).
Events generated by
set-input-focus when the keyboard is not grabbed have
mode :normal. Events generated by
set-input-focus when the keyboard is grabbed have
mode :while-grabbed. Events generated when a keyboard
grab activates have mode :grab, and events generated
when a keyboard grab deactivates have mode :ungrab.
-
kind
-
Type (member :ancestor :virtual :inferior :nonlinear
:nonlinear-virtual :pointer :pointer-root :none). When
the focus moves from window A to window B, and A is an
inferior of B, with the pointer in window P:
-
:focus-out with kind :ancestor is
generated on A
-
:focus-out with kind :virtual is
generated on each window between A and B exclusive (in
that order)
-
:focus-in with kind :inferior is
generated on B
-
If P is an inferior of B, but P is not A or an inferior
of A or an ancestor of A,
:focus-in with kind :pointer is
generated on each window below B down to and including P
(in order)
When the focus moves from window A to window B, and B is an
inferior of A, with the pointer in window P:
-
If P is an inferior of A, but P is not A or an inferior
of B or an ancestor of B,
:focus-out with kind :pointer is
generated on each window from P up to but not including A
(in order)
-
:focus-out with kind :inferior is
generated on A
-
:focus-in with kind :virtual is
generated on each window between A and B exclusive (in
that order)
-
:focus-in with kind :ancestor is
generated on B
When the focus moves from window A to window B, with window
C being their least common ancestor, and with the pointer
in window P:
-
If P is an inferior of A,
:focus-out with kind :pointer is
generated on each window from P up to but not including A
(in order)
-
:focus-out with kind :nonlinear is
generated on A
-
:focus-out with kind :nonlinear-virtual
is generated on each window between A and C
exclusive (in that order)
-
:focus-in with kind :nonlinear-virtual
is generated on each window between C and B
exclusive (in that order)
-
:focus-in with kind :nonlinear is generated
on B
-
If P is an inferior of B,
:focus-in with kind :pointer is
generated on each window below B down to and including P
(in order)
When the focus moves from window A to window B, on
different screens, with the pointer in window P:
-
If P is an inferior of A,
:focus-out with kind :pointer is
generated on each window from P up to but not including A
(in order)
-
:focus-out with kind :nonlinear is
generated on A
-
If A is not a root window,
:focus-out with kind :nonlinear-virtual
is generated on each window above A up to and
including its root (in order)
-
If B is not a root window,
:focus-in with kind :nonlinear-virtual
is generated on each window from B's root down
to but not including B (in order)
-
:focus-in with kind :nonlinear is
generated on B
-
If P is an inferior of B,
:focus-in with kind :pointer is
generated on each window below B down to and including P
(in order)
When the focus moves from window A to :pointer-root
(or :none), with the pointer in window P:
-
If P is an inferior of A,
:focus-out with kind :pointer is
generated on each window from P up to but not including A
(in order)
-
:focus-out with kind :nonlinear is
generated on A
-
If A is not a root window,
:focus-out with kind :nonlinear-virtual
is generated on each window above A up to and
including its root (in order)
-
:focus-in with kind :pointer-root
(or :none) is generated on all root windows
-
If the new focus is :pointer-root,
:focus-in with kind :pointer is
generated on each window from P's root down to and
including P (in order)
When the focus moves from :pointer-root (or :none
) to window A, with the pointer in window P:
-
If the old focus is :pointer-root,
:focus-out with kind :pointer is
generated on each window from P up to and including
P's root (in order)
-
:focus-out with kind :pointer-root
(or :none) is generated on all root windows
-
If A is not a root window,
:focus-in with kind :nonlinear-virtual
is generated on each window from A's root down
to but not including A (in order)
-
:focus-in with kind :nonlinear is
generated on A
-
If P is an inferior of A,
:focus-in with kind :pointer is
generated on each window below A down to and including P
(in order)
When the focus moves from :pointer-root to :none
(or vice versa), with the pointer in window P:
-
If the old focus is :pointer-root,
:focus-out with kind :pointer is
generated on each window from P up to and including
P's root (in order)
-
:focus-out with kind :pointer-root
(or :none) is generated on all root windows
-
:focus-in with kind :none (or
:pointer-root) is generated on all root windows
-
If the new focus is :pointer-root,
:focus-in with kind :pointer is
generated on each window from P's root down to and
including P (in order)
When a keyboard grab activates (but before generating any
actual
:key-press event that activates the grab), with G
the grab-window for the grab and F the current
focus, then
:focus-in and :focus-out
events with mode :grab are generated (as for
:normal above) as if the focus were to change from F
to G.
When a keyboard grab deactivates (but after generating any
actual :key-release event that deactivates the grab), with
G the grab-window for the grab and F the
current focus, then :focus-in
and :focus-out
events with mode :ungrab are generated (as for
:normal above) as if the focus were to change from G
to F.
|