Mercurial > emacs
annotate src/termhooks.h @ 1287:02bd1ea07b17
* intervals.h: Declare temp_set_point.
author | Joseph Arceneaux <jla@gnu.org> |
---|---|
date | Thu, 01 Oct 1992 00:56:11 +0000 |
parents | 407100cee78a |
children | 540110352c0d |
rev | line source |
---|---|
296 | 1 /* Hooks by which low level terminal operations |
2 can be made to call other routines. | |
648 | 3 Copyright (C) 1985, 1986, 1992 Free Software Foundation, Inc. |
296 | 4 |
5 This file is part of GNU Emacs. | |
6 | |
7 GNU Emacs is free software; you can redistribute it and/or modify | |
8 it under the terms of the GNU General Public License as published by | |
648 | 9 the Free Software Foundation; either version 2, or (at your option) |
296 | 10 any later version. |
11 | |
12 GNU Emacs is distributed in the hope that it will be useful, | |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with GNU Emacs; see the file COPYING. If not, write to | |
19 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
20 | |
21 | |
22 extern int (*cursor_to_hook) (); | |
23 extern int (*raw_cursor_to_hook) (); | |
24 | |
25 extern int (*clear_to_end_hook) (); | |
766 | 26 extern int (*clear_frame_hook) (); |
296 | 27 extern int (*clear_end_of_line_hook) (); |
28 | |
29 extern int (*ins_del_lines_hook) (); | |
30 | |
31 extern int (*change_line_highlight_hook) (); | |
32 extern int (*reassert_line_highlight_hook) (); | |
33 | |
34 extern int (*insert_glyphs_hook) (); | |
35 extern int (*write_glyphs_hook) (); | |
36 extern int (*delete_glyphs_hook) (); | |
37 | |
38 extern int (*ring_bell_hook) (); | |
39 | |
40 extern int (*reset_terminal_modes_hook) (); | |
41 extern int (*set_terminal_modes_hook) (); | |
42 extern int (*update_begin_hook) (); | |
43 extern int (*update_end_hook) (); | |
44 extern int (*set_terminal_window_hook) (); | |
45 | |
46 extern int (*read_socket_hook) (); | |
47 | |
485 | 48 /* Return the current position of the mouse. This should clear |
49 mouse_moved until the next motion event arrives. */ | |
766 | 50 extern void (*mouse_position_hook) ( /* FRAME_PTR *f, |
485 | 51 Lisp_Object *x, |
52 Lisp_Object *y, | |
732 | 53 unsigned long *time */ ); |
296 | 54 |
485 | 55 /* The window system handling code should set this if the mouse has |
56 moved since the last call to the mouse_position_hook. Calling that | |
57 hook should clear this. */ | |
58 extern int mouse_moved; | |
296 | 59 |
766 | 60 /* When a frame's focus redirection is changed, this hook tells the |
357 | 61 window system code to re-decide where to put the highlight. Under |
485 | 62 X, this means that Emacs lies about where the focus is. */ |
766 | 63 extern void (*frame_rehighlight_hook) ( /* void */ ); |
338 | 64 |
296 | 65 /* If nonzero, send all terminal output characters to this stream also. */ |
66 extern FILE *termscript; | |
67 | |
68 /* Expedient hack: only provide the below definitions to files that | |
69 are prepared to handle lispy things. XINT is defined iff lisp.h | |
485 | 70 has been included before this file. */ |
71 #ifdef XINT | |
296 | 72 |
73 /* The keyboard input buffer is an array of these structures. Each one | |
74 represents some sort of input event - a keystroke, a mouse click, or | |
75 a window system event. These get turned into their lispy forms when | |
76 they are removed from the event queue. */ | |
77 | |
78 struct input_event { | |
79 | |
80 /* What kind of event was this? */ | |
81 enum { | |
82 no_event, /* nothing happened. This should never | |
83 actually appear in the event queue. */ | |
338 | 84 ascii_keystroke, /* The ASCII code is in .code. |
766 | 85 .frame is the frame in which the key |
338 | 86 was typed. |
87 Note that this includes meta-keys, and | |
88 the modifiers field of the event | |
485 | 89 is unused. |
90 .timestamp gives a timestamp (in | |
91 milliseconds) for the keystroke. */ | |
296 | 92 non_ascii_keystroke, /* .code is a number identifying the |
93 function key. A code N represents | |
94 a key whose name is | |
95 function_key_names[N]; function_key_names | |
96 is a table in keyboard.c to which you | |
97 should feel free to add missing keys. | |
98 .modifiers holds the state of the | |
338 | 99 modifier keys. |
766 | 100 .frame is the frame in which the key |
485 | 101 was typed. |
102 .timestamp gives a timestamp (in | |
103 milliseconds) for the keystroke. */ | |
296 | 104 mouse_click, /* The button number is in .code. |
105 .modifiers holds the state of the | |
106 modifier keys. | |
107 .x and .y give the mouse position, | |
708 | 108 in characters, within the window. |
766 | 109 .frame gives the frame the mouse |
296 | 110 click occurred in. |
111 .timestamp gives a timestamp (in | |
112 milliseconds) for the click. */ | |
113 scrollbar_click, /* .code gives the number of the mouse | |
114 button that was clicked. | |
115 .part is a lisp symbol indicating which | |
116 part of the scrollbar got clicked. This | |
117 indicates whether the scroll bar was | |
118 horizontal or vertical. | |
119 .modifiers gives the state of the | |
120 modifier keys. | |
121 .x gives the distance from the start | |
122 of the scroll bar of the click; .y gives | |
123 the total length of the scroll bar. | |
766 | 124 .frame gives the frame the click |
296 | 125 should apply to. |
126 .timestamp gives a timestamp (in | |
127 milliseconds) for the click. */ | |
338 | 128 #if 0 |
766 | 129 frame_selected, /* The user has moved the focus to another |
130 frame. | |
131 .frame is the frame that should become | |
296 | 132 selected at the next convenient time. */ |
338 | 133 #endif |
296 | 134 } kind; |
135 | |
136 Lisp_Object code; | |
137 Lisp_Object part; | |
732 | 138 |
139 /* This is obviously wrong, but I'm not sure what else I should do. | |
766 | 140 Obviously, this should be a FRAME_PTR. But that would require that |
141 every file which #includes this one should also #include "frame.h", | |
732 | 142 which would mean that files like cm.c and other innocents would be |
766 | 143 dragged into the set of frame.h users. Maybe the definition of this |
732 | 144 structure should be elsewhere? In its own file? */ |
766 | 145 #ifdef MULTI_FRAME |
146 struct frame *frame; | |
732 | 147 #else |
766 | 148 int frame; |
732 | 149 #endif |
296 | 150 int modifiers; /* See enum below for interpretation. */ |
732 | 151 |
296 | 152 Lisp_Object x, y; |
648 | 153 unsigned long timestamp; |
296 | 154 }; |
155 | |
1238
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
156 /* Bits in the modifiers member of the input_event structure. |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
157 Note that reorder_modifiers assumes that the bits are in canonical |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
158 order. */ |
296 | 159 enum { |
1238
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
160 up_modifier = 1, /* This only applies to mouse buttons. */ |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
161 alt_modifier = 2, /* Under X, the XK_Alt_[LR] keysyms. */ |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
162 ctrl_modifier = 4, |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
163 hyper_modifier= 8, /* Under X, the XK_Hyper_[LR] keysyms. */ |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
164 meta_modifier = 16, /* Under X, the XK_Meta_[LR] keysyms. */ |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
165 shift_modifier= 32, |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
166 super_modifier= 64, /* Under X, the XK_Super_[LR] keysyms. */ |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
167 down_modifier = 128, /* The window-system independent code finds |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
168 it handy to have this modifier, but |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
169 it is ignored in the event queue. */ |
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
170 drag_modifier = 256, /* Same as down_modifier. */ |
296 | 171 last_modifier /* This should always be one more than the |
172 highest modifier bit defined. */ | |
173 }; | |
174 | |
175 #define NUM_MODIFIER_COMBOS ((last_modifier-1) << 1) | |
176 | |
177 #endif |