#ifdef MAC_OS
Lisp_Object Qmac_apple_event;
#endif
-
+#ifdef HAVE_DBUS
+Lisp_Object Qdbus_event;
+#endif
/* Lisp_Object Qmouse_movement; - also an event header */
/* Properties of event headers. */
#ifdef MULTI_KBOARD
int was_locked = single_kboard;
#endif
-#endif
+#endif
int already_adjusted = 0;
current_kboard->Vprefix_arg = Qnil;
USED_MOUSE_MENU is null, we don't dereference it.
Value is -2 when we find input on another keyboard. A second call
- to read_char will read it.
+ to read_char will read it.
If END_TIME is non-null, it is a pointer to an EMACS_TIME
specifying the maximum time to wait until. If no input arrives by
int count = SPECPDL_INDEX ();
record_single_kboard_state ();
#endif
-
+
last_input_char = c;
Fcommand_execute (tem, Qnil, Fvector (1, &last_input_char), Qt);
events. */
if (CONSP (Vunread_command_events))
break;
-
+
if (kbd_fetch_ptr != kbd_store_ptr)
break;
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
internal_last_event_frame = frame;
kbd_fetch_ptr = event + 1;
}
+#ifdef HAVE_DBUS
+ else if (event->kind == DBUS_EVENT)
+ {
+ obj = make_lispy_event (event);
+ kbd_fetch_ptr = event + 1;
+ }
+#endif
else
{
/* If this event is on a different frame, return a switch-frame this
}
#endif
+#ifdef HAVE_DBUS
+ case DBUS_EVENT:
+ {
+ return Fcons (Qdbus_event, event->arg);
+ }
+#endif /* HAVE_DBUS */
+
#ifdef HAVE_GPM
case GPM_CLICK_EVENT:
{
gobble_input (expected)
int expected;
{
+#ifdef HAVE_DBUS
+ /* Check whether a D-Bus message has arrived. */
+ xd_read_queued_messages ();
+#endif /* HAVE_DBUS */
+
#ifndef VMS
#ifdef SIGIO
if (interrupt_input)
nread += nr;
expected = 0;
}
-
+
if (nr == -1) /* Not OK to read input now. */
{
err = 1;
else if (nr == -2) /* Non-transient error. */
{
/* The terminal device terminated; it should be closed. */
-
+
/* Kill Emacs if this was our last terminal. */
if (!terminal_list->next_terminal)
/* Formerly simply reported no input, but that
group? Perhaps on systems with FIONREAD Emacs is
alone in its group. */
kill (getpid (), SIGHUP);
-
+
/* XXX Is calling delete_terminal safe here? It calls Fdelete_frame. */
if (t->delete_terminal_hook)
(*t->delete_terminal_hook) (t);
buf.modifiers = meta_modifier;
if (tty->meta_key != 2)
cbuf[i] &= ~0x80;
-
+
buf.code = cbuf[i];
/* Set the frame corresponding to the active tty. Note that the
value of selected_frame is not reliable here, redisplay tends
to temporarily change it. */
buf.frame_or_window = tty->top_frame;
buf.arg = Qnil;
-
+
kbd_buffer_store_event (&buf);
/* Don't look at input that follows a C-g too closely.
This reduces lossage due to autorepeat on C-g. */
last_nonmenu_event = Qnil;
delayed_switch_frame = Qnil;
-
+
if (INTERACTIVE)
{
if (!NILP (prompt))
new_interrupt_input = 1;
#endif
- if (new_interrupt_input != interrupt_input)
+ if (new_interrupt_input != interrupt_input)
{
#ifdef POLL_FOR_INPUT
stop_polling ();
struct terminal *t = get_terminal (terminal, 1);
struct tty_display_info *tty;
int new_meta;
-
+
if (t == NULL || t->type != output_termcap)
return Qnil;
tty = t->display_info.tty;
else
new_meta = 2;
- if (tty->meta_key != new_meta)
+ if (tty->meta_key != new_meta)
{
#ifndef DOS_NT
/* this causes startup screen to be restored and messes with the mouse */
#endif
tty->meta_key = new_meta;
-
+
#ifndef DOS_NT
init_sys_modes (tty);
#endif
/* this causes startup screen to be restored and messes with the mouse */
reset_sys_modes (tty);
#endif
-
+
/* Don't let this value be out of range. */
quit_char = XINT (quit) & (tty->meta_key == 0 ? 0177 : 0377);
return Qnil;
}
-
+
DEFUN ("set-input-mode", Fset_input_mode, Sset_input_mode, 3, 4, 0,
doc: /* Set mode of reading keyboard input.
First arg INTERRUPT non-nil means use input interrupts;
staticpro (&Qmac_apple_event);
#endif
+#ifdef HAVE_DBUS
+ Qdbus_event = intern ("dbus-event");
+ staticpro (&Qdbus_event);
+#endif
+
Qmenu_enable = intern ("menu-enable");
staticpro (&Qmenu_enable);
Qmenu_alias = intern ("menu-alias");
`local-function-key-map' binding and this variable, then the local
definition will take precendence. */);
Vfunction_key_map = Fmake_sparse_keymap (Qnil);
-
+
DEFVAR_LISP ("key-translation-map", &Vkey_translation_map,
doc: /* Keymap of key translations that can override keymaps.
This keymap works like `function-key-map', but comes after that,
/* Vwindow_system is left at t for now. */
initial_kboard->next_kboard = all_kboards;
all_kboards = initial_kboard;
-#endif
+#endif
}
void
* "handle-select-window"); */
initial_define_lispy_key (Vspecial_event_map, "save-session",
"handle-save-session");
+
+#ifdef HAVE_DBUS
+ /* Define a special event which is raised for dbus callback
+ functions. */
+ initial_define_lispy_key (Vspecial_event_map, "dbus-event",
+ "dbus-handle-event");
+#endif
}
/* Mark the pointers in the kboard objects.