どうもみむらです。
もう12月ですか・・。月日の過ぎるのは本当に早いですね。
私もいろいろなことがありすぎて、もう12月かと。そんな感じです。
いろいろと、今年は本当に反省に次ぐ反省の年だったように思います。
残った一ヶ月で、可能な限りリカバリーをしていきたいです。
2016/02/20 Update:
本記事の内容は Windows 10 環境では正常に動作いたしません。
Windows 10 環境をお使いの場合は、
Windows 10 で 3本指ジェスチャで仮想デスクトップを制御出来るようにしてみた。 – みむらの手記手帳
より、Windows 10 版をご利用ください。
さて、表題の件ですが、
これは各所の勉強会で2回ほど使ったネタで、
Mac の「3本指でタッチパッドをスワイプすると仮想デスクトップが切り替わる」
Mission Control のあれを Windows で実装してみた、という話です。
またこれは Windows 7 や 8 で動作するもので、Windows 10 のそれとはまた別ものです。
概要については次のスライドをご参照ください。
— 余談 —
同じネタを福岡と東京でやったのですが、
東京はかなり受けたのですが福岡の反応はイマイチでした・・。
んー。福岡受けするにはどうすれば良かったんだろう・・
— 余談ここまで —
また実際の動く雰囲気としてはこのような感じとなります
ディスプレイに対して直接描画命令を送って、スワイプしてる雰囲気を出したいなぁ・・(苦笑
実際の仕掛けとしては、CreateDesktop と SwitchDesktop を使って
ジェスチャを認識したらデスクトップを切り替えている流れになります。
CreateDesktop
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms682124(v=vs.85).aspx
SwitchDesktop
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms686347(v=vs.85).aspx
またジェスチャの認識には、
Synaptics 社の開発キットを用いて、タッチパッドの入力を直接取得した上で、
指の本数とその移動距離を取得して判定しています。
直接取得していますので、
Windows のウィンドウフォーカスの問題や、
Windows API レベルでのマウス操作の制約を受けません。
具体的には、仮想マシンをフル画面で表示して、
当然マウスは仮想マシンにキャプチャされている状況においても動作します。
その一方で機種依存がありまして
”Synaptics 社製タッチパッド搭載機” と “3本指を認識できるタッチパッド” が必要になります。
見分け方としましては、マウスの設定画面から “Synaptics” のデバイス設定に入り、
こんな感じで「3本指で・・」という項目があるコンピュータであれば利用可能です。
ただ、古い機種において、ドライバのバージョンの関係から、3本指ジェスチャを認識できるのにもかかわらず「3本指で・・」という項目がない機種も存在しますので、
使用するためにはこの項目があるマシンが必須というわけではありません。
また、使用の際はもちろん、この3本指ジェスチャのオプションは OFF でお願いします。
(ON のまま使用されますと、両方のジェスチャが実行され、いろいろと意図しない動作が発生する恐れがあります。)
限りなくベータ(もしかするとアルファかもしれない)版ですが、
バイナリデータを公開します。
ソースコードに関しましては、思いつきで書いた関係で私自身にも難読な状態になっていますので
リファクタリングを実行した上で公開致します。
検証環境:
マシン:Sony VAIO Pro 13, Sony VAIO Z VPCZ21AJ
OS:Windows 7 x64, Windows 8.1 x64
アプリケーション: VMware Workstation 10
ダウンロードリンク:
http://mimumimu.net/beta/programs/synaptics_switchdesktop.zip
注意事項:
・Windows 10 の仮想デスクトップ機能とは互換性がありません。
(これについてはまた別途、Windows 10 対応版を出したいと思っています。)
・Windows 8.1 において、切り替え先のデスクトップにてストアアプリおよびそれに付随する機能が使用できません。
・IE 11 やその他一部のソフトウェアにおいて、切り替え先のデスクトップで正常に動作しないソフトウェアが存在します。ご了承ください。
要望等ありましたら、可能な範囲で対応します・・
https://mimumimu.net/community/
https://mimumimu.net/bbs/