Function: widget-key-sequence-read-event

widget-key-sequence-read-event is an interactive and byte-compiled function defined in wid-edit.el.gz.

Signature

(widget-key-sequence-read-event EV)

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/wid-edit.el.gz
;; FIXME: Consider combining this with help--read-key-sequence which
;; can also read double and triple mouse events.
(defun widget-key-sequence-read-event (ev)
  (interactive (list
		(let ((inhibit-quit t) quit-flag)
		  (read-key "Insert KEY, EVENT, or CODE: " t))))
  (let ((ev2 (and (memq 'down (event-modifiers ev))
		  (read-key nil t)))
	(tr (and (keymapp local-function-key-map)
		 (lookup-key local-function-key-map (vector ev)))))
    (when (and (integerp ev)
	       (or (and (<= ?0 ev) (< ev (+ ?0 (min 10 read-quoted-char-radix))))
		   (and (<= ?a (downcase ev))
			(< (downcase ev) (+ ?a -10 (min 36 read-quoted-char-radix))))))
      (setq unread-command-events (cons ev unread-command-events)
	    ev (read-quoted-char (format "Enter code (radix %d)" read-quoted-char-radix))
	    tr nil)
      (if (and (integerp ev) (not (characterp ev)))
	  (insert (char-to-string ev))))  ;; throw invalid char error
    (setq ev (key-description (list ev)))
    (when (arrayp tr)
      (setq tr (key-description (list (aref tr 0))))
      (if (y-or-n-p (format "Key %s is translated to %s -- use %s? " ev tr tr))
	  (setq ev tr ev2 nil)))
    (insert (if (= (char-before) ?\s)  "" " ") ev " ")
    (if ev2
	(insert (key-description (list ev2)) " "))))