x-input-method


x-input-method proposal

imswitch-en

Goal

Give default system configuration for input method on X Window System. It solves novice user's inconvenient.

Overview

Some languages (such as Japanese, Chinese, and Korean) need special method to input their languages on X Window System.

We call such method as 'Input Method' (acronym, "IM").

Main works of IM are to receive input from user's key, to negotiate with conversion server, and to give result to user's application.

      Application ------ IM ----- Backend server
USER  input "henkan"   ->  -----> verification <-> dictionary
       output "変換"   <-   <----- "変換"

Figure: typical conversion processing

Fortunately or unfortunately, there are various IM in UNIX world. For example Debian has kinput2, skkinput, scim, uim, and iiimf-htt-xbe (and etc...) for Japanese IM. They are partially similar, but partially different. Which one is best is nonsense question. It depends user's choice.

In detail, IM structure for X Window System is not only one.

Problem

Generally each IMs are exclusive. When you want to use kinput2, you can't skkinnput at same time.

Typical configration way is to set one of them ~/.xsession per user. It is good because we can give a choice to user, but on the other hand it is bad because each user needs to set up by themself. It is FAQ that 'Run set-language-env, and create your ~/.xsession.' We believe this is workaround, not solution.

Idea

It is better to provide 'default' input method when administrator installed any input method package.

/etc/X11/Xsession.d is location to launch specific application for default user. Of course we need to count users who have custom ~/.xsession. It can check after 50xfree86-common_determine-startup.

Next, we need 'default' value. Fortunately there is 'alternative system' in Debian.

(Hmm, needs brain storming...)

Memo

Backend XIM IMmodule note
anthy uim-xim uim-gtk2.0
scim scim-uim + uim-xim scim-gtk2-immodule
skk skkinput
skk(local dic) uim-xim uim-gtk2.0
canna kinput2-canna, kinput2-canna-wnn, uim-xim, iiimf-htt-xbe uim-gtk2.0, iiimgcf
freewnn kinput2-canna-wnn
prime uim-xim uim-gtk2.0
atokx2 iiimf-htt-xbe iiimgcf
omron wnn iiimf-htt-xbe? iiimgcf?
t-code uim-xim uim-gtk2.0

以下日本語ドラフト

im-switch とりあえず公開

im-switchは、FedoraCoreで使われている入力メソッドフレームワークを部分的にDebianに移植したものです。

Debianでは多様なバックエンド、入力メソッド(XIMやIMmoduleなど)がありますが、その代償として「デフォルト」がなく、各ユーザーが手動で環境変数や~/.xsessionを編集しなければなりませんでした。

im-switchのフレームワークに則った入力メソッドパッケージはim-switch管理下のalternativeの1つとなり、これによって優先度の高い入力メソッドパッケージが自動的に「デフォルト」の入力メソッドになります(im-switchで変更可能)。また、デフォルトとは別の入力メソッドとは違うものを使いたいユーザーも、im-switchコマンドを使って変更できます。

apt-lineは次のとおりです。ただ、別の変なものがいろいろあるので、PINを使うなり、必要最小限のものを入れたらコメントアウトするなりしておいたほうがよいでしょう。

deb http://kmuto.jp/debian/mtu unstable main
deb-src http://kmuto.jp/debian/mtu unstable main

apt-get install im-switchでインストールされます。本フレームワークに対応した入力メソッドパッケージの例として、改変済みのuim(uim-xim、uim-gtk2.0を入れる)、skkinput、kinput2、atokx2(iiimgcf)も上記URLにて配布しています。

開発はsvnで行っており、http://kmuto.jp/svn/im-switchでanonymous取得できます(svn checkout http://kmuto.jp/svn/im-switch/trunk im-switch)。

デフォルトを「none」にすると、XIM/IMmoduleの設定は行われず、ユーザー固有の設定のみを利用します。

for maintainers

各入力メソッドのパッケージは、/etc/X11/xinit/xinput.d/にそのパッケージ固有のパラメータファイルを置きます(/usr/share/doc/im-switch/sample/にサンプルがあります)。たとえばバックエンドにcannaを使うXIMであるkinput2-cannaの場合は次のようになります。

XIM=kinput2                                <- XMODIFIERS=@im=の値
XIM_PROGRAM=/usr/X11R6/bin/kinput2-canna   <- XIMとして起動するプログラム(フルパス)
XIM_ARGS="+xim"                            <- XIMの引数
GTK_IM_MODULE=                             <- GTK+のIMmoduleの値
DEPENDS=canna                              <- この入力メソッドが依存するパッケージ

各値を空にすると、そのパラメータは利用されないことになります。

DEPENDSには、依存関係表記として「,」(A,BはAとBの両方のパッケージが必要)および「|」(A|BはAまたはBのいずれかのパッケージが必要)を利用できます。ただし、DEPENDSがあるからといってそのパッケージを自動的にインストールするわけではありません。im-switchを実行して入力メソッドを変更したときに、そのパッケージが入っていない場合は警告するだけです。

このファイルはBourne Shellのシェルスクリプトなので、必要に応じてプログラムを記述したり、環境変数をexportしたりすることもできます。sh系列のシェルによって実行されますが、bashとは限らないことに注意してください。dashで動作するかどうか検証すべきです。

入力メソッドが複数のバックエンドに対応しているときには、それぞれにファイルを用意します。uim_skk、uim_anthyのように「<メソッド名>_<バックエンド名>」のような書式を使うことをお勧めします。

パッケージのpostinstでは、次のようにalternativeを登録します。

update-alternatives \
        --install /etc/X11/xinit/xinput.d/ja_JP xinput-ja_JP \
        /etc/X11/xinit/xinput.d/kinput2-canna 60

パッケージのprermでは、alternativeの削除を行います。

update-alternatives --remove xinput-ja_JP /etc/X11/xinit/xinput.d/kinput2-canna

alternative名は、xinput-<言語名>です(.EUC-JPや.UTF-8などのエンコーディング名は付けません)。postinst時のように、/etc/X11/xinit/xinput.d/<言語名>にシンボリックリンクファイルを作成します。

優先度をここでは60にしていますが、次のようにポリシーを仮定しています(要協議、以下は最近の青木のNMU後の値の例をベースに青木がアップデートした内容)。

(青木コメント;UIMやSCIMのような多言語をサポートするIMの設定をim-switchでするのは、無用にプログラムを複雑化するのでなくしました。これらは付帯するGUIパッケージにまかしました。そう言った意味でも、上記のkinput2に60を与えるのは今では少し無理があります。)

設定の起動は/etc/X11/Xsession.d/90im-switchによって行われます。このとき、ユーザーの~/.xinput.d/<言語名>が最初に検索され、見つからないときに/etc/X11/xinput.d/<言語名>が検索されます(90im-switchを見るとわかるようにさらに別のファイルも探しますが、Debianではこの2つが使われると考えておいてください)。このように検索されたファイルが設定パラメータとして取り込まれ、90im-switchからXIMやIMmoduleの設定と起動が行われます。

TODO

高い優先度のもの

中程度の優先度のもの

低い優先度のもの

開発体制

現在、次の開発メンバーによって開発を行っています。


Last modified : 2006/06/24 22:09:58 JST