kinput2

名称

kinput2 - X11用漢字入力サーバ

書式

kinput2 [-options...]

解説

Kinput2 は日本語テキストを入力するためのXウインドウアプリケーションです。かな漢字変換を必要とする他のアプリケーションへのフロントエンドとして働きます。

起動すると、初期化(マシンによっては30秒ほどかかることもあります)を行った後、kinput2は他のクライアントからの日本語入力要求を黙って待ちます(つまりウインドウは開きません)。kinput2が要求を受け取るとウインドウを開き、変換プロセスを開始します。入力が確定すると、クライアントに変換されたテキストを送り返します。

Kinput2はその前身である、X11R4で配布されたkinputに対して、大幅な改善が加えられたものです。

自由位置入力

この特徴によりカーソル位置において変換を行えるようになり、カーソル位置と変換ウインドウ間の不要な視線の移動が避けられます。Kinput2はルートウインドウ型の入力と固定位置型の入力もサポートしています。

複数のプロトコルのサポート

フロントエンドとクライアント間の複数の変換プロトコルをサポートしています。サポートされているプロトコルは次の通りです。

複数の変換エンジンのサポート

Kinput2はWnn,Canna,Sj3の三種類の変換エンジンを使うことができます。コンパイル時、または実行時にこの中から一つを選ぶことができます。

Kinputとの互換性

Kinput2はkinputの完全上位互換なので、フロントエンドとしてkinputを使うアプリケーションは、kinput2も使うことができます。しかしその場合、アプリケーションは自由位置入力の利点を利用できません。

オプション

kinput2 は標準のXツールキットコマンドラインオプションを全て受け付けます。次に示すオプションも受け付けます。

-wnn
変換エンジンとしてWnn jserverを使用することを指定します。
-jserver
変換の際に利用するjserverのホスト名を指定します。
-ccdef
入力文字の変換ルールファイルを指定します。
-canna
変換エンジンとしてかんな変換サーバ(irohaserver)を使用することを指定します。
-cannaserver
かんな変換サーバのホスト名を指定します。
-cannafile
かんなの変換カスタマイズファイルを指定します。
-sj3
変換エンジンとしてSj3変換サーバ(sj3serv)を使用することを指定します。
-sj3serv
プライマリのsj3変換サーバのホスト名を指定します。
-sj3serv2
セカンダリのsj3変換サーバのホスト名を指定します。セカンダリサーバはkinput2がプライマリサーバに接続できなかった場合に使用されます。
-font ascii-font
ASCIIテキストを表示するときのデフォルトフォントを指定します。
-kanjifont kanji-font
漢字テキストを表示するときのデフォルトフォントを指定します。
-kanafont kana-font
かなテキストを表示するときのデフォルトフォントを指定します。
-/+kinput
kinputプロトコルファミリの使用を可能/不可能にします(kinputプロトコル、kinput2プロトコル、jinputプロトコル、xlcプロトコルのことです)。
-/+ximp
XIMPプロトコルの使用を可能/不可能にします。
-/+xim
X Input Methodプロトコルの使用を可能/不可能にします。
-bc
kinput2がサポートする通信プロトコルの一つであるKinputプロトコルは、他のクライアントにフロントエンドの存在を通知するために、Xウインドウのセレクション機構を使用します。このオプションはkinput2に"_JAPANESE_CONVERSION"だけでなく"JAPANESE_CONVERSION"セレクション(非標準のセレクション名)も使用することを強制します。これは下位互換性のためのもので、多くのkinputと接続するアプリケーションが未だ非標準のセレクションを使用しているためです。

ウィジェットツリー

