去年の12月、タイプ中にタッチパッドを知らずに触れてしまうイライラを解消してくれる、『TouchFreeze』をご紹介しました。キー入力を始めた瞬間にタッチパッドを無効にしてくれるため、重宝した方も多いかと思います。しかし、それでは満足できなかった米ライフハッカー読者のbobbo33さんが、賢いAutoHotkeyで進化版を作り上げました。
以下は、Productive Geek forumsのbobbo33さんの投稿より抜粋です。
TouchFreezeは、タイプ中に無意識にタッチパッドをさわってしまうのを防いでくれるプログラムでした。しかし、自分にはどうも効果がなく、カーソルが飛び回る現象は無くなりませんでした。
そういうわけで、AutoHotkey版を作りました。使用して数週間が経ちますが、なかなか快調です。デフォルトの500msでは短いと感じる人は、反応時間は変更可能なので、調整してみてください。
今回AutoHotkey版を作ってみて、小さな効果のために他のユーティリティを重ねてインストールしていくよりも、自分で作ってしまう方がいいと思いました。
以下がスクリプトになります。
; Script Function:; Disables trackpad for 500ms any time a key is pressed (prevents accidental mouse clicks)
;
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
;keyboard hook code credit: http://www.autohotkey.com/forum/post-127490.html#127490
#Persistent
OnExit, Unhook
hHookKeybd := SetWindowsHookEx(WH_KEYBOARD_LL := 13, RegisterCallback("Keyboard", "Fast"))
Return
ReenableTrackpad:
BlockInput, MouseMoveOff
Return
Unhook:
UnhookWindowsHookEx(hHookKeybd)
ExitApp
Keyboard(nCode, wParam, lParam)
{
Critical
If !nCode
{
BlockInput, MouseMove
SetTimer, ReenableTrackpad, 500
}
Return CallNextHookEx(nCode, wParam, lParam)
}
SetWindowsHookEx(idHook, pfn)
{
Return DllCall("SetWindowsHookEx", "int", idHook, "Uint", pfn, "Uint", DllCall("GetModuleHandle", "Uint", 0), "Uint", 0)
}
UnhookWindowsHookEx(hHook)
{
Return DllCall("UnhookWindowsHookEx", "Uint", hHook)
}
CallNextHookEx(nCode, wParam, lParam, hHook = 0)
{
Return DllCall("CallNextHookEx", "Uint", hHook, "int", nCode, "Uint", wParam, "Uint", lParam)
これでタイプ中、カーソルが飛び回る現象と完全に決別できたでしょうか?試してみた方は是非コメント欄への書き込みをお願いします。
TouchFreeze alternative in AHK [Productive Geek]
bobbo33 (原文/訳:松井亮太)