keyboard-translate-table という変数を設定すると Emacs が文字を受け取ったとき あたかも異なる文字を受け取ったように設定できます. 次の Emacs Lisp コードでキーを取り替えることができます. Emacs に評価させて, `(swap-keys ?A ?B)' とすると A と B を取り替えることができます.
注意: ミニバッファのコードで C-g (7) の値はハード・コードされています. C-g を取り替えると問題を引き起こすかもしれません. (これは Emacs 18.58 では修正されています.)
(defun swap-keys (key1 key2) "Swap keys KEY1 and KEY2 using map-key." (map-key key1 key2) (map-key key2 key1))
(defun map-key (from to) "Make key FROM behave as though key TO was typed instead." (setq keyboard-translate-table (concat keyboard-translate-table (let* ((i (length keyboard-translate-table)) (j from) (k i) (str (make-string (max 0 (- j (1- i))) ?X))) (while (<= k j) (aset str (- k i) k) (setq k (1+ k))) str))) (aset keyboard-translate-table from to) (let ((i (1- (length keyboard-translate-table)))) (while (and (>= i 0) (eq (aref keyboard-translate-table i) i)) (setq i (1- i))) (setq keyboard-translate-table (if (eq i -1) nil (substring keyboard-translate-table 0 (1+ i))))))
註: swap-keys を使う前には必ず定義を評価してください! .emacs などのファイルに書いておくことをお勧めします.