次に示すのはkinput2のウィジェット階層です

          Kinput2  kinput2
               ConversionManager  convmanager
                    KinputProtocol  kinputprotocol
                    XimpProtocol  ximpprotocol
                    IMProtocol  improtocol
                    SeparateConversion  converter
                         CcWnn  inputObj
                         Canna  inputObj
                         Sj3  inputObj
                         JpWcharDisplay  displayObj
                         Form  form
                              ICLabel  mode
                                   JpWcharDisplay  display
                              Canvas  text
                         TransientShell  selectionShell
                              CandidatePanel  selection
                                   JpWcharDisplay  display
                         TransientShell  auxShell
                              AuxPanel  aux
                                   JpWcharDisplay  display
                    OffTheSpotConversion  converter
                         CcWnn  inputObj
                         Canna  inputObj
                         Sj3  inputObj
                         JpWcharDisplay  displayObj
                         AdoptedShell  modeShell
                              ICLabel  mode
                                   JpWcharDisplay display
                         CanvasShell  text
                         TransientShell  selectionShell
                              CandidatePanel  selection
                                   JpWcharDisplay  display
                         TransientShell  auxShell
                              AuxPanel  aux
                                   JpWcharDisplay  display
                    OverTheSpotConversion  converter
                         CcWnn  inputObj
                         Canna  inputObj
                         Sj3  inputObj
                         JpWcharDisplay  displayObj
                         TransientShell  selectionShell
                              CandidatePanel  selection
                                   JpWcharDisplay  display
                         TransientShell  auxShell
                              AuxPanel  aux
                                   JpWcharDisplay  display
                         AdoptedShell  modeShell
                              ICLabel  mode
                                   JpWcharDisplay  display
                         TransientShell  modeShell
                              ICLabel  mode
                                   JpWcharDisplay  display
                         CanvasShell  text

リソース

ここに書ききれないほど多くのリソースがありますが、その多くは知る必要がありません。そこで、変更する必要があると思われるリソースのみに関して簡単な説明を示します。

Kinput2 アプリケーションのリソース:

conversionEngine
このリソースは使用する変換エンジンを指定します。"wnn","canna","sj3"の中から一つを指定できます。

ConversionControlウィジェット (SeparateConversion, OffTheSpotConversion, OverTheSpotConversionのスーパークラス) のリソース:

sendbackKeyPress
このリソースが"true"なら、奪われたけれどもkinput2に使われなかったKeyPressイベントは変換テキストがないときにクライアントに送り返されます。この機能は便利ですが、対応するKeyReleaseイベントが送られないのでクライアントを混乱させることがあります。また、それらのイベントの"send_event"フラグが真なので、kinput2から送り返されたイベントを受け付けないクライアントもあります。例えばktermはリソースファイルに "KTerm*allowSendEvents: true" と記述されていない場合、それらのイベントを受け付けません。sendbackKeyPressリソースのデフォルトの値はtrueです。

OverTheSpotConversion(自由位置入力)ウィジェットのリソース:

shrinkWindow
このリソースが"true"なら、自由位置入力のウインドウの幅はその中のテキストの長さにしたがって縮小します。そうでなければウインドウ幅は縮小しません。Xサーバのウインドウリサイズのパフォーマンスが悪いならこのリソースを"false"にしても構いません。デフォルトは"true"です。
modeLocation
このリソースは自由位置入力をする場合のステータスウィジェットの位置を指定します。クライアントが明示的に指定しない限り、位置はこのリソースによって決定されます。値が"topleft"なら、ウィジェットはクライアントのウインドウの左上に置かれます。値として"topright","bottomleft","bottomright"を指定することもできます。値が"tracktext"の時は、ウィジェットはカーソル位置に置かれ、カーソルにしたがって移動します。ただし変換に使える区域が小さすぎる場合は、ステータスはクライアントのウインドウの左下に置かれます。デフォルトは"tracktext"です。
modeBorderForeground
このリソースが"true"なら、ステータスウィジェットの色はウィジェットの前景色と同じ色に強制されます。デフォルトは"false"です。

CcWnn(Wnnを使った変換ウィジェット)のリソース:

jserver
このリソースは変換に使うプライマリのjserverのホスト名を指定します。指定されなかった場合は、"JSERVER"環境変数の値が使われます。
jserver2nd
このリソースはプライマリサーバが使えないときに変換に使うセカンダリのjserverのホスト名を指定します。指定されなかった場合はkinput2はセカンダリサーバを使用しません。
wnnEnvrc
このリソースはWnnの変換環境設定ファイルのファイル名を指定します。このファイルのフォーマットはWnnのドキュメントを見てください。デフォルトは/usr/local/lib/wnn/wnnenvrc です。
ccdef
このリソースは入力文字の変換ルールファイルを指定します。デフォルトは/usr/lib/X11/ccdef/ccdef.kinput2 です。

Canna(かんなを使った変換ウィジェット)のリソース:

sj3serv
このリソースは変換に使うCannaサーバのホスト名を指定します。
cannafile
このリソースはかんなの変換カスタマイズファイルを指定します。

Sj3(SJ3を使った変換ウィジェット)のリソース:

