#endif /* USE_TEXT_PROPERTIES */
\f
-#define ECHOBUFSIZE 300
-/* When more than one keyboard is in use (via make-frame-on-display),
- each will have a separate instance of this structure. */
-typedef struct KBOARD KBOARD;
-struct KBOARD
- {
- KBOARD *next_kboard;
-
- /* The state of a prefix arg. */
- Lisp_Object prefix_factor, prefix_value;
- int prefix_sign, prefix_partial;
-
- /* 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;
-
- /* Flag indicating that we should look at kbd_queue. This is not the
- same as !NILP (kbd_queue), because if we've had to push back an
- incomplete command, then this flag will be clear; we don't want to
- try reading it again until another character arrives. */
- int kbd_queue_has_data;
-
- /* Placeholder for future vars that will be moved here. */
- Lisp_Object unused[17];
-
- /* This is normally 1, but can be larger if you have multiple screens
- on a single X display. */
- int reference_count;
-
- /* Nonzero means echo each character as typed. */
- int immediate_echo;
-
- /* If we have echoed a prompt string specified by the user,
- this is its length. Otherwise this is -1. */
- int echo_after_prompt;
-
- /* 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];
- };
-
-#ifdef MULTI_KBOARD
-/* Temporarily used before a frame has been opened, and for termcap frames */
-extern KBOARD *initial_kboard;
-
-/* The kboard object associated with the command currently being read
- or executed. */
-extern KBOARD *current_kboard;
-
-/* A list of all kboard objects, linked through next_kboard. */
-extern KBOARD *all_kboards;
-
-/* Nonzero if current_kboard has exclusive use of the keyboard.
- Usually this means that a command is being executed. */
-extern int kboard_locked;
-#else
-extern KBOARD the_only_kboard;
-#define current_kboard (&the_only_kboard)
-#define all_kboards (&the_only_kboard)
-#define kboard_locked 1
-#endif
-\f
/* In a cons, the markbit of the car is the gc mark bit */
struct Lisp_Cons