この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

Parallelsで、Control同時押しでの複数選択ができない件

Windowsの基本動作として、

  • Shift押しっぱなしでマウスクリック→連続する範囲選択
  • Control押しっぱなしでマウスクリック→複数選択

というのがあります。ファイルを複数選択したい時に、皆さんフツーに毎日使っている動作です。
これ、無いと死にます。…よね?


で、Parallelsでこれをやろうと思っても動作しない(ことがある)。
常に、最後にクリックした要素だけが選択されてしまいます。

どうやらControlキーやShiftキーなどを『押している』という状態が
Windows側で認識されていないような気が。

というわけで調べた結果、

結論から書きますが、Parallelsにおけるモディファイアキー*1の状態判定は

  • 何か他のキーを押したとき
  • 押したモディファイアキーを離したとき

に初めて発動するようです。


つまり、最初にControlキーを押したままの状態ですと
Windows側にControlキーダウンイベントは飛ばないわけです。
他のキーを押したとき(例えばSpaceキー)に、そのSpaceキーを押したというイベントと共に
Contorlキーが押されているという情報も飛びます。


だから、Windowsに『いまControl押しっぱなしだよ!』と通知したければ、
例えばControlキーを押した状態のままAltキーだけを押して離せば、

  1. AltキーとControlキーが押されたよ!
  2. Altキーが離されたよ!Controlキーは押したままだよ!

というキーイベントが発生します。つまり、Controlを押した状態だけが残るということです。

yamyでキー判定の状態を調べてみたところ、

以下のような感じに。


  1. 左Controlを押した: キーイベントなし
  2. 左Altを押した:D-LeftAltおよびD-A-LeftConrolが発生
  3. 左Altを離した:U-C-LeftAlt
  4. 左Controlを離した:U-LeftControl

という状態です。

…と思ったら

必ず上記のとおりとは限らないようです。
さっきは出来なかったのに、いまWindows(on Parallels)上でフツーに
Controlだけを押して複数選択ができました。(Windowsの通常動作)


でも、Eclipse上でControlを押したままクラス名にマウスカーソルを当てても
何も起きませんでした(クリッカブルになりませんでした)。
ところがControlを押したまま、一度Altを押して離すとクリッカブルになります。
(上記で解説した通りの動作)


なにか発動する条件があるんだろうか。。。?


2011-08-15追記

『Altを押して離す』がダメなら、『Spaceを押して離す』を試してみてください。

*1: Shift/Control/Alt等の、他のキーとのコンビネーションで使うキー