eskk.vim icon indicating copy to clipboard operation
eskk.vim copied to clipboard

変換キーで言語モードに入る?

Open tyru opened this issue 15 years ago • 2 comments

&imactivatekeyを使えばできそうな気もするんだけどよく分かってない...

tyru avatar Apr 09 '10 13:04 tyru

imactivatekeyは、vimからXIMをアクティブ(有効)にする為に実装された機能の副産物です。 XIMには自前で活性化する為の仕組みこそあるにはあるのですが、IMにより挙動がまちまちであり、それを各国のIMで同じに扱う為にはアクティブになるキーをエミュレートするしかないという事になり、ルートウィンドウに対して活性化キーを送信するという仕組み(hack)で実装されました。 今はXIMよりもgtk-immoduleを/qt-immoduleが一般的になってきたので存在価値がそれほどありません。もちろんCUIでは無意味なキーです。($DISPLAYさえ設定されていれば行けそうな気がしなくないですが... imactivatekeyはその為のキーで、各IM(kinput2とかいろいろ)の活性化キーを知っている人しか意味の無い変数です。間違った値の場合、もちろんIMが活性化される事はありませんしエラーも出ません。

imactivatekeyに対して誤解されている方がいるのですが、実はこういう経緯ですので、imactivatekeyを使うのは避けた方が良いかと思います。 ちなみに、gtk-immoduleには活性化させる機能がなく、かつキー押下をイベントではなくスニファ形式で取得しているのでimactivatekeyを使った実装は出来ません。

mattn avatar Jun 21 '10 07:06 mattn

追記: Windowsの場合、IME自身にAPIで活性化出来る仕組みがあるので必要ありません。 またXIMを使った場合でもIMがAPIによる活性化機能を持っている場合もあります。 この場合はimactivatekeyの値を空にすると機能する...という変態法則になっています。

mattn avatar Jun 21 '10 07:06 mattn