(MAKE_CHAR): Be sure to set MSB of C1 to 0.
[bpt/emacs.git] / src / termhooks.h
index cd7476b..e129fa2 100644 (file)
@@ -215,6 +215,12 @@ enum event_kind
                                   which the key was typed.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the keystroke.  */
+  multibyte_char_keystroke,    /* The multibye char code is in .code,
+                                  perhaps with modifiers applied.
+                                  The others are the same as
+                                  ascii_keystroke.  This type of event
+                                  is generated only when we are using
+                                  XIM on X window.  */
   non_ascii_keystroke,         /* .code is a number identifying the
                                   function key.  A code N represents
                                   a key whose name is
@@ -283,7 +289,7 @@ enum event_kind
   selection_clear_event,       /* Another X client cleared our selection.  */
   buffer_switch_event,         /* A process filter has switched buffers.  */
   delete_window_event,         /* An X client said "delete this window".  */
-  menu_bar_event,              /* An event generated by the menu bar.
+  MENU_BAR_EVENT,              /* An event generated by the menu bar.
                                   The frame_or_window field's cdr holds the
                                   Lisp-level event value.
                                   (Only the toolkit version uses these.)  */
@@ -304,17 +310,23 @@ enum event_kind
                                   the filenames of the dropped files.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the click.  */
-  user_signal,                  /* A user signal.
-                                   .code is a number identifying it,
+  USER_SIGNAL_EVENT,           /* A user signal.
+                                   code is a number identifying it,
                                    index into lispy_user_signals.  */
 
-  /* Currently only returned when the mouse enters a tool-bar item that
-     has a help string.  Member frame_or_window of the input_event is
-     a cons cell whose car is the tool-bar's frame and whose cdr is the
-     help string.  */
+  /* Help events.  Member `frame_or_window' of the input_event is the
+     frame on which the event occurred, and member `arg' contains
+     the help to show.  */
   HELP_EVENT,
 
-  TOOL_BAR_EVENT
+  /* An event from a tool-bar.  Member `arg' of the input event
+     contains the tool-bar item selected.  If `frame_or_window'
+     and `arg' are equal, this is a prefix event.  */
+  TOOL_BAR_EVENT,
+
+  /* Queued from XTread_socket on FocusIn events.  Translated into
+     `switch-frame' events in kbd_buffer_get_event, if necessary.  */
+  FOCUS_IN_EVENT
 };
 
 /* If a struct input_event has a kind which is selection_request_event
@@ -328,11 +340,11 @@ enum event_kind
 
 struct input_event
 {
-
   /* What kind of event was this?  */
   int kind;
   
-  /* For an ascii_keystroke, this is the character.
+  /* For an ascii_keystroke and multibyte_char_keystroke, this is the
+     character.
      For a non_ascii_keystroke, this is the keysym code.
      For a mouse event, this is the button number.  */
   /* In WindowsNT, for a mouse wheel event, this is the delta.  */
@@ -355,6 +367,10 @@ struct input_event
   /* This field is last so that struct selection_input_event
      does not overlap with it.  */
   Lisp_Object frame_or_window;
+
+  /* Additional event argument.  This is used for TOOL_BAR_EVENTs and
+     HELP_EVENTs and avoids calling Fcons during signal handling.  */
+  Lisp_Object arg;
 };
 
 /* Called to read input events.  */
@@ -363,9 +379,6 @@ extern int (*read_socket_hook) P_ ((int, struct input_event *, int, int));
 /* Called when a frame's display becomes entirely up to date.  */
 extern void (*frame_up_to_date_hook) P_ ((struct frame *));
 \f
-/* This is used in keyboard.c, to tell how many buttons we will need
-   to track the positions of.  */
-#define NUM_MOUSE_BUTTONS 15
 
 /* Bits in the modifiers member of the input_event structure.
    Note that reorder_modifiers assumes that the bits are in canonical