Javascript はブラウザ毎の動作の違いに気をつけなければならないけれど、キーイベント(keydown, keyup, keypress)周りはさらに激しいな。。。
イベントハンドラ周りは 汎用ライブラリ(jQuery とか)を使うとかなり楽になるけど、キーイベントが返す keyCode は ブラウザやOSで違いがでる。
例えば、アルファベットについては、keydown/keyup はShift押しても押さなくても、大文字のキーコードが返るけど、keypressは 大文字/小文字区別する(これはクロスブラウザの問題じゃないか。。)とか、ファンクションキーについては、 IEはブラウザで使っているやつ(F1=ヘルプとか)はイベントが発生しないが、Safari/Firefoxは発生する、とか、IME On時、イベントがとれるとかとれないとか。onkeydown属性 onkeypress属性 onkeyup属性(by W3G) ほかにも色々情報がある。
結局のところ、入力を想定するキーを実地で試して確認するのがいいのかな。ということで、jQuery使って、
作った。テキストフィールドでキーをたたくと、keydown, keyup, keypress発生時の keyCode を表示する。
それにしても jQuery 激しく楽だ。