X window での標準の日本語ターミナルエミュレータ、kterm のソースコー
ドセット一式の中には、kterm.jman
というファイルが含まれて
います。これは、実は kterm の日本語版のオンラインマニュアルページです。
この日本語版マニュアルは、通常のインストール手順ではシステム標準の マニュアルファイル置場には入らない(※注)のです が、せっかくあるのですから是非入れておきましょう(もちろん、日本語マニュ アルをサポートするシステムでないと意味がないのですが…)。
例えば、FreeBSD や HP-UX、Solaris 2.X 以降などでは日本語マニュアル
がサポートされているようです。大抵は、/usr/X11R6/man
に
ja
というサブディレクトリを作り、その中に英語版同様
man1〜man9
のようにセクション単位で分かれたディレクトリを
作って日本語版マニュアルを収めるようになっているはずです。
ですから、このman1
にkterm.1
という日本語マ
ニュアルページを置いておけば、しかるべき日本語対応 man コマンドがあり
さえすれば man kterm で日本語マニュアルが読める、という寸法
です。
注意してほしいのが、オリジナルの kterm.jman
の日本
語は JIS コードで書かれている、ということです。ですから、大抵のシ
ステムでは、単に kterm.jman
を kterm.1
とい
う名前でコピーするだけでは不十分です(JIS コード中に含まれる、ASCII
コードと共通のコード部分が、nroff の特殊文字と解釈されて誤動作してしま
う)。
ですから、あらかじめ、お使いの日本語システムの標準の日本語コードに
合わせて、kterm.jman
を EUC コードか SJIS コードに変換し
たものを kterm.1
にしましょう(日本語コードの変換には ack
などのツールを用います)。
余談ですが、FreeBSD や HP-UX などの man コマンドは圧縮さ
れたオンラインマニュアルページに対応していますから、
kterm.1
を gzip や compress で圧縮
しておくことをお勧めします(FreeBSD は gzip、compress いずれにも対応し、
HP-UX は compress のみに対応…だったはず)。
※注: FreeBSD の package や ports でも入らないようです。FreeBSD の日本語対応 man コマンドはシステ ム標準じゃなくて、package や ports として入れるものなので、それがない と役に立たない日本語マニュアルは最初からインストールしない方針なのでしょ う。[2008, 11/18] →いつの間にか、最近の FreeBSD の ports では入るようになっているようです。今まで大方手でコン パイルしてたから知らなかった…。
kterm 内で emacs -nw として -nw
オプション
をつけて emacs
を起動しても、termcap の設定さえ正しければ、
ちゃんとファンクションキーは解釈され、F1、F2 や
Page Up・Page Down のような特殊キーが
emacs
に認識されます。
ところが、なぜか Home キーや End キーは例外で、
emacs
には非常に不完全な key sequence しか渡されません。
以前から不思議に思っていたのですが、先日何気なく xterm
を
起動してみて、xterm
内なら emacs
にちゃんと
Home・End キーが伝わるし、また、
less
に対しても同じく Home・End キー
が伝わる(文字列入力時)ことに気づきました。
「ということは、これは kterm
がベースとしている
xterm
が少し古くて、最近の XFree86 付属の
xterm
ではそこが改良されているに違いない」と判断して、
kterm 6.2.0
と最近の xterm
のソースコードを
比べてみました。試行錯誤の結果、どうやら kterm
に正しく
Home・End キーの escape sequence を発生させるこ
とができているようですので、パッチを公開します。
なお、このパッチに加えて、termcap の kterm
の設定に
以下の項目を付け加えないと、emacs
や less
に
解釈されませんのでご注意。
kh=\EOH:@7=\EOF
また、もと
もとの kterm
の termcap には不備があることも知られて
いますので、この際ついでにそれも直した方がよいでしょう。
※ FreeBSD の場合、/usr/share/misc/termcap を直し ただけでは不十分で、/usr/share/misc で cap_mkdb termcap を 実行して termcap.db を更新する必要がある。
………ただ、わざわざソースに手を加えて再コンパイルしなくても、X window の Resource の設定で
kterm*VT100.Translations: #override <Key>Home: string("\033OH")\n\
<Key>End: string("\033OF")
のようにする手もあるみたいですね。