マウス派はマウ筋を使い倒せ(4)
前回でマウ筋の基本的な解説は終わっています。今回書くのは、ホットキーが設定されていない機能に対して「強引に」ジェスチャーを定義する方法。実際のところ、アプリというモノは大抵主要機能に対してはホットキーを定義しています。あるいは、設定などによりユーザーが自由にホットキーを定義することが可能なように設計されています。しかしそれでも、どうしてもジェスチャーで行いたい機能にホットキーが定義されていない場合もある。そんな場合に使える「強引な」テクニックを紹介します。
・・・どうしても話の順序的にこの話はここでせざるを得ないんですが、割と「実用性」は無いかもしれません(上述のように大体ホットキーは存在するので)。ただ、この方法論+次回以降で書く話の組み合わせで可能な制御は結構実用的だったりもしますし、とりあえず話として聞いて下さい。
□1:右クリック→キーでの制御

例えば、IEでウェブページ上で右クリックを行うと、いわゆる「右クリックメニュー」が表示されるんですが、「ソースの表示(V)」という記述に注目して欲しいのです。この「(V)」なんですが、これは「このメニュー上でのみ有効なホットキー」です。どういうことかというと、
- 右ボタンをクリックして右クリックメニューを表示させる
- (別にマウスを動かすとか一切せず)キーボードの「V」をクリック
で、ソースの表示が行われるはずです。ただし、IE上で右クリックメニューが表示されていない状態で「V」を押しても何も起こらない。
・・・と、いうことを踏まえ、「ソースの表示」をジェスチャーで行ってみましょう。

まず、あるアクションが行われた時に右クリックが押されたことにしなければならない。「キーを送る」はキーボードだけでなくマウスボタンを送ることも可能です。

で、その後「V」を送れば、これで「右クリック→V」の順にキーが送られることになり、ソースが表示される。
・・・というので正しいと思うと思いますが、実際このようにジェスチャーを定義してもソースは表示されないはずです。何故かというと、「キーを送る」で送った右クリックがジェスチャーの一部として認識されてしまうから。どういうことかというと
- (例えば上のスクリーンショットでは「R←→←」をアクションにしています)「R←→←」というアクションによりコメント「ソースの表示」なジェスチャーが起動する
- コメント「ソースの表示」なジェスチャーの最初で右ボタンが押されたことになる
- 「R←→←」の後に右クリックが押される、というアクションが認識される
- そんなアクションはマウ筋に登録されていないので何も起動しない
という事態が発生しているからなのです。
環境次第で問題なくジェスチャーが認識される(上記のような問題が発生しない)場合もあるみたいなんですが、マウスボタンを送るジェスチャーを定義する場合は下記の方法を癖にすることをオススメします。

最初に「アクション終了後に実行」を挿入する。「アクション設定」ウインドウの「↑」「↓」を使えば、設定した実行コマンドの実行順番を入れ替えることが出来るので、「アクション終了後に実行→マウスに対する制御→・・・」という順番で実行コマンドを定義しましょう。こうしておくと、マウ筋によるアクションの認識が終了してから以後のコマンドが実行されるので、上記のように「コマンドで実行したマウスクリック(やマウスカーソル移動)がアクションの一部として認識されてしまう」という事態を防ぐことが出来ます。
□2:メニューに対する制御
「メニュー項目(アルファベット)」という記述は、「フォーカスがそのメニューにある時『アルファベット』を押すと『メニュー項目』が実行される」の意味です。□1ではIEの右クリックメニューを対象にしてこの機能を利用し「ソースの表示」にジェスチャーを追加したんですが、別にこれは右クリックメニューに限定した話ではなく、「メニュー項目(アルファベット)」という記述がある全てのメニューで言える話です。

例えば、IEのメインメニューにも同じような記述があります。「ツール(T)」とか「WindowsUpdate(U)」とか。ということは
- メインメニューにフォーカスを移す
- キーボード「T」をクリック
- これにより「ツール」メニューが開かれる
- キーボード「U」をクリック
でWindowsUpdateを実行することが出来る。

Windowsアプリでは、Altキーを押すとメインメニューにフォーカスを移すことが出来ます。普通にIEを使っている時にAltキーを押すと「ファイル(F)」に、Alt+Tを押すと「ツール(T)」にフォーカスが移るはずです。

・・・ということで、「キーを送る」「Alt+T」、「キーを送る」「U」でWindowsUpdateのジェスチャーを作成することも可能です。
□3:一つのキーが複数項目に定義されている場合

タイトルの日本語が分かりにくいんですが、右のスクリーンショットみたいな状況です。「左のビューを閉じる」を行いたいのに「(C)」が「ビューを閉じる」「右のビューを閉じる」にも定義されている。
試してみれば分かるとは思うんですが、こういう場合は
- 「Alt + F」で「ファイル」にフォーカスを移す
- 「C」をクリックすると「ビューを閉じる」にフォーカスが移る(「ビューを閉じる」が実行される訳ではない)
- 「C」をクリックすると「左のビューを閉じる」にフォーカスが移る(「左のビューを閉じる」が実行される訳ではない)
- 「Enter」をクリックすると「左のビューを閉じる」が実行される
というようにメニュー内項目を実行します。

従って、右のようなジェスチャーを定義すれば良い。
・・・実はSyleraはこんなことしなくてもSyleraの設定で様々な機能にホットキーを定義できるんですが、まぁ、万一こういうことが必要なケースに遭遇した場合のために、ということで。
正直、ジェスチャーを定義したいくらい使用頻度が高い機能には大体ホットキーが定義されているor設定で定義できると思いますが、もし「ホットキーがどうしても定義できない機能に対しマウスジェスチャーを登録したい」という状況に遭遇したら、今回の話を思い出して下さい。

TrackBack
この記事へのトラックバック