このセクションでは、キー・イベントの処理に関連する問題について説明します。
現在解決されていないキーボードの問題は、次のとおりです。
一部の非英語キーボードではキートップに特定のアクセント・キーが刻印されており、したがってそれらはプライマリ・レイヤーの文字です。ところが、それらに対応する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はキー・コード - キーシム・マッピングの情報をリフレッシュしません。