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))))))
    ))