web-dev-qa-db-ja.com

Windowsの水平スクロールショートカット

Os Xでは、Shiftキーを押しながらマウスのスクロールホイールを使用して、垂直方向ではなく水平方向にスクロールできます。 Windowsで同様のことをする方法はありますか?

65
Matthew Shanley

AutoHotKey でシミュレートできます

スクリプトを見つけたらお知らせします:これらの投稿から:

あなたはいくつかのスクリプトを見つける必要があります

#Persistent mhook := > DllCall("SetWindowsHookEx", "int", 14 > ; WH_MOUSE_LL
    , "uint", RegisterCallback("WheelHorzHook"), > "uint", 0, "uint", 0) return

WheelLeft:
    MsgBox WheelLeft return

WheelRight:
    MsgBox WheelRight return

WheelHorzHook(nCode, wParam, lParam) {
    global mhook
    Critical
    if (wParam = 0x020E)  ; WM_MOUSEHWHEEL (Vista-only)
    {
        if (delta := NumGet(lParam+0,10,"Short"))
        {
            if (delta<0) {
                SetTimer, WheelLeft, -1
                return true
            } else {
                SetTimer, WheelRight, -1
                return true
            }
        }
    }
    return DllCall("CallNextHookEx", "uint", mhook, "int", nCode, "uint",
wParam, "uint", lParam) }
16
Ivo Flipse

以下は、シフトおよび(おそらく)ネイティブのマウスホイールスクロールコマンドを使用して実行するAutoHotKeyスクリプトです。

; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft

これは https://Gist.github.com/cheeaun/160999 から直接取得されます。

Microsoftアプリケーションを含む多くのアプリケーションは、マウスの水平ホイールスクロールをサポートしていないことに注意してください。 (この機能はWindows Vistaでのみ導入されたと思います。)

23
Sam

から http://www.autohotkey.com/docs/Hotkeys.htm

マウスホイールの最も便利なホットキーには、ウィンドウのテキストをスクロールする別のモードが含まれます。たとえば、次のホットキーのペアは、左のControlキーを押しながらホイールを回すと、垂直ではなく水平にスクロールします。

~LControl & WheelUp::  ; Scroll left.
ControlGetFocus, fcontrol, A
Loop 2  ; <-- Increase this value to scroll faster.
    SendMessage, 0x114, 0, 0, %fcontrol%, A  ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINELEFT.
return

~LControl & WheelDown::  ; Scroll right.
ControlGetFocus, fcontrol, A
Loop 2  ; <-- Increase this value to scroll faster.
    SendMessage, 0x114, 1, 0, %fcontrol%, A  ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINERIGHT.
return
8
Matthew Lock

ウィンドウで右マウスを使ってこれを行う方法があります。マウスにスクロールホイールがあり、ジョグレフト/ジョグライトボタンが右に組み込まれています。スクロールホイールを左または右に押すだけで、コンテンツが目的の方向に移動します。私はLogitech VXを使用していますが、とても満足しています。

VXでは、必要に応じて、アプリケーションごとにボタンを個別に設定することもできます。このレベルのカスタマイズは非常に便利です。

5
Axxmasterr

一部のWindowsプログラムでは、シフトは水平方向にスクロールします(Windowsエクスプローラーなど)。

Internet Explorer、Firefox、Excelなどの他のプログラムでは、スクロールホイールボタンを押しながら左から右に移動すると、水平方向にスクロールします。

4
Matthew Lock

キーボードショートカットとは異なりますが、いつでもマウスホイールをクリックすることができます。これにより、スクロールに使用できるほとんどのアプリケーションで4方向アイコンが表示されます

2
Blaine

以下は、AutoHotKeyマクロとWordマクロの両方を必要とするWord(のみ)のハックソリューションです。 Wordのメインドキュメントビューでのみ機能します(これで十分です)。

最初に、AutoHotKeyを使用して、マウス操作に応じてカスタムキーストロークをWordに送信します。 Alt-M RightArrowとAlt-M LeftArrowを使用しています。 (マウスが問題なく送信できるため、以下のWheelLeftイベントとWheelRightイベントのマッピングもあります。Wordで何か便利なことをする必要があるだけです。)

#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If

Wordのキー割り当てを設定します(これを行うには、キーボードのカスタマイズダイアログを使用することもできます)。

' Alt-Shift-M Right (keycode 39)
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyM, wdKeyShift, wdKeyAlt), _
    KeyCode2:=BuildKeyCode(39), _
    KeyCategory:=wdKeyCategoryMacro, Command:="Normal.NewMacros.ScrollRight"

' Alt-Shift-M Left (keycode 37)
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyM, wdKeyShift, wdKeyAlt), _
    KeyCode2:=BuildKeyCode(37), _
    KeyCategory:=wdKeyCategoryMacro, Command:="Normal.NewMacros.ScrollLeft"

