diff options
Diffstat (limited to 'src/keyboard.h')
-rw-r--r-- | src/keyboard.h | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/src/keyboard.h b/src/keyboard.h deleted file mode 100644 index 1c36e11d1b8..00000000000 --- a/src/keyboard.h +++ /dev/null @@ -1,259 +0,0 @@ -/* Declarations useful when processing input. - Copyright (C) 1985, 1986, 1987, 1993 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 2, 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, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Length of echobuf field in each KBOARD. */ - -#define ECHOBUFSIZE 300 - -/* Each KBOARD represents one logical input stream from which Emacs gets input. - If we are using an ordinary terminal, it has one KBOARD object. - Usually each X display screen has its own KBOARD, - but when two of them are on the same X server, - we assume they share a keyboard and give them one KBOARD in common. - - Some Lisp variables are per-kboard; they are stored in the KBOARD structure - and accessed indirectly via a Lisp_Misc_Kboard_Objfwd object. - - So that definition of keyboard macros, and reading of prefix arguments, - can happen in parallel on various KBOARDs at once, - the state information for those activities is stored in the KBOARD. - - Emacs has two states for reading input: - - ** Any kboard. Emacs can accept input from any KBOARD, - and as soon as any of them provides a complete command, Emacs can run it. - - ** Single kboard. Then Emacs is running a command for one KBOARD - and can only read input from that KBOARD. - - All input, from all KBOARDs, goes together in a single event queue - at interrupt level. read_char sees the events sequentially, - but deals with them in accord with the current input state. - - In the any-kboard state, read_key_sequence processes input from any KBOARD - immediately. When a new event comes in from a particular KBOARD, - read_key_sequence switches to that KBOARD. As a result, - as soon as a complete key arrives from some KBOARD or other, - Emacs starts executing that key's binding. It switches to the - single-kboard state for the execution of that command, - so that that command can get input only from its own KBOARD. - - While in the single-kboard state, read_char can consider input only - from the current KBOARD. If events come from other KBOARDs, they - are put aside for later in the KBOARDs' kbd_queue lists. - The flag kbd_queue_has_data in a KBOARD is 1 if this has happened. - When Emacs goes back to the any-kboard state, it looks at all the KBOARDS - to find those; and it tries processing their input right away. */ - -typedef struct kboard KBOARD; -struct kboard - { - KBOARD *next_kboard; - - /* If non-nil, a keymap that overrides all others but applies only to - this KBOARD. Lisp code that uses this instead of calling read-char - can effectively wait for input in the any-kboard state, and hence - avoid blocking out the other KBOARDs. See universal-argument in - lisp/simple.el for an example. */ - Lisp_Object Voverriding_terminal_local_map; - - /* Last command executed by the editor command loop, not counting - commands that set the prefix argument. */ - Lisp_Object Vlast_command; - - /* The prefix argument for the next command, in raw form. */ - Lisp_Object Vprefix_arg; - - /* Unread events specific to this kboard. */ - Lisp_Object kbd_queue; - - /* Non-nil while a kbd macro is being defined. */ - Lisp_Object defining_kbd_macro; - - /* The start of storage for the current keyboard macro. */ - Lisp_Object *kbd_macro_buffer; - - /* Where to store the next keystroke of the macro. */ - Lisp_Object *kbd_macro_ptr; - - /* The finalized section of the macro starts at kbd_macro_buffer and - ends before this. This is not the same as kbd_macro_ptr, because - we advance this to kbd_macro_ptr when a key's command is complete. - This way, the keystrokes for "end-kbd-macro" are not included in the - macro. */ - Lisp_Object *kbd_macro_end; - - /* Allocated size of kbd_macro_buffer. */ - int kbd_macro_bufsize; - - /* Last anonymous kbd macro defined. */ - Lisp_Object Vlast_kbd_macro; - - /* Alist of system-specific X windows key symbols. */ - Lisp_Object Vsystem_key_alist; - - /* Cache for modify_event_symbol. */ - Lisp_Object system_key_syms; - - /* Minibufferless frames on this display use this frame's minibuffer. */ - Lisp_Object Vdefault_minibuffer_frame; - - /* Number of displays using this KBOARD. Normally 1, but can be - larger when you have multiple screens on a single X display. */ - int reference_count; - - /* Where to append more text to echobuf if we want to. */ - char *echoptr; - - /* The text we're echoing in the modeline - partial key sequences, - usually. '\0'-terminated. This really shouldn't have a fixed size. */ - char echobuf[ECHOBUFSIZE]; - - /* This flag indicates that events were put into kbd_queue - while Emacs was running for some other KBOARD. - The flag means that, when Emacs goes into the any-kboard state again, - it should check this KBOARD to see if there is a complete command - waiting. - - Note that the kbd_queue field can be non-nil even when - kbd_queue_has_data is 0. When we push back an incomplete - command, then this flag is 0, meaning we don't want to try - reading from this KBOARD again until more input arrives. */ - char kbd_queue_has_data; - - /* Nonzero means echo each character as typed. */ - char immediate_echo; - - /* If we have echoed a prompt string specified by the user, - this is its length. Otherwise this is -1. */ - char echo_after_prompt; - }; - -#ifdef MULTI_KBOARD -/* Temporarily used before a frame has been opened, and for termcap frames */ -extern KBOARD *initial_kboard; - -/* In the single-kboard state, this is the kboard - from which input is accepted. - - In the any-kboard state, this is the kboard from which we are - right now considering input. We can consider input from another - kboard, but doing so requires throwing to wrong_kboard_jmpbuf. */ -extern KBOARD *current_kboard; - -/* A list of all kboard objects, linked through next_kboard. */ -extern KBOARD *all_kboards; - -/* Nonzero in the single-kboard state, 0 in the any-kboard state. */ -extern int single_kboard; -#else -extern KBOARD the_only_kboard; -#define current_kboard (&the_only_kboard) -#define all_kboards (&the_only_kboard) -#define single_kboard 1 -#endif - -extern Lisp_Object Vlucid_menu_bar_dirty_flag; -extern Lisp_Object Qrecompute_lucid_menubar, Qactivate_menubar_hook; - -/* Total number of times read_char has returned. */ -extern int num_input_chars; - -/* Total number of times read_char has returned, outside of macros. */ -extern int num_nonmacro_input_chars; - -/* Nonzero means polling for input is temporarily suppressed. */ -extern int poll_suppress_count; - -/* Nonzero if polling_for_input is actually being used. */ -extern int polling_for_input; - -/* Keymap mapping ASCII function key sequences onto their preferred forms. - Initialized by the terminal-specific lisp files. */ -extern Lisp_Object Vfunction_key_map; - -/* Vector holding the key sequence that invoked the current command. - It is reused for each command, and it may be longer than the current - sequence; this_command_key_count indicates how many elements - actually mean something. */ -extern Lisp_Object this_command_keys; -extern int this_command_key_count; - -/* The frame in which the last input event occurred, or Qmacro if the - last event came from a macro. We use this to determine when to - generate switch-frame events. This may be cleared by functions - like Fselect_frame, to make sure that a switch-frame event is - generated by the next character. */ -extern Lisp_Object internal_last_event_frame; - -/* Macros for dealing with lispy events. */ - -/* True iff EVENT has data fields describing it (i.e. a mouse click). */ -#define EVENT_HAS_PARAMETERS(event) (CONSP (event)) - -/* Extract the head from an event. - This works on composite and simple events. */ -#define EVENT_HEAD(event) \ - (EVENT_HAS_PARAMETERS (event) ? XCONS (event)->car : (event)) - -/* Extract the starting and ending positions from a composite event. */ -#define EVENT_START(event) (XCONS (XCONS (event)->cdr)->car) -#define EVENT_END(event) (XCONS (XCONS (XCONS (event)->cdr)->cdr)->car) - -/* Extract the click count from a multi-click event. */ -#define EVENT_CLICK_COUNT(event) (Fnth ((event), make_number (2))) - -/* Extract the fields of a position. */ -#define POSN_WINDOW(posn) (XCONS (posn)->car) -#define POSN_BUFFER_POSN(posn) (XCONS (XCONS (posn)->cdr)->car) -#define POSN_WINDOW_POSN(posn) (XCONS (XCONS (XCONS (posn)->cdr)->cdr)->car) -#define POSN_TIMESTAMP(posn) \ - (XCONS (XCONS (XCONS (XCONS (posn)->cdr)->cdr)->cdr)->car) -#define POSN_SCROLLBAR_PART(posn) (Fnth ((posn), make_number (4))) - -/* Some of the event heads. */ -extern Lisp_Object Qswitch_frame; - -/* Properties on event heads. */ -extern Lisp_Object Qevent_kind, Qevent_symbol_elements; - -/* Getting an unmodified version of an event head. */ -#define EVENT_HEAD_UNMODIFIED(event_head) \ - (Fcar (Fget ((event_head), Qevent_symbol_elements))) - -/* The values of Qevent_kind properties. */ -extern Lisp_Object Qfunction_key, Qmouse_click, Qmouse_movement; -extern Lisp_Object Qscroll_bar_movement; - -/* Getting the kind of an event head. */ -#define EVENT_HEAD_KIND(event_head) \ - (Fget ((event_head), Qevent_kind)) - -/* Symbols to use for non-text mouse positions. */ -extern Lisp_Object Qmode_line, Qvertical_line; - -extern Lisp_Object get_keymap_1 (); -extern Lisp_Object Fkeymapp (); -extern Lisp_Object reorder_modifiers (); -extern Lisp_Object read_char (); -/* User-supplied string to translate input characters through. */ -extern Lisp_Object Vkeyboard_translate_table; - -extern Lisp_Object map_prompt (); |