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