@znz blog

ZnZ の memo のようなもの

iTerm2でのIME制御がきかない

| Comments

iTerm2 Build 1.0.0.20131109 で確認しました。

TeraTerm Pro の対応制御シーケンスRLogin の対応している制御コード一覧 には IME の状態制御があります。

iTerm2 はオプションでその制御シーケンスを受け付けるようには出来るのですが、 現状は無視するだけのようです。

制御シーケンス

TeraTerm Pro 由来で RLogin も対応したものらしいです。 具体的なシーケンスとしては TeraTerm Pro の対応制御シーケンス から引用すると、 次の3種類になります。

1
2
3
4
5
  CSI < r    TTIMERSIME の開閉状態を復元する。
  CSI < s    TTIMESVIME の開閉状態を保存する。
  CSI < Ps t TTIMESTIME の開閉状態を設定する。省略時の Ps の値は 0。
               Ps = 0      IME を閉じる。
                  = 1      IME を開く。

iTerm2 の対応

https://github.com/gnachman/iTerm2VT100Terminal.m を見るとわかるのですが、 制御シーケンスの存在は認識しているようです。 その処理で呼ばれているところを追いかけてみると、 現状はただ無視しているだけでした。

このあたりのコードは設定で ProfilesTerminal タブの中にある Use modern parser (experimental) にチェックを入れないと使われないようで、 チェックなしの状態で ruby -e 'puts "\e[<1t" とか実行しても <1t と出るだけで何も起きませんでした。 チェックを入れると puts で自動的に入る改行だけになりましたが、 IME の状態に変化はありませんでした。

Comments