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.

View in manual

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);
}