(item_properties): New variable.
[bpt/emacs.git] / src / keyboard.h
index 9aed8f9..71247c9 100644 (file)
@@ -15,7 +15,8 @@ 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.  */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 /* Length of echobuf field in each KBOARD.  */
 
@@ -66,6 +67,17 @@ 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;
 
@@ -97,6 +109,9 @@ struct kboard
     /* 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;
 
@@ -155,11 +170,14 @@ extern KBOARD the_only_kboard;
 #define single_kboard 1
 #endif
 \f
+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;
+extern int num_input_events;
 
 /* Total number of times read_char has returned, outside of macros.  */
-extern int num_nonmacro_input_chars;
+extern int num_nonmacro_input_events;
 
 /* Nonzero means polling for input is temporarily suppressed.  */
 extern int poll_suppress_count;
@@ -178,15 +196,42 @@ extern Lisp_Object Vfunction_key_map;
 extern Lisp_Object this_command_keys;
 extern int this_command_key_count;
 
-#ifdef MULTI_FRAME
 /* 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;
-#endif
-
+\f
+/* This holds a Lisp vector that holds the properties of a single
+   menu item while decoding it in parse_menu_item.
+   Using a Lisp vector to hold this information while we decode it
+   takes care of protecting all the data from GC.  */
+extern Lisp_Object item_properties;
+/* This describes the elements of item_properties.
+   The first element is not a property, it is a pointer to the item properties
+   that is saved for GC protection. */
+#define ITEM_PROPERTY_ITEM 0
+/* The item string.  */
+#define ITEM_PROPERTY_NAME 1
+/* Start of initilize to nil */
+/* The binding: nil, a command or a keymap.  */
+#define ITEM_PROPERTY_DEF 2
+/* The keymap if the binding is a keymap, otherwise nil.  */
+#define ITEM_PROPERTY_MAP 3
+/* Nil, :radio or :toggle.  */
+#define ITEM_PROPERTY_TYPE 4
+/* Nil or a string describing an equivalent key binding.  */
+#define ITEM_PROPERTY_KEYEQ 5
+/* Not nil if a selected toggle box or radio button, otherwise nil.  */
+#define ITEM_PROPERTY_SELECTED 6
+/* Place for a help string. Not yet used.  */
+#define ITEM_PROPERTY_HELP 7
+/* Start of initilize to t */
+/* Last property. */
+/* Not nil if item is enabled.  */
+#define ITEM_PROPERTY_ENABLE 8
 \f
 /* Macros for dealing with lispy events.  */
 
@@ -234,11 +279,45 @@ extern Lisp_Object Qscroll_bar_movement;
 /* 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 ();
+/* Forward declaration for prototypes.  */
+struct input_event;
+
+extern Lisp_Object get_keymap_1 P_ ((Lisp_Object, int, int));
+EXFUN (Fkeymapp, 1);
+extern Lisp_Object reorder_modifiers P_ ((Lisp_Object));
+extern Lisp_Object read_char P_ ((int, int, Lisp_Object *, Lisp_Object, int *));
 /* User-supplied string to translate input characters through.  */
 extern Lisp_Object Vkeyboard_translate_table;
 
-extern Lisp_Object map_prompt ();
+extern Lisp_Object map_prompt P_ ((Lisp_Object));
+
+
+extern int parse_menu_item ();
+
+extern void echo_now P_ ((void));
+extern void init_kboard P_ ((KBOARD *));
+extern void delete_kboard P_ ((KBOARD *));
+extern void single_kboard_state P_ ((void));
+extern void push_frame_kboard P_ ((struct frame *));
+extern void pop_frame_kboard P_ ((void));
+extern void record_asynch_buffer_change P_ ((void));
+extern void clear_waiting_for_input P_ ((void));
+extern SIGTYPE input_poll_signal P_ ((int));
+extern void start_polling P_ ((void));
+extern void stop_polling P_ ((void));
+extern void set_poll_suppress_count P_ ((int));
+extern void gobble_input P_ ((int));
+extern int input_polling_used P_ ((void));
+extern void clear_input_pending P_ ((void));
+extern int requeued_events_pending_p P_ ((void));
+extern void bind_polling_period P_ ((int));
+extern void stuff_buffered_input P_ ((Lisp_Object));
+extern void clear_waiting_for_input P_ ((void));
+extern void swallow_events P_ ((int));
+extern int help_char_p P_ ((Lisp_Object));
+extern void quit_throw_to_read_char P_ ((void));
+extern void cmd_error_internal P_ ((Lisp_Object, char *));
+extern void timer_start_idle P_ ((void));
+extern void timer_stop_idle P_ ((void));
+extern int lucid_event_type_list_p P_ ((Lisp_Object));
+extern void kbd_buffer_store_event P_ ((struct input_event *));