先日、といってもちょっと前か、Gmailは動くけど、GoogleReader, GoogleCalendarで動かないぞ、このやろうって声がメーリングリストで上がっていたので対応した。
んで、GoogleのWebApplicationのキーボードショートカットってなんだか統一性が無いことが分かった。
結論から書いてしまうと、-eventオプションを実装して、どのイベント名を投げるかを指定できるようにした。keypress,keydown,keyupを指定できるようになっている(省略時はkeypress)
今までは全てkeypressでやっていたが、以下に示すようにkeydownイベントも必要になったため加えた。
コマンドにすると
fmap -depth 4 ...
コマンドにすると
fmap -vkey ...
コマンドにすると
fmap -vkey -event keydown ...
同じGoogleが提供するものなのに、こうまで違うのかというくらいに違う。何故に?
ここで、ちょっとキーボードイベントのおさらいをする。
キーボードイベントでよく使われるのが、keypressとkeydownイベントだ。両者はイベントの内容がちょっと異なる。また、キーイベントの内容はkeyCodeとcharCodeと修飾子によってなりたつ。keyCodeは物理的にどのキーが押されたかで、charCodeは論理的で押されたキーを文字列(ASCII)でどのコードになるかをあらわすと思ってくれて良い。
shiftがtrueになる(AとShiftが押されたよという意味になる)feedSomeKeys_2.jsには-vkeyオプションが存在し、このオプションでkeyCodeを使用するようにできる。このオプションの有無でkeypressイベントにするかkeydownイベントにするかのスイッチが可能だ。
最初はそう思って作った。しかし、上であげたとおりGoogleReaderが良く分からん挙動を示し、keypressイベントなのにkeydownの様なイベント内容にして送ってやらないといけなかったため、新たなオプションを追加せざる得なかった。