見出し画像

【AutoHotkey】マウスホイール連続入力で自動スクロールを設定した

はじめに

先日よりAutoHotkeyを使ってPCの操作改善を図っている。

今回の記事はマウスホイールを2連続で下に動かせば自動スクロールに切り替わる方法を書き記す。

AutoHotkeyとはなんぞやについては前記事に書いたので参照してほしい。



課題

マウスホイールでページを下にスクロールする時、たいてい連続して入力している。そして読みたいところで止める。

この中指、休ませることができるんでは?

と究極のめんどくさがりは思った。
そしてコードができた。

想定読者

AutoHotkeyを触ったことがあり、ソフト実行までの流れがわかっている人。

AutoHotkey初心者の方は前記事へどうぞ。

コード

結論から。AutoHotkey.ahkに書き込んだコードはこちら。

#Persistent
#SingleInstance, Force
#NoEnv
#UseHook
#InstallKeybdHook
#InstallMouseHook
#HotkeyInterval, 2000
#MaxHotkeysPerInterval, 200
Process, Priority,, Realtime
SendMode, Input
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 2

Return


; スクロールの監視用変数
scrollCount := 0
scrollTimer := 0
autoScrolling := false

; 自動スクロールの速度(ミリ秒)
scrollSpeed := 100 

; WheelDown処理
WheelDown::
    ; 短い期間で10回連続でスクロールされた場合の処理
    if (A_TimeSincePriorHotkey < 500) {
        scrollCount++
    } else {
        scrollCount := 1
    }

    ; 短い期間で10回連続でスクロールされた場合の処理
    if (scrollCount < 10) {
        Send {WheelDown}
    } else if (scrollCount = 10) {
        SetTimer, AutoScroll, %scrollSpeed%
        autoScrolling := true
    }
    return

; 自動スクロール
AutoScroll:
    ; スクロール動作
    Send {WheelDown}
    return

; クリックによる自動スクロールの停止
~LButton::
    SetTimer, AutoScroll, Off
    autoScrolling := false
    return

; 上スクロールが入力されたときの停止
WheelUp::
    if (!autoScrolling) {
        Send {WheelUp}
    } else {
        SetTimer, AutoScroll, Off
        autoScrolling := false
    }
    return


発火条件:下スクロールを0.5秒以内に10回以上入力
10回以上としたのは所有マウスのホイールを一回下に動かしたときに5判定ほど取られているため。二回素早く下に向かって中指を動かせば、発火条件を満たすようにした。環境によって値調整必要。

自動スクロールの停止条件:上スクロールまたは左クリック
あえて下スクロールの追加入力は対象外にした。
自動スクロール中に読み飛ばしたい時用だ。

まとめ

以上のコードでAutoHotkeyというソフトを使い、マウスホイール連続入力で自動スクロールを設定できた。

この記事が気に入ったらサポートをしてみませんか?