共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)

Text[Field] ウィジェットを使用しないカスタマイズされたウィジェット内での文字入力

アプリケーションはユーザから文字入力を受け付けても、そのために TextField ウィジェットや Text ウィジェットを使用しない場合があります。たとえば、DrawingArea ウィジェットを使用するアプリケーションでは、ユーザは直接 DrawingArea にテキストを入力できます。この場合、アプリケーションは、後の節で説明するように Xlib XIM 関数を使用できます。または、代わりにアプリケーションは Motif 1.2 の XmIm 関数を使用できます。XmIm 関数により、アプリケーションは最小限のコードで入力メソッドに接続および対話できます。さらに、XmIm 関数によって Motif VendorShell ウィジェットがアプリケーションに代わって入力メソッドのジオメトリ管理を実行できます。

XmIm 関数は Motif 1.2 のすべての処理系に含まれて出荷されますが、XmIm 関数は Motif 1.2 のドキュメントには記載されていません。OSF は、Motif 2.0 のために XmIm 関数を増やしてドキュメント化する意向を明らかにしています。ここで説明する関数は Motif 1.2 の XmIm 関数です。


注 -

Motif 1.2 の XmIm 関数は、プリエディット・コールバック形式やステータス・コールバック形式の入力メソッドをサポートしません。Xlib API によりプリエディット・コールバックが使用できます。詳細は、「XIM 管理」を参照してください。


Motif 1.2 ベースのアプリケーションで安全に使用できる XmIm 関数を次に示します。パラメータと型の正式な説明は xm.h ヘッダ・ファイルにあります。

関数名 

説明 

XmImRegister()

XOpenIM() を実行し、サポートされている形式の入力メソッドを照会します。

XmImSetValues()

プリエディットおよびステータスの形式を調整および選択します。 

XmImSetFocusValues()

XIC がなければ作成します。入力メソッドにウィジェットがフォーカスを獲得したことを通知します。XIC に渡される値を設定します。 

 

XmImUnsetFocus()

入力メソッドにウィジェットがフォーカスを失ったことを通知します。 

XmImMbLookupString()

XmbLookupString() と等価の Xm の関数で、1 つ以上のキー・イベントを文字に変換します。戻り値は XmbLookupString() と等価です。

 

XmImUnregister()

入力メソッドとウィジェットを切り離し、新しい入力メソッドへの接続を可能にします。必ずしも入力メソッドを閉じるわけではありません (処理系によります)。 

XmImSetValues() 関数と XmImSetFocusValues() 関数により、アプリケーションは入力メソッドが必要とする情報を渡すことができます。すべての値が必要ではない場合でも、(それぞれの値はプリエディットおよびステータスの形式をサポートするので) アプリケーションがすべての値を渡すことが重要です。これは、ユーザまたは VendorShell ウィジェットによってどの形式が選択されたかをアプリケーションは認識できないからです。次に、XmImSet[Focus]Values() 関数への呼び出しで渡されるべき各値の引き数とデータ型を示します。

引き数名 

データ型 

XmNbackground

Pixel 

XmNforeground

Pixel 

XmNbackgroundPixma

Pixmap 

XmNspotLocation

XPoint 

XmNfontList

Motif fontlist  

XmNlineSpace

int (連続ベースライン間のピクセルの高さ) 

XmIm 関数は次のように使用されます。