最後に、通常のテンプレートでWordマクロを定義します(または上記のマクロへの参照を調整します)。

Sub ScrollRight()
    ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
    ActiveWindow.SmallScroll ToLeft:=1
End Sub
2
iagrapefruit

サムソリューションから、スクロール速度を構成できる独自のソリューションを開発しました。

https://Gist.github.com/envil/d21a24744b68fda626b4444784f71c32

; Shift + Wheel for horizontal scrolling
+WheelUp::
    ; Scroll to the left
    MouseGetPos,,,id, fcontrol,1
    Loop 8 ; <-- Increase for faster scrolling
        SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id% ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINERIGHT.
return
+WheelDown::
    ;Scroll to the right
    MouseGetPos,,,id, fcontrol,1
    Loop 8 ; <-- Increase for faster scrolling
        SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id% ;  0x114 is WM_HSCROLL and the 1 after it is SB_LINELEFT.
return
1
Envil

周りを見回した後、最終的には明らかに何も壊すことなく、Excelや他の場所で機能する方法を( AutoHotKey を使用して)見つけました(AutoHotKeyフォーラムのいくつかの異なるソリューションから適応されましたが、ソースを記録するため、適切なクレジットを提供できません。

MS Excelには、そのユーザーインターフェイスを処理するstrange方法がいくつかあるようです(ただし、長年、MS Office開発者から提供されたものを見てから、驚くことではありません)。このスクリプトは、MS Wordを除いてほぼすべての場所で動作するようです-誰かがそれを解決できる場合は、私に知らせてください!それはおそらく、Wordのウィンドウクラスを見つけて、Excelで(特に、異なるキーバインディングのセットを使用して)実行したようにコーディングしているようなものです。

#Singleinstance Force
#IfWinActive ahk_class XLMAIN
+WheelUp::
SetScrollLockState, On
SendInput {Left}
SetScrollLockState, Off
Return
+WheelDown::
SetScrollLockState, On
SendInput {Right}
SetScrollLockState, Off
Return

; Everything except Excel.
#IfWinNotActive ahk_class XLMAIN
+WheelUp::  ; Scroll left.
ControlGetFocus, fcontrol, A
Loop 4  ; <-- Increase this value to scroll faster.
    SendMessage, 0x114, 0, 0, %fcontrol%, A  ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINELEFT.
return

+WheelDown::  ; Scroll right.
ControlGetFocus, fcontrol, A
Loop 4  ; <-- Increase this value to scroll faster.
    SendMessage, 0x114, 1, 0, %fcontrol%, A  ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINERIGHT.
return
#IfWinActive
1
BevanFindlay

他の修飾子のさまざまな機能(Ctrl +スクロールズームなど)を維持しながら、すべてのアプリケーションで水平スクロールを機能させるために、これらのスクリプトをいくつか試しました。

u/np8上記のAHKスクリプトは、選択されたベストアンサーが機能しない場合、私にとっては完全に機能します。

logitechインターフェース

Logicoolゲームインターフェイスでアクティブなさまざまなスクリプトとマクロを備えたLogitech G500を使用していますが、このスクリプトには互換性/クラッシュの問題はありません。

Logicoolインターフェイスで、上にスクロール/下にスクロールして左にスクロール/右にスクロールしてホイールを再バインドし、スクリプトを起動してプログラムを再起動し、試したすべてのアプリで成功しました:

  • エクセル
  • ブラウザー
  • アドビのアプリ(さまざまですが、一部には特別なアプリ機能があります>)
0
1358436

承認された回答の編集が2回拒否されたため、別の回答にAutohotkey sciptsを追加します

自動ホットキーを設定する

AutoHotKeyを初めて使用する方のために、以下に手順を示します。

1) Download and install AutoHotKey from autohotkey.com 
2) Right click on your desktop (or any other folder) -> New 
   -> Text Document -> Make a file called "myscript.ahk" 
3) Copy-paste the script from below -> Save the file 
4) Right-click on the file -> Run Script 
5) Small H-icon should appear to your taskbar notification area

ヒント: スクリプトをWindowsの起動時に自動的に実行する にすることもできます。

自動ホットキースクリプト

; Default solution (for all other programs)
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft

; MS Excel
#IfWinActive, ahk_exe Excel.EXE

; Shift + Wheel for horizontal scrolling (left)
~LShift & WheelUp::
    {
        SetScrollLockState, on
        send,{left}
        SetScrollLockState, off
    }
return

; Shift + Wheel for horizontal scrolling (right)
~LShift & WheelDown:: 
    {
        SetScrollLockState, on
        send,{right}
        SetScrollLockState, off
    }
return

#IfWinActive
0
np8