Go to the first, previous, next, last section, table of contents.

キーの役割を交換したいのですが, どうしたらよいですか?

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 などのファイルに書いておくことをお勧めします.


Go to the first, previous, next, last section, table of contents.