このセクションでは、キー・イベントの処理に関連する問題について説明します。
現在解決されていないキーボードの問題は、次のとおりです。
一部の非英語キーボードではキートップに特定のアクセント・キーが刻印されており、したがってそれらはプライマリ・レイヤーの文字です。 ところが、それらに対応するJavaキー・コードがないため、ニーモニックとして使用できません。
実行時にデフォルトのロケールを変更しても、メニューのアクセラレータ・キーとして表示されるテキストが変更されません。
標準109キー日本語キーボードでは、円記号キーとバックスラッシュ・キーのどちらの場合もバックスラッシュが生成されますが、これは両者のWM_CHAR
メッセージの文字コードが同じであるためです。 AWTはそれらを区別すべきです。 これは将来のリリースで修正される予定です。
Oracle Solaris 10およびLinux x86システムに関係するキーボードの問題を次に示します。
これらのシステムでのキーボード入力は通常、X Window SystemのXキーボード拡張(XKB)に基づいています。 ユーザーは、1つのキーボード・レイアウト(たとえば、デンマーク語のdk
)のみを構成することも、いくつかのレイアウト(たとえば、us
とdk
)を構成して切り替えることもできます。
sk
、hu
、cz
などの一部のキーボード・レイアウトでは、数値入力キーパッドの小数点を押したときに、小数点の入力だけでなく1つ前の文字の削除も行われます。 その原因はネイティブのバグにあります。 回避方法は、us
とsk
など、2つのレイアウトを使用することです。 この場合、どちらのレイアウトでも数値入力キーパッドは正しく動作します。
キーボードの動的変更をサポートするUNIXシステム上で、実行中のJavaアプリケーションはそのような変更を認識しません。 たとえば、キーボードをUSからドイツ語に変更しても、キーボード・マッピングは変更されません。 Xサーバーはその変更を検出して対象クライアントにMappingNotify
イベントを送出しますが、AWTはキー・コード - キーシム・マッピングの情報をリフレッシュしません。