キーボード・マッピングの処理
以下のモデルで、 アプリケーションが入力メソッドを使用する方法を示します。 この情報を使用して、キーボード・マッピングのカスタマイズに役立ててください。
入力処理は、次の 3 つのステップに分かれます。
- keycode/keystate(raw) - > keysym/modifier(new) (キー・コード/キー状態 (未加工) - > キー・シンボル/修飾記号 (新規))
このステップは、アプリケーションおよび環境によって決まります。 入力メソッドへの入力のためのキー・シンボル/修飾記号に対する未加工のキー・イベントのマッピングは、 アプリケーションが行います。
AIXwindows 環境では、クライアントは、サーバーでインストールされた、 サーバーのキー・シンボル・テーブル xmodmap を使用して、 このステップを行います。 xmodmap は、「Shift」、「Lock」、 および「Alt-Graphic」キーのマッピングを定義します。 クライアントは、xmodmap に加えて、 X イベントからの Shift および Lock 修飾記号を用いて、 このイベントが表すキー・シンボル/修飾記号を判別します。
例えば、 XK_a キー・シンボルを Shift 修飾記号と一緒に押すと、 xmodmap はそれを XK_A キー・シンボルにマップします。 キー・コードをキー・シンボルにマップするのに「Shift」キーを使用したので、 アプリケーションは、Shift 修飾記号を元の X イベントからマスクする必要があります。 したがって、入力メソッドへの入力は、 XK_A キー・シンボルであり、修飾記号はありません。
別の環境では、デバイスが追加情報を提供しない場合は、 入力メソッドは Shift 修飾記号と一緒に XK_a キー・シンボルを受け取ります。 入力メソッドは、両方の場合に同じマッピングを行い、A の文字を戻す必要があります。
- keysym/modifier(new) - > localized string (キー・シンボル/修飾記号 (新規) - > ローカライズされたストリング)
このステップは、ローカライズされた IMED によって決まり、 各ロケールで変わります。 このステップは、キー・イベントの発生を IMED に通知し、 その IMED が内部的にキー・イベントを使用するという指示を求めます。 これは、 アプリケーションが IMFilter サブルーチンを呼び出したときに発生します。
キー・イベントが内部の処理に使用されることを IMED が示せば、 アプリケーションはこのイベントを無視します。 このイベントを見るのは IMED が最初なので、このステップは、 アプリケーションがイベントを解釈する前に行われなければなりません。 IMED は、重要なキー・イベントだけを使用します。
イベントが内部の処理に使用されないことを IMED が示すと、 アプリケーションは次のステップを実行します。
- keysym/modifier(new) - > customized string (キー・シンボル/修飾記号 (新規) - > カスタマイズされたストリング)
このステップは、 アプリケーションが IMLookupString サブルーチンを呼び出したときに発生します。 入力メソッド・キー・マップ (keycomp コマンドにより作成される) は、 このフェーズのマッピングを定義します。 これは、キー・イベントをストリングにマップする最後の試みであり、 ユーザーはこのマッピングをカスタマイズすることができます。
キー・シンボル/修飾記号 (新規) の組み合わせが、 入力メソッド・キー・マップ (imkeymap) で定義される場合には、ストリングが戻されます。 それ以外の場合には、キー・イベントは入力メソッドには認識されません。