低精度タッチパッドでもwindows10のジェスチャを使いたい
windows10になってタッチパッドのmacライクな操作がサポートされました。
しかし、多くのパソコンに導入されているであろうsynapticsのタッチパッドはその多くが高精度タッチパッドではありません(脳内調べ)
かくいう私のラップトップvaio pro11も高精度タッチパッドではないです...
sonyあたりが対応してくれるかなと待っていたんですが対応してくれなさそうなので調べてみました。
何かしらすれば有効にできるんじゃないかと思ってたら
できました
なのでまとめておきます。(自己責任で)
やりたいこと
やっていることは単純で、synapticsのタッチパッドの入力はキーボードのコマンドとして処理されていることを利用して、Autohotkeyで制御してやろうというものです。
synapticsのドライバは、windows10対応のWindows 10 PS/2 and SMBus Devices v19.0.19.1
を使用しています。(たぶんこれ以外でもできる?)
このとき、デフォルトでは、
ジェスチャ | 認識されるキー |
---|---|
三本指swipe up | NumpadPgUp |
三本指swipe down | NumpadPgDn |
三本指swipe left | Alt+Left |
三本指swipe right | Alt+Right |
という風に認識されています。
つまり、これにあわせてAutohotkeyのマクロを書いてあげれば動くかなと思いました。
さらに本家とは違い柔軟にジェスチャーを定義できます。
しかし、
現実は甘くありません。一部のアプリケーションでしか動きません...
なぜ動かないかというと、アプリケーションごとにジェスチャに対する挙動が定義されていることがあり、それが邪魔しているようです。
ならば、アプリケーションごとの固有の動作を消せばいいわけです
アプリケーションの固有の動作はレジストリに記述されているため簡単にいじれます←
これでアプリケーションごとの固有の動作を削除したら動くようになりました
操作手順
- Autohotkeyのインストール
- Autohotkeyのマクロの設定
- レジストリの削除
Autohotkeyのインストール
省略
Autohotkeyのマクロの設定
前回の記事 admjgptw1357.hatenablog.com
で定義したマクロを使います。
最終的には、
ジェスチャ | 操作 |
---|---|
三本指swipe up | Win+Tab |
三本指swipe down | Win+D |
三本指swipe left | 仮想デスクトップ切り替え |
三本指swipe right | 仮想デスクトップ切り替え |
という動作にします。
プログラム
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; Enable warnings to assist with detecting common errors. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. #InstallKeybdHook !Left:: Sleep 30 Send ^l return !Right:: Sleep 30 Send ^h return NumpadPgUp:: send #{Tab} return NumpadPgDn:: send #d return ;;前回までで登録したマクロ ^l:: Send ^#{Right} Sleep 50 WinGetTitle, title, A If (title = "") { Send !{Esc} } return ^h:: Send ^#{Left} Sleep 50 WinGetTitle, title, A If (title = "") { Send !{Esc} } return
はいとても単純ですね。
左右のスワイプを連続して行ったときに面倒なことになったので、Sleep 30
をはさんで緩和させています。
これで基本的に動作するようになりました。
レジストリの削除
みんな大好きレジストリです。
言う迄も無いですが、ここを誤っていじると起動しなくなります。
システムの復元ポイントを作るなりしてすべて自己責任でお願いします。
レジストリには、三本指swipeの上下と左右で別な箇所で管理されているようです。
スワイプ | レジストリ位置 |
---|---|
左右 | HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTPEnh\PlugInConfig\TouchPad\AppProfiles |
上下 | HKEY_LOCAL_MACHINE\SOFTWARE\Synaptics\SynTP\Defaults\AppProfiles |
という対応となります。
これらのフォルダの中に、定義ファイルが存在するようなので、フォルダごと消してあげます←
たとえば、Microsoft Outlook
などというフォルダが存在すると思うので、これを右クリックで消すわけです。あまり多く消すのは怖いので操作を実行したいアプリケーションだけ消してあげた方が安全です。
レジストリエディタはwin+R
でファイル名を指定して実行で、regedit
と打ち込んで起動してください。
レジストリは削除しなくても変更でもいけるかも知れませんが、めんどくさかったので削除しました。
以上です。
それでは快適なwindows10ライフを
Windows10の仮想デスクトップを便利に使うあれこれ
題名通りです。
windows10では仮想デスクトップがサポートされてそれらをシームレスに切り替えることができるようになりました。
本来の挙動であれば仮想デスクトップが切り替わり、次のデスクトップに移ったときそのデスクトップの最前面のウィンドウがアクティブにならないといけない訳です。
しかし
まだ出たばかりからか挙動が怪しいです。
デスクトップを移り変えさせてもアクティブにならないことがあります。
また、ショートカットキーがwin+ctrl+Arrowなのでホームポジションから手を離さないと使えません。
ホームポジションから手を離さずにデスクトップを切り替えたいです。
そこで、以下の二つのソフトウェアを使って便利にしたいと思います。
- Ctrl2cap
- Autohotkey
Ctrl2cap
このソフトはマイクロソフト(純正?)のソフトウェアで、CapsLockをCtrlに変えるためのソフトウェアです。
ダウンロードはこちら
インストールは単純で、管理者権限でcmdを起動して、
ctrl2cap.exe \install
でインストール可能
Autohotkey
今回の骨子
任意のキーを別のキーの割り当てに変更できるソフトウェア
ダウンロードはこちら
アイデアとして何かしらホームポジションから簡単に押せるキーで、なおかつ上手いことウィンドをアクティブにしたい。
ここは好みなのですが、
キー | 動作 |
---|---|
ctrl+l | 右のデスクトップへ |
ctrl+h | 左のデスクトップへ |
という動作にしてます。
capslockがctrlになっているのでとても押しやすいです。
プログラム
^l:: Send ^#{Right} Sleep 50 WinGetTitle, title, A If (title = "") { Send !{Esc} } return ^h:: Send ^#{Left} Sleep 50 WinGetTitle, title, A If (title = "") { Send !{Esc} } return
やりたいことは、デスクトップを移ったときにアクティブなウィンドウがない時に、一番前のものをアクティブにしてほしいので、
WinGetTitle
でタイトルを取得して、何もなかった場合は、Alt+Esc
で一番手前のウィンドウをアクティブにしてます。
最初がSleep 50
から始まっているのは、あまり早く反応させすぎると上手く動かないことがあったからです。これは環境依存だと思うのでいらなそうなら消してください。
これでブラウザでものを見て、別なデスクトップに移ってエディタとかをそのまま触れるようになってとても捗ります。