\f
/* Miscellanea. */
+struct glyph;
+struct frame;
+
/* If nonzero, send all terminal output characters to this stream also. */
extern FILE *termscript;
\f
/* Text display hooks. */
-extern void (*cursor_to_hook) P_ ((int, int));
+extern void (*cursor_to_hook) P_ ((int vpos, int hpos));
extern void (*raw_cursor_to_hook) P_ ((int, int));
extern void (*clear_to_end_hook) P_ ((void));
extern void (*ins_del_lines_hook) P_ ((int, int));
-extern void (*change_line_highlight_hook) P_ ((int, int, int));
+extern void (*change_line_highlight_hook) P_ ((int, int, int, int));
extern void (*reassert_line_highlight_hook) P_ ((int, int));
-extern void (*insert_glyphs_hook) P_ ((GLYPH *, int));
-extern void (*write_glyphs_hook) P_ ((GLYPH *, int));
+extern void (*insert_glyphs_hook) P_ ((struct glyph *s, int n));
+extern void (*write_glyphs_hook) P_ ((struct glyph *s, int n));
extern void (*delete_glyphs_hook) P_ ((int));
extern void (*ring_bell_hook) P_ ((void));
scroll_bar_handle,
scroll_bar_below_handle,
scroll_bar_up_arrow,
- scroll_bar_down_arrow
+ scroll_bar_down_arrow,
+ scroll_bar_to_top,
+ scroll_bar_to_bottom,
+ scroll_bar_end_scroll,
+ scroll_bar_move_ratio
};
/* Return the current position of the mouse.
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
the wheel event occurred in.
.timestamp gives a timestamp (in
milliseconds) for the wheel event. */
+ language_change_event, /* A language_change event is generated
+ on WINDOWSNT when the keyboard layout
+ or input language is changed by the
+ user. */
#endif
scroll_bar_click, /* .code gives the number of the mouse button
that was clicked.
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.) */
iconify_event, /* An X client iconified this window. */
deiconify_event, /* An X client deiconified this window. */
- menu_bar_activate_event, /* A button press in the menu bar
+ menu_bar_activate_event, /* A button press in the menu bar
(toolkit version only). */
- drag_n_drop /* A drag-n-drop event is generated when
+ drag_n_drop, /* A drag-n-drop event is generated when
files selected outside of Emacs are dropped
onto an Emacs window.
Currently used only on Windows NT.
the filenames of the dropped files.
.timestamp gives a timestamp (in
milliseconds) for the click. */
+ USER_SIGNAL_EVENT, /* A user signal.
+ code is a number identifying it,
+ index into lispy_user_signals. */
+
+ /* 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,
+
+ /* 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 (5)
/* Bits in the modifiers member of the input_event structure.
Note that reorder_modifiers assumes that the bits are in canonical