emacs22 系で BS キー / Del キー入れ換え

FreeBSD6.3 にしてからというか、emacs22 系にしてからだと思うが、BS キーと Del キーの入れ換えが機能しなくなったようだ。通常は、MacX11 サーバに FreeBSDemacs を X のクライアントとして表示させ Mac英語キーボードから操作していたからか、全く気づかずに使っていた。そんな折、リモートでログインし kterm から emacs -nw で起動してみたところ、del キーが効かずにヘルプが表示されるようになっていたのだ。もちろん C-h も効かすにヘルプが登場する。調べる時間もなく、仕方ないのでいちいちカーソルを移動して消していたがもう我慢ならず調べてみた。元々 .emacs には、大昔から bobcat (わたしが個人的にボブキャットと呼んでいる)を定義していた。

(load-library "term/bobcat")

どうやらこれが効いてないようだ。
emacs 21 系の bobcat を見ると

(load "term/keyswap" nil t)

たらい回しかい、ということで keyswap を見ると、

(let *1

ということで、キーを入れかえている。(カッコが二重になるとはてな記法にひっかかるのでスペースを入れてある。)
今度は、emacs22 系のボブキャットを見てみると

(defun terminal-init-bobcat ()
  "Terminal initialization function for bobcat."  
  ;; HP terminals usually encourage using ^H as the rubout character
  (keyboard-translate ?\177 ?\^h)
  (keyboard-translate ?\^h ?\177))

ということで、定義だけになってしまったようだ。
それならば、ということで、手元の .emacs を修正した。つか、呼ぶだけなのだが。

(load-library "term/bobcat")
(terminal-init-bobcat)

これでストレス無くキー操作ができるようになった。

*1:the-table (make-string 128 0))) (let ( ( i 0 ) ) (while (< i 128) (aset the-table i i) (setq i (1+ i)))) ;; Swap ^H and DEL (aset the-table ?\177 ?\^h) (aset the-table ?\^h ?\177) (setq keyboard-translate-table the-table