Function: viper-key-to-emacs-key
viper-key-to-emacs-key is a byte-compiled function defined in
viper-util.el.gz.
Signature
(viper-key-to-emacs-key KEY)
Source Code
;; Defined in /usr/src/emacs/lisp/emulation/viper-util.el.gz
(defun viper-key-to-emacs-key (key)
(let (key-name char-p modifiers mod-char-list base-key base-key-name)
(cond ((symbolp key)
(setq key-name (symbol-name key))
(cond ((= (length key-name) 1) ; character event
(string-to-char key-name))
;; Emacs doesn't recognize `return' and `escape' as events on
;; dumb terminals, so we translate them into characters
((and (not (viper-window-display-p))
(string= key-name "return"))
?\C-m)
((and (not (viper-window-display-p))
(string= key-name "escape"))
?\e)
;; pass symbol-event as is
(t key)))
((listp key)
(setq modifiers (cl-subseq key 0 (1- (length key)))
base-key (viper-seq-last-elt key)
base-key-name (symbol-name base-key)
char-p (= (length base-key-name) 1))
(setq mod-char-list
(mapcar
(lambda (elt) (upcase (substring (symbol-name elt) 0 1)))
modifiers))
(if char-p
(setq key-name
(car (read-from-string
(concat
"?\\"
(mapconcat #'identity mod-char-list "-\\")
"-"
base-key-name))))
(setq key-name
(intern
(concat
(mapconcat #'identity mod-char-list "-")
"-"
base-key-name))))))
))