which the key was typed.
.timestamp gives a timestamp (in
milliseconds) for the keystroke. */
+ multibyte_char_keystroke, /* The multibye char code is in .code,
+ perhaps with modifiers applied.
+ The others are the same as
+ ascii_keystroke. This type of event
+ is generated only when we are using
+ XIM on X window. */
non_ascii_keystroke, /* .code is a number identifying the
function key. A code N represents
a key whose name is
selection_clear_event, /* Another X client cleared our selection. */
buffer_switch_event, /* A process filter has switched buffers. */
delete_window_event, /* An X client said "delete this window". */
- menu_bar_event, /* An event generated by the menu bar.
+ MENU_BAR_EVENT, /* An event generated by the menu bar.
The frame_or_window field's cdr holds the
Lisp-level event value.
(Only the toolkit version uses these.) */
the filenames of the dropped files.
.timestamp gives a timestamp (in
milliseconds) for the click. */
- user_signal, /* A user signal.
- .code is a number identifying it,
+ USER_SIGNAL_EVENT, /* A user signal.
+ code is a number identifying it,
index into lispy_user_signals. */
- /* Currently only returned when the mouse enters a tool-bar item that
- has a help string. Member frame_or_window of the input_event is
- a cons cell whose car is the tool-bar's frame and whose cdr is the
- help string. */
+ /* Help events. Member `frame_or_window' of the input_event is the
+ frame on which the event occurred, and member `arg' contains
+ the help to show. */
HELP_EVENT,
- TOOL_BAR_EVENT
+ /* An event from a tool-bar. Member `arg' of the input event
+ contains the tool-bar item selected. If `frame_or_window'
+ and `arg' are equal, this is a prefix event. */
+ TOOL_BAR_EVENT,
+
+ /* Queued from XTread_socket on FocusIn events. Translated into
+ `switch-frame' events in kbd_buffer_get_event, if necessary. */
+ FOCUS_IN_EVENT
};
/* If a struct input_event has a kind which is selection_request_event
struct input_event
{
-
/* What kind of event was this? */
int kind;
- /* For an ascii_keystroke, this is the character.
+ /* For an ascii_keystroke and multibyte_char_keystroke, this is the
+ character.
For a non_ascii_keystroke, this is the keysym code.
For a mouse event, this is the button number. */
/* In WindowsNT, for a mouse wheel event, this is the delta. */
/* This field is last so that struct selection_input_event
does not overlap with it. */
Lisp_Object frame_or_window;
+
+ /* Additional event argument. This is used for TOOL_BAR_EVENTs and
+ HELP_EVENTs and avoids calling Fcons during signal handling. */
+ Lisp_Object arg;
};
/* Called to read input events. */
/* Called when a frame's display becomes entirely up to date. */
extern void (*frame_up_to_date_hook) P_ ((struct frame *));
\f
-/* This is used in keyboard.c, to tell how many buttons we will need
- to track the positions of. */
-#define NUM_MOUSE_BUTTONS 15
/* Bits in the modifiers member of the input_event structure.
Note that reorder_modifiers assumes that the bits are in canonical