sj3serv
このリソースはプライマリのsj3変換サーバのホスト名を指定します。指定されなかった場合は、"SJ3SERV"環境変数の値が使われます。
sj3serv2
このリソースはセカンダリのsj3変換サーバのホスト名を指定します。セカンダリサーバはkinput2がプライマリサーバに接続できなかった場合に使用されます。
rcfile
このリソースはSj3変換カスタマイズファイルのファイル名を指定します。デフォルトは/usr/lib/X11/sj3def/sjrc です。
rkfile
このリソースはローマ字-かな変換ルールファイルを指定します。デフォルトは/usr/lib/X11/sj3def/sjrk です。

JpWcharDisplay(日本語テキスト表示ウィジェット)のリソース:

font, kanjiFont, kanaFont
これらのリソースはそれぞれASCII,漢字、かなを表示するときのフォントを指定します。kinput2はクライアントの要求によってフォントを動的に変更するので、このリソースで指定されたフォントは使用されないかもしれません。指定されなかった場合は次のフォントが使用されます。
-*-fixed-medium-r-normal--14-*-*-*-c-*-iso8859-1
-*-fixed-medium-r-normal--14-*-*-*-c-*-jisx0208.1983-0
-*-fixed-medium-r-normal--14-*-*-*-c-*-jisx0201.1976-0

KinputProtocol(kinputプロトコルファミリ-kinput,kinput2,jinput,xlc プロトコル 操作ウィジェット)のリソース:

backwardCompatible
全てのkinputプロトコルファミリは他のクライアントにフロントエンドの存在を通知するために、Xウインドウのセレクション機構を使用します。このリソースが"true"なら、kinput2は"_JAPANESE_CONVERSION"だけでなく"JAPANESE_CONVERSION"セレクション(非標準のセレクション名)も使用します。これは下位互換性のためのもので、多くのkinputと接続するアプリケーションが未だ非標準のセレクションを使用しているためです。
xlcConversionStartKey
このリソースは変換開始のキーを指定します。キーは、xlcプロトコルを用いるクライアントに対して、kinput2にいつ変換要求を行うかを決定させるきっかけになります。指定の方法は、次に示すような文法によります。
modifier-names<Key>keysym-name
"modifier-names"は"Shift","Lock","Meta","Alt","Mod[1-5]"の組合わせです。デフォルトは"Shift<Key>space"です。

XimpProtocol,IMProtocol(XIMPプロトコルとX Input Methodプロトコルの操作)のリソース:

conversionStartKeys
このリソースは変換開始のキーを指定します。指定の方法は、次に示すような文法によります。
modifier-names<Key>keysym-name

modifier-namesは"Shift","Lock","Meta","Alt","Mod[1-5]"の組合わせです。"~"をそれぞれのmodifier-namesの前に置くこともでき、これはその修飾キーが押されていないという事を表します。例えば、変換開始キーが"漢字"キーで、シフトキーが押されていてコントロールキーが押されていない状態(他の修飾キーはどちらでもよい)だとすると、次のように指定します。

Shift ~Ctrl<Key>Kanji

改行をはさんで複数のキーを指定することもできます。デフォルトは次の通りです。

Shift<Key>space \n\
Ctrl<Key>Kanji
defaultFontList
このリソースはクライアントがフォントを指定しなかった時に使われるフォントを指定します。デフォルトは
-*-fixed-medium-r-normal--14-*-*-*-c-*
です。

クライアントのセットアップ

X Input Methodプロトコルを使うときには、使用したい入力サーバの種類を(クライアントに対して)指定しなければなりません。これは"inputMethod"リソースか"XMODIFIERS"環境変数を設定することで実現できます。"inputMethod"リソースを見ないクライアントも "XMODIFIERS"変数を無視するクライアントもありますので、両方を設定しておくのが賢明です。

kinput2を使うためには、次の行をリソースファイル(.Xresourcesや.Xdefaults)に付け加える必要があります。
*inputMethod: kinput2
そして"XMODIFIERS"変数を"@im=kinput2"に設定してください。
setenv XMODIFIERS "@im=kinput2" (cshの場合)
XMODIFIERS="@im=kinput2"; export XMODIFIERS (shの場合)

関連項目

Wnnのマニュアル, Cannaのマニュアル, Sj3のマニュアル, XIMP protocol specification, The Input Method Protocol

著作権

Copyright 1988, 1989, 1990, 1991, 1992, 1994 Software Research Associates, Inc. Copyright 1991 NEC Corporation, Tokyo, Japan. Copyright 1991 Sony Corporation

作者

Makoto Ishisone, Software Research Associates, Inc. Akira Kon, NEC Corporation Naoshi Suzuki, Sony Corporation