PuTTY で ISO 2022 による日本語入力・表示を可能にするパッチ

概要

PuTTY は、Simon Tatham 氏によって作成された、フリーの Win32 用 Telnet/SSH クライアントです。PuTTY は ISO 2022 に対応していないので、対応させるためにこのパッチを作りました。

生成方法

Cygwin を使う場合

  1. Cygwin を起動します。
  2. 適当な作業ディレクトリを作ります。
    $ mkdir /tmp/putty ; cd /tmp/putty
    
  3. オリジナルの PuTTY のソースファイルを展開します。
    $ unzip ~/putty-src.zip
    

    ~/ には putty-src.zip のあるディレクトリの POSIX パス名を指定します。

  4. ファイル名を小文字に変更します。大文字のままでは patch がうまくあたらなかったり make に失敗する可能性があるので、必ず小文字にしてください。
    $ for i in *; do mv $i `echo $i|tr A-Z a-z`; done
    

    これを実行すると DOC でエラーが出ますが、DOC は大文字のままでいいので無視してください。

  5. puttykj.patch をあてます。
    $ patch -Np1 < ~/puttykj.patch
    

    ~/ には puttykj.patch のあるディレクトリの POSIX パス名を指定します。

  6. 必要に応じて、puttyjp.patch をあてます。このパッチをあてると、デフォルト設定が、EUC-JP を使う日本語環境向けになります。また、ダイアログボックスとメニューの一部を日本語にするためのファイルが作成されます。
    $ patch -Np1 < ~/puttyjp.patch
    

    ~/ には puttyjp.patch のあるディレクトリの POSIX パス名を指定します。

  7. makefile.cyg を使って make を実行します。
    $ make -f makefile.cyg COMPAT=-DNO_MULTIMON
    

    いくつかのファイルのコンパイル時に警告が出ますが無視して構いません。

Cygwin を使わない場合

  1. ファイルを展開し、Cygwin の場合と同様にパッチをあてます。Unix の patch コマンドに相当するプログラムを持っていない場合は、web で検索すると見つかりますので、そちらをダウンロードして使ってください。
  2. もとのドキュメントに従って生成します。このとき、iso2022.c および l10n.c もコンパイルし一緒にリンクするようにしてください。makefile.cyg 以外の makefile* は変更していないので、注意してください。

設定項目

Font
日本語を表示できるフォントを選んでください。MS ゴシック等を選ぶとダイアログのフォント名のところに正しく表示されませんが、動作に問題はありません。
Translation
チェックボックス Translate ISO 2022 from/to UTF-8 と、テキストボックス Initialisation code が追加されていると思います。EUC-JP を使う場合、チェックボックスにチェックを入れ、テキストボックスに euc-jp と入力し、その上のコンボボックスは UTF-8 を選択してください。テキストボックスに指定する文字列によって、その他のエンコーディング法も使えるようになっています。
Windows 95 で fullwidth 文字がうまく表示されない場合
Initialisation code の先頭に w95 という文字を入れてください。たとえば euc-jp の場合は w95euc-jp のようになります。
マイクロソフト漢字コード (Windows のコードページ 932) を使うには
マイクロソフト漢字コードは ISO 2022 準拠ではありませんが、需要があるようなので対応しました。Initialisation code に ms_kanji を指定してください。
Initialisation code の例

ASCII のかわりに JIS X 0201 ローマ字を使う場合、上のコードの 1b2842 を 1b284a に置換してください。

文字化けについて

文字化けが発生し戻らないようであれば、メニューの Reset Terminal を選択してください。また、日本語 EUC で使っているとき、Unix の一部のコマンドを使うと、G1 に他の図形文字集合が指示されてしまいその後の日本語 EUC がすべて化けてしまうことがあります。

多くの場合この原因は terminfo の enacs、rmacs、smacs 項目 (または termcap の eA、ae、as) にあります。これは環境変数 TERM に kterm を指定して回避できる場合がありますが、PuTTY や xterm は kterm が対応している status line に対応していないため、別の問題が発生することがあります。enacs の \E)0 を消し、smacs の ^N を消して \E(0、rmacs の ^O を消して \E(B を指定すると正しく動作するようになります。

文字化けが発生しないようにするもう一つの方法

Initialisation code の先頭に lockgr という文字列を入れて、lockgr euc-jp のように指定すると、文字化けを回避できることがあります。面倒なことをせずにとりあえず使いたい場合に便利ですが、ISO 2022 非準拠となるため推奨しません。

問題点

連絡先

本パッチをあてた PuTTY についての連絡は hdk@SoftHome.net までお願いします。本パッチをあてた PuTTY に関する質問・バグ報告等は、オリジナルの作者である Simon Tatham 氏へはしないようにしてください。

謝辞

JIS 漢字コード (JIS X 0208 および JIS X 0212) と UCS の対応表として Tomokazu Matsuo さんの UNIJ_DB を使用させていただきました。

JIS X 0213 と UCS の対応表として earthian さんの JIS X 0213:2000 関連データ jisx0213code-csv.txt を使用させていただきました。

Hideki EIRAKU