Tweet

skk 系については不案内. すまぬ.

Fedora 開発版では

要するに,まとめるとこういうことなのですが. これでわかってしまう場合は,以下の説明は不要なのかな.

  • 従来のかな漢字変換
    FreeWnn と Canna がある
    • かな漢字変換サーバ直接通信
      emacs (Fedora では未対応)
    • kinput2 (XIM) 経由
      多くの X アプリ
  • IIIMF
    変換エンジンは canna
    • IIIMF サーバ直接通信
      gnome アプリ
    • XIM ブリッジ経由
      kde アプリ・従来の X アプリ

UNIX での従来のかな漢字変換システム

(Free)Wnn と Canna が双璧である.

Wnn, Canna ともにサーバへは TCP ソケット経由で接続される. 他のマシンの変換サーバを使用することも可能である. Wnn のサーバプログラム名は jserver,かんなは cannaserver という名前である.

emacs

emacs が直接かな漢字変換サーバと通信を行う. Wnn に対する emacs マクロは egg と呼ばれる.

これは X 上でも同様に使用することができる. emacs 上でかな漢字変換のオン・オフのキーバインドが他の X アプリと異なる場合があるのは,このため.

jserver <--(KKTPプロトコル)--> emacs
cannaserver <--(かんなプロトコル)-->emacs

(can)uum

文字端末上でかな漢字入力を行うためのプログラム.

起動すると pty (疑似端末)を取得し,この上でシェルを起動する. pty の入出力をフックすることにより,かな漢字変換を実現する.

もちろん kterm 上でも実行可能ではある.

jserver <--(KKTPプロトコル)--> uum <--(pty)--> (コンソール上)
cannaserver <--(かんなプロトコル)--> canuum <--(pty)--> (コンソール上)

XIM

X 上の変換フロントエンドサーバ.

ウィンドウへの入力をフックし,変換サーバへと送る. このフックの手法は XIM プロトコルとして,X11R5 で標準化された.

xwnmo は Wnn 専用の XIM サーバ. kinput2 は Wnn と Canna に対応している.

jserver <--(KKTPプロトコル)--> kinput2/xwnmo <--(XIM)--> ktermなどのXプログラム
cannaserver <--(かんなプロトコル)--> kinput2 <--(XIM)--> ktermなどのXプログラム

IIIMF と GNOME

IIIMF とは,おおざっぱに言うと,

  • 変換プロトコルの標準化
  • 変換サーバの標準化とプラグインによる多言語化

とういことらしい.

XIM 経由

httx (htt_xbe) が IIIMF サーバとのゲートウェイとなり,XIM プロトコルでかな漢字変換を実現.

kinput2 でかな漢字入力が可能な X アプリでは,入力可能のはず.

htt <--(IIIMF)--> htt_xbe <--(XIM)--> Xアプリ

IIIMF での直接通信

gnome アプリでは,IIIMF サーバとの直接通信による,かな漢字変換入力が可能. gedit などでは,ウィンドウ内で右クリックで「入力メソッド」メニューより選択可能.

なお,kde アプリでは,この直接通信には対応していない.

htt <--(IIIMF)--> gnomeアプリ

キーバインド

XIM の場合

  • 変換オフ→変換オンは,X アプリ側
  • 変換オン→変換オフは,XIM サーバ側

で設定する.

従って,変換オンと変換オフで別のキーバインドということも有り得る.

バグなど

emacs で httx が死ぬ
代わりに xemacs を使うしかないのかなぁ.
Ctrl + Space 問題
httx での変換のオン・オフのキーバインド. emacs では多用するキーバインド (mark-set) であり,これが入力できないのは大問題. と思いきや,xemasc + 日本語キーボードでは Ctrl+@ でも mark-set は可能. とりあえずこれで逃げましょう.

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-01 (火) 05:16:51 (4427d)