#include "coding.h" /* for ENCODE_UTF_8 and ENCODE_SYSTEM */
#include "termhooks.h"
+#ifdef HAVE_X11
+# include "xterm.h" /* for struct selection_input_event */
+#endif
+
INLINE_HEADER_BEGIN
/* Most code should use this macro to access Lisp fields in struct kboard. */
kb->Vwindow_system_ = val;
}
+union buffered_input_event
+{
+ ENUM_BF (event_kind) kind : EVENT_KIND_WIDTH;
+ struct input_event ie;
+#ifdef HAVE_X11
+ struct selection_input_event sie;
+#endif
+};
+
/* Temporarily used before a frame has been opened. */
extern KBOARD *initial_kboard;
extern void swallow_events (bool);
extern bool lucid_event_type_list_p (Lisp_Object);
extern void kbd_buffer_store_event (struct input_event *);
-extern void kbd_buffer_store_event_hold (struct input_event *,
- struct input_event *);
-extern void kbd_buffer_unget_event (struct input_event *);
+extern void kbd_buffer_store_buffered_event (union buffered_input_event *,
+ struct input_event *);
+INLINE void
+kbd_buffer_store_event_hold (struct input_event *event,
+ struct input_event *hold_quit)
+{
+ verify (alignof (struct input_event) == alignof (union buffered_input_event)
+ && sizeof (struct input_event) == sizeof (union buffered_input_event));
+ return kbd_buffer_store_buffered_event ((union buffered_input_event *) event,
+ hold_quit);
+}
+#ifdef HAVE_X11
+extern void kbd_buffer_unget_event (struct selection_input_event *);
+#endif
extern void poll_for_input_1 (void);
extern void show_help_echo (Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object);