@end example
@end defun
+ @code{read-event} also invokes the current input method, if any. If
+the value of @code{input-method-function} is non-@code{nil}, it should
+be a function; when @code{read-event} reads a printing character
+(including @key{SPC}) with no modifier bits, it calls that function,
+passing the event as an argument.
+
+@defvar input-method-function
+If this is non-@code{nil}, its value specifies the current input method
+function.
+@end defvar
+
+ The input method function should return a list of events which should
+be used as input. (If the list is @code{nil}, that means there is no
+input, so @code{read-event} waits for another event.) These events are
+processed before the events in @code{unread-command-events}. Events
+returned by the input method function are not passed to the input method
+function again, even if they are printing characters with no modifier
+bits.
+
+ If the input method function calls @code{read-event} or
+@code{read-key-sequence}, it should bind @code{input-method-function} to
+@code{nil} first, to prevent recursion.
+
+ The input method function is not called when reading the second and
+subsequent event of a key sequence. Thus, these characters are not
+subject to input method processing. It is usually a good idea for the
+input method processing to test the values of
+@code{overriding-local-map} and @code{overriding-terminal-local-map}; if
+either of these variables is non-@code{nil}, the input method should put
+its argument into a list and return that list with no further
+processing.
+
@node Quoted Character Input
@subsection Quoted Character Input
@cindex quoted character input
@end example
@end defun
+@defun message-or-box string &rest arguments
+This function displays a message like @code{message}, but may display it
+in a dialog box instead of the echo area. If this function is called in
+a command that was invoked using the mouse---more precisely, if
+@code{last-nonmenu-event} (@pxref{Command Loop Info}) is either
+@code{nil} or a list---then it uses a dialog box or pop-up menu to
+display the message. Otherwise, it uses the echo area. (This is the
+same criterion that @code{y-or-n-p} uses to make a similar decision; see
+@ref{Yes-or-No Queries}.)
+
+You can force use of the mouse or of the echo area by binding
+@code{last-nonmenu-event} to a suitable value around the call.
+@end defun
+
+@defun message-box string &rest arguments
+This function displays a message like @code{message}, but uses a dialog
+box (or a pop-up menu) whenever that is possible. If it is impossible
+to use a dialog box or pop-up menu, because the terminal does not
+support them, then @code{message-box} uses the echo area, like
+@code{message}.
+@end defun
+
@defun current-message
@tindex current-message
This function returns the message currently being displayed in the