# HG changeset patch # User Kim F. Storm # Date 1166542688 0 # Node ID 28393f8e75f1b0309bed3b6bc06d9643699b2868 # Parent 8079b89022bf0f1cffac995a4ed4d6d12c32d29d (Misc Events): User signals now result in sigusr1 and sigusr2 events which are handled through special-event-map. (Special Events): User signals and drag-n-drop are special. diff -r 8079b89022bf -r 28393f8e75f1 lispref/commands.texi --- a/lispref/commands.texi Tue Dec 19 15:37:45 2006 +0000 +++ b/lispref/commands.texi Tue Dec 19 15:38:08 2006 +0000 @@ -1586,14 +1586,33 @@ parameters are used to display the help-echo text are described in @ref{Text help-echo}. -@cindex @code{signal usr1} event -@cindex @code{signal usr2} event +@cindex @code{sigusr1} event +@cindex @code{sigusr2} event @cindex user signals -@item signal usr1 -@itemx signal usr2 -These event sequences are generated when the Emacs process receives +@item sigusr1 +@itemx sigusr2 +These events are generated when the Emacs process receives the signals @code{SIGUSR1} and @code{SIGUSR2}. They contain no additional data because signals do not carry additional information. + +To catch a user signal, bind the corresponding event to an interactive +command in the @code{special-event-map} (@pxref{Active Keymaps}). +The command is called with no arguments, and the specific signal event is +available in @code{last-input-event}. For example: + +@example +(defun sigusr-handler () + (interactive) + (message "Caught signal %S" last-input-event)) + +(define-key special-event-map [sigusr1] 'sigusr-handler) +@end example + +To test the signal handler, you can make Emacs send a signal to itself: + +@example +(signal-process (emacs-pid) 'sigusr1) +@end example @end table If one of these events arrives in the middle of a key sequence---that @@ -2634,8 +2653,9 @@ after they are read, and this is the way for the event's definition to find the actual event. -The events types @code{iconify-frame}, @code{make-frame-visible} and -@code{delete-frame} are normally handled in this way. The keymap which +The events types @code{iconify-frame}, @code{make-frame-visible}, +@code{delete-frame}, @code{drag-n-drop}, and user signals like +@code{sigusr1} are normally handled in this way. The keymap which defines how to handle special events---and which events are special---is in the variable @code{special-event-map} (@pxref{Active Keymaps}).