【AutoHotkey】Shift+マウスホイールで横スクロールするコード
この記事では、「AutoHotkey(オートホットキー)」を使って、特定のキーを押しながらマウスホイールした時だけ、横スクロールさせるコードについて書きます。
チルトホイール非搭載のマウスで役立ちます。
キーに別の機能を割り当てるソフト「AutoHotkey(オートホットキー)」を使うことで、Shift+マウスホイールに横スクロールを割り当てられます。
割り当てると、Shiftを押してマウスホイールを上下回転した時、横にスクロールします。「Excel」や「TweetDeck」などの横移動が必要になってくる場面で役立ちます。
ホイールを左右に傾けられる「チルトホイール機能」を搭載している場合は、簡単に水平スクロールできますが、非搭載の場合は左右への移動ができません。移動したい場合は、横のスクロールバーを引っ張るしかありません。少々不便です。
「AutoHotKey」を使うことで、チルトホイール非搭載マウスでも、楽々水平スクロールできます。Shiftは、僕が勝手に決めただけです。別のキーにすることも可能です。
実際に使ってみた動画を貼っておきます。スクロール量も好きなように調整できます。
【前提】AutoHotKeyを既にインストールしている
この記事は、既に「AutoHotkey」をインストールしている前提で書きます。
インストールしていないという場合は、以下の記事を参考にしてみてください。キーやマウスに別の機能を割り当てられるWindowsのフリーソフトです。
AutoHotKeyコード
マウスホイールを左右に傾けられるチルトホイール付きのマウスと、非搭載マウスで書き込むコードが変わってきます。
僕は、以前までチルトホイールがあるマウスを使っていましたが、2022年12月時点では、搭載していないゲーミングマウス「Logicool G Pro Wireless」を使っています。
チルトホイール搭載マウス
コードは、以下のようになっています。
;Shift+マウスホイール回転で水平スクロール
+WheelDown::WheelRight ;マウスホイール下回転で、右側に移動
+WheelUp::WheelLeft ;マウスホイール上回転で、左側に移動
Return
これをスクリプトに書き込んでリロードすると、機能します。「WheelDown」が下スクロールで、「WheelUp」が上スクロールです。「+」がShiftキーです。これらのキーを組み合わせた時に、「WheelRight(右スクロール)」、「WheelLeft(左スクロール)」するように割り当てています。
注意点ですが、チルトホイール機能を搭載しているマウス限定です。非搭載マウスで実行しても、反応しないと思います。
「Excel」だけで機能させたい場合は、以下のコードになります。「#IfWinActive」でExcelを指定しています。Excelがアクティブの場合に、発動します。それ以外のアプリでは発動しません。
;【Excel】Shift+マウスホイールで水平スクロール
#IfWinActive ahk_exe EXCEL.EXE
+WheelDown::WheelRight ;マウスホイール下回転で、右側に移動
+WheelUp::WheelLeft ;マウスホイール上回転で、左側に移動
Return
#IfWinActive
チルトホイール非搭載マウス
マウスホイールを左右に傾けられないマウスの場合、以下の「AutoHotKey」コードになります。
僕は本コードを利用しています。そもそもチルトホイール搭載マウスなら、わざわざコードを書かなくても、ホイールを左右に傾けば動くと思うので、ほとんどの方が下記コードになると思います。
;【Excel以外】Shift+マウスホイールで水平スクロール
+WheelUp:: ;Shift+マウスホイール上回転で、左スクロール
MouseGetPos,,,id, fcontrol,1
SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id%
Return
+WheelDown:: ;Shift+マウスホイール下回転で、右スクロール
MouseGetPos,,,id, fcontrol,1
SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id%
Return
;【Excel】Shift+マウスホイールで水平スクロール
#IfWinActive ahk_exe EXCEL.EXE
+WheelUp:: ;Shift+マウスホイール上回転
SetScrollLockState, On
SendInput {Left} ;左スクロール
SetScrollLockState, Off
Return
+WheelDown:: ;Shift+マウスホイール下回転
SetScrollLockState, On
SendInput {Right} ;右スクロール
SetScrollLockState, Off
Return
#IfWinActive
Excel上とそれ以外で使うコードが変わります。
Excelの時は、ScrollLock をオンにして、左右のキーを入力しています。確かに、スクロールロックをオンにしている時は、矢印キーで左右移動できますもんね。考えた人天才です。僕ではありません。下記サイト様を参考にさせていただきました。
参考:AutoHotkey scrip for horizontal scrolling in excel not working for graphs Super User
コードを書き込めたら、ファイルを上書き保存します。
スクリプトを実行します。Shiftを押しながらマウスホイールを上下回転します。上回転の時は左、下回転の時は右にスクロールします。
スクロールスピードを調整する
上記で紹介したコードは、通常のスクロールスピードです。もう少し早くすることも可能です。
Excel以外の水平スクロールスピード調整
上記で紹介したコードに、ちょっとだけ手を加えます。
+WheelUp::
MouseGetPos,,,id, fcontrol,1
Loop 2 ;数字を大きくするとそれだけ大きくスクロール
SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id%
Return
+WheelDown::
MouseGetPos,,,id, fcontrol,1
Loop 2 ;数字を大きくするとそれだけ大きくスクロール
SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id%
Return
「Loop」コマンドで、処理を指定した回数繰り返すようにしています。「2」の数字を大きくすることで、スクロールスピードを速くできます。2なら2倍、3なら3倍のスピードです。
Excelの水平スクロールスピードの調整
Excelの水平スクロールスピードを速くするコードです。
#IfWinActive ahk_exe EXCEL.EXE
+WheelUp::
SetScrollLockState, On
SendInput {Left 1} ;数字を大きくすると大きくスクロールする
SetScrollLockState, Off
Return
+WheelDown::
SetScrollLockState, On
SendInput {Right 1} ;数字を大きくすると大きくスクロールする
SetScrollLockState, Off
Return
#IfWinActive
「{Left 1}」の部分を、「 {Left 2}」のように大きくすることで、スクロール量を調整できます。英語と数字の間には、半角空白があるので、消さないよう気を付けてください。
感想
以上、「AutoHotKey(オートホットキー)」を使って、Shift+マウスホイールに横スクロールを割り当てる方法でした。
現在使っている「Logicool G Pro Wireless(ロジクール・ジー・プロ・ワイヤレス)」には、チルトホイール機能がないので、重宝しています。
本記事で紹介したコードを応用して、Excelだけのスクロール行数を変更する方法も書いています。気になった方は、下記記事を参考にしてみてください。
「TweetDeck(ツイートデック)」でも水平スクロールできます。Shiftではなく、マウスの戻るサイドボタン+ホイール回転にすることも可能です。