Function: insert-special-event
insert-special-event is a function defined in keyboard.c.
Signature
(insert-special-event EVENT)
Documentation
Insert the special EVENT into the input event queue.
Only 'input_event' slots KIND and ARG are set.
Probably introduced at or before Emacs version 31.1.
Source Code
// Defined in /usr/src/emacs/src/keyboard.c
{
/* Check, that it is a special event. */
CHECK_CONS (event);
if (NILP (access_keymap
(get_keymap (Vspecial_event_map, 0, 1), event, 0, 0, 1)))
signal_error ("Invalid event kind", XCAR (event));
/* Construct an input event. */
struct input_event ie;
EVENT_INIT (ie);
ie.kind =
(EQ (XCAR (event), Qdelete_frame) ? DELETE_WINDOW_EVENT
#ifdef HAVE_NTGUI
: EQ (XCAR (event), Qend_session) ? END_SESSION_EVENT
#endif
#ifdef HAVE_NS
: EQ (XCAR (event), Qns_put_working_text) ? KEY_NS_PUT_WORKING_TEXT
#endif
#ifdef HAVE_NS
: EQ (XCAR (event), Qns_unput_working_text) ? KEY_NS_UNPUT_WORKING_TEXT
#endif
: EQ (XCAR (event), Qiconify_frame) ? ICONIFY_EVENT
: EQ (XCAR (event), Qmake_frame_visible) ? DEICONIFY_EVENT
/* : EQ (XCAR (event), Qselect_window) ? SELECT_WINDOW_EVENT */
: EQ (XCAR (event), Qsave_session) ? SAVE_SESSION_EVENT
#ifdef HAVE_DBUS
: EQ (XCAR (event), Qdbus_event) ? DBUS_EVENT
#endif
#ifdef THREADS_ENABLED
: EQ (XCAR (event), Qthread_event) ? THREAD_EVENT
#endif
#ifdef USE_FILE_NOTIFY
: EQ (XCAR (event), Qfile_notify) ? FILE_NOTIFY_EVENT
#endif /* USE_FILE_NOTIFY */
: EQ (XCAR (event), Qconfig_changed_event) ? CONFIG_CHANGED_EVENT
#if defined (WINDOWSNT)
: EQ (XCAR (event), Qlanguage_change) ? LANGUAGE_CHANGE_EVENT
#endif
: EQ (XCAR (event), Qfocus_in) ? FOCUS_IN_EVENT
: EQ (XCAR (event), Qfocus_out) ? FOCUS_OUT_EVENT
: EQ (XCAR (event), Qmove_frame) ? MOVE_FRAME_EVENT
: EQ (XCAR (event), Qsleep_event) ? SLEEP_EVENT
: NO_EVENT);
ie.frame_or_window = Qnil;
ie.arg = CDR (event);
/* Store it into the input event queue. */
kbd_buffer_store_event (&ie);
return (Qnil);
}