高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

正直に他者に学んで!

キーボードショートカットについては、たしかにMicrosoftはあんまり何も考えてなさそう。
その辺は.NET Frameworkをよく見ていてもそうかもと思います。Ctrlなし(Ctrl+Oなどではなく、O単独などといった)のキーボードショートカットとをメニューに設定することができない。
わたしは「どう見てもキーボードを使わない」ようなソフトについてはCtrlキーを使わないようにしています。たとえばメディアプレイヤーでCtrl+Oを使う人はいませんよね、どうせキーボードで入力するものなんてないんだから、Oだけ もしくは他のキーで良いじゃない*1
そういう細かい設定を、.NET Frameworkではできない(やるにはKeyPreviewをTrueにしてFormのKeyDownイベントで処理しなければならない)*2。もちろんそれでもCtrl+Oを押したいときはあるかもしれない、ならばショートカットキーをアクションに二つ割り当てたい。でも、そんなことも.NET Frameworkではできません。
キーボードショートカットの編集すら.NET Frameworkでは大変なのです。Delphiでならアクションリストを適当になめすだけでよい。しかし.NET Frameworkではそんなわけにはいかない(もちろんキーボードショートカットの入ったメニューだけを取り出してリストを作っておけば分かりやすいでしょうが)。こういう良いところを.NET Frameworkはまねできなかったのでしょうか(Dockプロパティ、Anchorプロパティなどはほいほい取り入れていったのに)、それとも便利すぎてへそを曲げたかな>Microsoft。

あー、言語的にちょっとあれなところはあるものの、Delphi.NETにでも移行しろということでしょうか(結局.NET Compact FrameworkはC#でしかできないでしょうし、それじゃあんまり意味ないかもしれませんが)。


まあ、ぱっと見て思いつく改善点は以下。

  • アクションリストのサポート(from Delphi)
  • ショートカットキーにあらゆるキーを指定できるようにしてほしい(from Delphi)
  • キーボードショートカットを複数指定できるようにしてほしい(from Delphi)
  • ツーストロークショートカットキーもサポートしてほしい(できれば)

という感じ。フレームワークなのにこういう小手先の処理をこっちで行わなければならないなんて、「いまいちフレームワークしてないんじゃん?」ですね。
Windowsは、Microsoftはもっと他者の良いところを見て欲しいです、フレームワーク関係はDelphiとか、デザインはMac…なのかな(よく知らないけど)。


さて、最後にちょっとMicrosoft弁護。

Windowsではむしろキーボードショートカットよりも右クリックによるコンテキストメニューが多用される傾向にある。しかし、それでは操作の度にマウスに手を戻さねばならない。

メニューキーがありますよ! まあ、メニューキーが使えない部位(ツールバーの右クリックメニューなど)ではいたしかたありませんが。それにキーボードによってはメニューキーすらないものもありますしね。


んまあ… ゲーム機業界もそうですが、ハードでぎゃあぎゃあけんかなんかしてないで、ソフトをどこでも使えるようにする仕組みとか、考えましょうよ。 と言うのがもっとも手っ取り早い回答でしょうけどね。


――さて、文化祭にでも行くか(^_^;

*1:ファンクションキーでも別に良いですが、それだとノートPCでは二つのキーを押すことになってしまいます

*2:まあ、メディアプレイヤーと言えばWindows Media Player以外あり得ないとでも思ってるのかもしれません