テキスト ノードを書き込むキーボード ハンドラーを実装していますが、 åやá、さらにはèなどの強調された文字のような特殊文字のケースを処理する方法を理解するのに苦労しています。通常、ブラウザーに応じて使用するものは次のようになります。
function stringFromKeyPress(event) {
if (event.which === null || event.which === undefined) {
return String.fromCharCode(event.keyCode); // IE
}
if (event.which !== 0 && event.charCode !== 0) {
return String.fromCharCode(event.which); // the rest
}
return null; // special key
}
次に、返された値から文字をテキストノードに挿入します。通常の文字に対しては完全に正常に機能し、一部のブラウザーが返す keyCode または charCode は、String.fromCharCode(code)が受け入れる Unicode 文字に対して完全に変換されます。しかし、私が抱えている問題は、デッドキーまたは複合コンボを作成する必要がある場合です。たとえば、グレイブアクセント (') を押してからキー (a) を押すと、結果が á になると予想されます。ブラウザは、keyCode 221 で (´) の 1 つの keyup および down イベントを起動し、(a) を押すと、(a) keydown/up のコード 65 で keydown->keypress->keyup の通常のシーケンスを起動し、キープレスの場合は97。
私の質問は、デッドキー合成コンボをどのように処理するのですか? グレイブアクセントを押して有効なキーが来るのを待って、それを入力するかどうかをブラウザに伝えるにはどうすればよいですか?
追加の詳細が必要な場合は、質問してください。