漢字コードの自動制御

制御シーケンスで送受信漢字コードを変更出来るようにする

機能

TTXKcodeChange プラグインを入れると、リモート側から制御シーケンスを使用して送受信漢字コードの設定が変更出来るようになります。
以下の制御シーケンスをサポートしています。

<OSC>5963;Pt<ST>
<OSC>5963;Pt<BEL>
設定用シーケンス
Ptは Key=Value の形式で指定し、;で区切る事で複数指定する事もできます。現在のところ、以下のKeyが使えます。
KT  -- 送信漢字コード
       Valueとして SJIS, EUC, JIS, UTF8 を受け付けます。
KR  -- 受信漢字コード
       Valueとして SJIS, EUC, JIS, UTF8, UTF8m を受け付けます。
<OSC>5964;Pt<ST>
<OSC>5964;Pt<BEL>
問い合わせ用シーケンス
Ptには問い合わせる設定を指定します。;で区切る事で複数指定する事もできます。問い合わせに対して、以下の形式の応答を返します。
Key=Value;[Key=Value;...]

使用例

ログインシェルがzshの時の設定例です。

[.zloginの記述]
echo -n "\e]5964;kt;kr\a"              # KT/KRの設定を問い合わせる
read -t 1 TT_ORG_KCODE                 # 応答を待つ(タイムアウト:1秒)
if [ $? -eq 0 ]; then
  echo -n "\e]5963;kr=euc;kt=euc\a"    # 応答があったなら設定を変更する
fi

[.zlogoutの記述]
# .zloginで漢字コードの設定が保存されていたら、その設定に戻す。
if [ " ${TT_ORG_KCODE}" != " " ]; then
  echo -n "\e]5963;${TT_ORG_KCODE}\a"
fi

解説

受信データのフックのサンプルです。
受信データを監視し、対応している制御シーケンスだった場合は設定の変更を行います。
問い合わせに対する応答は、送信バッファを直接書き換えるという少々強引な方法を取っています。

このプラグインを改造すれば、他の設定も制御シーケンスで変更出来るようになるかもしれません。

バグ