Bug-org 665406 Support XF86Copy, XF86Paste, XF86Cut, XF86Undo, XF86Redo keysym
初回投稿日時: 2011年07月29日09時04分56秒
カテゴリ: Javascript Mozilla Core Mozilla8 バグ修正
SNS:
Tweet (list)
私が修正した訳では無いんですが、レビューでパッチの設計を変更してもらって、Webアプリケーションに影響があるので紹介しておきます。
SolarisではCutキーをF20に、CopyキーをF16に、PasteキーをF18に、UndoキーをF14キーに割り当てて、XBL側でもこれらのキーを元の意味に読み替えて動作していました(写真さがしてみたところ、Sun Microsystem's Type 6 Keyboardというページを発見。二つ目の写真で確認できます)。
これを、GDK_Copy、GDK_Cut、GDK_Paste、GDK_Undoも利用できるようにし、さらにGDK_Redoも追加しようとしていました。
さすがにそのままやられてしまうと、非常に分かりにくくなってしまうので、以前、WindowsでWM_COPY
等のサポートで作成した内部用のcontent commandイベント
を利用するように修正してもらいました。
その結果、どうなったかと言うと、これらのキーを押した場合に、キーイベントは発生しなくなりました。これは何故かと言うと、これらのキーをWebアプリがハンドリングする際にキーコード等を見たりせず、直接、テキストの変化を見て欲しいからです(将来的にはDOM3 Eventsのtextinputイベント
を見て下さい)。つまり、Windowsでもマルチメディアキーボードや、他のユーティリティソフトがWM_PASTE
等を直接送信してきてもキーイベントは発生しませんので、それと同じ結果になるようにしました。また、もうひとつ言えば、この操作は編集メニューから操作したのと同じ結果になります。
逆にユーザの視点に立つと、Linuxでしか発生しないキーイベントで、本来は可能だったクリップボード関連の操作を、このことを知らずに作成されたWebアプリに邪魔されないようになっています。
そういう訳ですので、シビアなことをやっているWebアプリでは意図せずクリップボード関連の操作ができてしまうかもしれませんが、それは意図せずできないよりはユーザにとって良い、ということでこのような設計になりました。