Function: key-translate-select
key-translate-select is a byte-compiled function defined in
keymap.el.gz.
Signature
(key-translate-select)
Documentation
Prompt for a current keyboard translation pair with completing-read.
Each pair is formatted as "FROM -> TO".
Return the "FROM" as a key string.
Source Code
;; Defined in /usr/src/emacs/lisp/keymap.el.gz
(defun key-translate-select ()
"Prompt for a current keyboard translation pair with `completing-read'.
Each pair is formatted as \"FROM -> TO\".
Return the \"FROM\" as a key string."
(let* ((formatted-trans-alist nil)
;; Alignment helpers
(pad 0)
(key-code-func
(lambda (kc trans)
(let* ((desc (key-description `[,kc]))
(len (length desc)))
(when (> len pad)
(setq pad len))
(push
`(,desc . ,(key-description `[,trans]))
formatted-trans-alist))))
(format-func
(lambda (pair) ;; (key . value)
(format
"%s -> %s"
(string-pad (key-description `[,(car pair)]) pad)
(key-description `[,(cdr pair)])))))
;; Set `pad' and `formatted-trans-alist'
(map-char-table
(lambda (chr trans)
(if (characterp chr)
(funcall key-code-func chr trans)
(require 'range)
(declare-function range-map "range" (func range))
(range-map
(lambda (kc) (funcall key-code-func kc trans))
chr)))
keyboard-translate-table)
(car
(split-string
(completing-read
"Key Translation: "
(mapcar format-func formatted-trans-alist)
nil t)))))