この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2011年7月)

2011年7月29日

Bug-org 665406 Support XF86Copy, XF86Paste, XF86Cut, XF86Undo, XF86Redo keysym
初回投稿日時: 2011年07月29日09時04分56秒
カテゴリ: Javascript Mozilla Core Mozilla8 バグ修正
SNS: (list)

私が修正した訳では無いんですが、レビューでパッチの設計を変更してもらって、Webアプリケーションに影響があるので紹介しておきます。

SolarisではCutキーをF20に、CopyキーをF16に、PasteキーをF18に、UndoキーをF14キーに割り当てて、XBL側でもこれらのキーを元の意味に読み替えて動作していました(写真さがしてみたところ、Sun Microsystem's Type 6 Keyboardというページを発見。二つ目の写真で確認できます)。

これを、GDK_CopyGDK_CutGDK_PasteGDK_Undoも利用できるようにし、さらにGDK_Redoも追加しようとしていました。

さすがにそのままやられてしまうと、非常に分かりにくくなってしまうので、以前、WindowsでWM_COPY等のサポートで作成した内部用のcontent commandイベントを利用するように修正してもらいました。

その結果、どうなったかと言うと、これらのキーを押した場合に、キーイベントは発生しなくなりました。これは何故かと言うと、これらのキーをWebアプリがハンドリングする際にキーコード等を見たりせず、直接、テキストの変化を見て欲しいからです(将来的にはDOM3 Eventsのtextinputイベントを見て下さい)。つまり、Windowsでもマルチメディアキーボードや、他のユーティリティソフトがWM_PASTE等を直接送信してきてもキーイベントは発生しませんので、それと同じ結果になるようにしました。また、もうひとつ言えば、この操作は編集メニューから操作したのと同じ結果になります。

逆にユーザの視点に立つと、Linuxでしか発生しないキーイベントで、本来は可能だったクリップボード関連の操作を、このことを知らずに作成されたWebアプリに邪魔されないようになっています。

そういう訳ですので、シビアなことをやっているWebアプリでは意図せずクリップボード関連の操作ができてしまうかもしれませんが、それは意図せずできないよりはユーザにとって良い、ということでこのような設計になりました。

関連するかもしれないエントリ

bug-org 665406を含むエントリ