【AutoHotkey】Shift+マウスホイールで横スクロールするコード

2021年11月6日AutoHotkey

「AutoHotKey」のアイコン

この記事では、「AutoHotkey(オートホットキー)」を使って、特定のキーを押しながらマウスホイールした時だけ、横スクロールさせるコードについて書きます。

チルトホイール非搭載のマウスで役立ちます。

【AutoHotkey】Shift+マウスホイールで横スクロールするコード

キーに別の機能を割り当てるソフト「AutoHotkey(オートホットキー)」を使うことで、Shift+マウスホイールに横スクロールを割り当てられます。

割り当てると、Shiftを押してマウスホイールを上下回転した時、横にスクロールします。「Excel」や「TweetDeck」などの横移動が必要になってくる場面で役立ちます。

ホイールを左右に傾けられる「チルトホイール機能」を搭載している場合は、簡単に水平スクロールできますが、非搭載の場合は左右への移動ができません。移動したい場合は、横のスクロールバーを引っ張るしかありません。少々不便です。

Excelの下部にある横スクロールバー画像

「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

コードを書き込めたら、ファイルを上書き保存します。

「Visual Studio Code」のスクリーンショット

スクリプトを実行します。Shiftを押しながらマウスホイールを上下回転します。上回転の時は左、下回転の時は右にスクロールします。

AutoHotKeyを使って、チルトホイール非搭載マウスで、水平スクロールしてみたGIF画像

スクロールスピードを調整する

上記で紹介したコードは、通常のスクロールスピードです。もう少し早くすることも可能です。

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ではなく、マウスの戻るサイドボタン+ホイール回転にすることも可能です。

2021年11月6日AutoHotkey