diff options
author | Jim Blandy <jimb@redhat.com> | 1991-06-24 23:36:56 +0000 |
---|---|---|
committer | Jim Blandy <jimb@redhat.com> | 1991-06-24 23:36:56 +0000 |
commit | 24be696b9f229dfc1eaf5ab9f6506ed4b5a2ab34 (patch) | |
tree | 3d260fbee19336ceed8f26ae671fa3d27a842538 /src/termhooks.h | |
parent | 7be9c4f43cbdeb72ca1b6b3a3dff97c9b8b1a009 (diff) | |
download | emacs-24be696b9f229dfc1eaf5ab9f6506ed4b5a2ab34.tar.gz |
Initial revision
Diffstat (limited to 'src/termhooks.h')
-rw-r--r-- | src/termhooks.h | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/src/termhooks.h b/src/termhooks.h new file mode 100644 index 00000000000..aff95c7548d --- /dev/null +++ b/src/termhooks.h @@ -0,0 +1,147 @@ +/* Hooks by which low level terminal operations + can be made to call other routines. + Copyright (C) 1985, 1986 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 1, or (at your option) +any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + +extern int (*cursor_to_hook) (); +extern int (*raw_cursor_to_hook) (); + +extern int (*clear_to_end_hook) (); +extern int (*clear_screen_hook) (); +extern int (*clear_end_of_line_hook) (); + +extern int (*ins_del_lines_hook) (); + +extern int (*change_line_highlight_hook) (); +extern int (*reassert_line_highlight_hook) (); + +extern int (*insert_glyphs_hook) (); +extern int (*write_glyphs_hook) (); +extern int (*delete_glyphs_hook) (); + +extern int (*ring_bell_hook) (); + +extern int (*reset_terminal_modes_hook) (); +extern int (*set_terminal_modes_hook) (); +extern int (*update_begin_hook) (); +extern int (*update_end_hook) (); +extern int (*set_terminal_window_hook) (); + +extern int (*read_socket_hook) (); + +/* Hook for Emacs to call to tell the window-system-specific code to + enable/disable low-level tracking. The value of ENABLE tells the + window system event handler whether it should notice or ignore + subsequent mouse movement and mouse button releases. + + If this is 0, Emacs should assume that there is no mouse (or at + least no mouse tracking) available. + + If called with ENABLE non-zero, the window system event handler + should call set_pointer_loc with the new mouse co-ordinates + whenever the mouse moves, and enqueue a mouse button event for + button releases as well as button presses. + + If called with ENABLE zero, the window system event handler should + ignore mouse movement events, and not enqueue events for mouse + button releases. */ +extern int (*mouse_tracking_enable_hook) ( /* int ENABLE */ ); + +/* If nonzero, send all terminal output characters to this stream also. */ + +extern FILE *termscript; + +#ifdef XINT +/* Expedient hack: only provide the below definitions to files that + are prepared to handle lispy things. XINT is defined iff lisp.h + has been included in the file before this file. */ + +/* The keyboard input buffer is an array of these structures. Each one + represents some sort of input event - a keystroke, a mouse click, or + a window system event. These get turned into their lispy forms when + they are removed from the event queue. */ + +struct input_event { + + /* What kind of event was this? */ + enum { + no_event, /* nothing happened. This should never + actually appear in the event queue. */ + ascii_keystroke, /* The ASCII code is in .code. Note that + this includes meta-keys, and the modifiers + field of the event is unused. */ + non_ascii_keystroke, /* .code is a number identifying the + function key. A code N represents + a key whose name is + function_key_names[N]; function_key_names + is a table in keyboard.c to which you + should feel free to add missing keys. + .modifiers holds the state of the + modifier keys. */ + mouse_click, /* The button number is in .code. + .modifiers holds the state of the + modifier keys. + .x and .y give the mouse position, + in pixels, within the window. + .screen gives the screen the mouse + click occurred in. + .timestamp gives a timestamp (in + milliseconds) for the click. */ + scrollbar_click, /* .code gives the number of the mouse + button that was clicked. + .part is a lisp symbol indicating which + part of the scrollbar got clicked. This + indicates whether the scroll bar was + horizontal or vertical. + .modifiers gives the state of the + modifier keys. + .x gives the distance from the start + of the scroll bar of the click; .y gives + the total length of the scroll bar. + .screen gives the screen the click + should apply to. + .timestamp gives a timestamp (in + milliseconds) for the click. */ + screen_selected, /* The user has moved the focus to another + screen. + .screen is the screen that should become + selected at the next convenient time. */ + } kind; + + Lisp_Object code; + Lisp_Object part; + struct screen *screen; + int modifiers; /* See enum below for interpretation. */ + Lisp_Object x, y; + Lisp_Object timestamp; +}; + +/* Bits in the modifiers member of the input_event structure. */ +enum { + shift_modifier = 1, + ctrl_modifier = 2, + meta_modifier = 4, + up_modifier = 8, /* This only applies to mouse buttons. */ + last_modifier /* This should always be one more than the + highest modifier bit defined. */ +}; + +#define NUM_MODIFIER_COMBOS ((last_modifier-1) << 1) + +#endif |