elisp: Focus Events
20.7.9 Focus Events
-------------------
Window systems provide general ways for the user to control which window
gets keyboard input. This choice of window is called the “focus”. When
the user does something to switch between Emacs frames, that generates a
“focus event”. The normal definition of a focus event, in the global
keymap, is to select a new frame within Emacs, as the user would expect.
Input Focus, which also describes hooks related to focus events.
Focus events are represented in Lisp as lists that look like this:
(switch-frame NEW-FRAME)
where NEW-FRAME is the frame switched to.
Some X window managers are set up so that just moving the mouse into
a window is enough to set the focus there. Usually, there is no need
for a Lisp program to know about the focus change until some other kind
of input arrives. Emacs generates a focus event only when the user
actually types a keyboard key or presses a mouse button in the new
frame; just moving the mouse between frames does not generate a focus
event.
A focus event in the middle of a key sequence would garble the
sequence. So Emacs never generates a focus event in the middle of a key
sequence. If the user changes focus in the middle of a key
sequence—that is, after a prefix key—then Emacs reorders the events so
that the focus event comes either before or after the multi-event key
sequence, and not within it.