Os Xでは、Shiftキーを押しながらマウスのスクロールホイールを使用して、垂直方向ではなく水平方向にスクロールできます。 Windowsで同様のことをする方法はありますか?
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) }
以下は、シフトおよび(おそらく)ネイティブのマウスホイールスクロールコマンドを使用して実行するAutoHotKeyスクリプトです。
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
これは https://Gist.github.com/cheeaun/160999 から直接取得されます。
Microsoftアプリケーションを含む多くのアプリケーションは、マウスの水平ホイールスクロールをサポートしていないことに注意してください。 (この機能はWindows Vistaでのみ導入されたと思います。)
から 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
ウィンドウで右マウスを使ってこれを行う方法があります。マウスにスクロールホイールがあり、ジョグレフト/ジョグライトボタンが右に組み込まれています。スクロールホイールを左または右に押すだけで、コンテンツが目的の方向に移動します。私はLogitech VXを使用していますが、とても満足しています。
VXでは、必要に応じて、アプリケーションごとにボタンを個別に設定することもできます。このレベルのカスタマイズは非常に便利です。
一部のWindowsプログラムでは、シフトは水平方向にスクロールします(Windowsエクスプローラーなど)。
Internet Explorer、Firefox、Excelなどの他のプログラムでは、スクロールホイールボタンを押しながら左から右に移動すると、水平方向にスクロールします。
キーボードショートカットとは異なりますが、いつでもマウスホイールをクリックすることができます。これにより、スクロールに使用できるほとんどのアプリケーションで4方向アイコンが表示されます
以下は、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
サムソリューションから、スクロール速度を構成できる独自のソリューションを開発しました。
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
周りを見回した後、最終的には明らかに何も壊すことなく、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
他の修飾子のさまざまな機能(Ctrl +スクロールズームなど)を維持しながら、すべてのアプリケーションで水平スクロールを機能させるために、これらのスクリプトをいくつか試しました。
u/np8上記のAHKスクリプトは、選択されたベストアンサーが機能しない場合、私にとっては完全に機能します。
Logicoolゲームインターフェイスでアクティブなさまざまなスクリプトとマクロを備えたLogitech G500を使用していますが、このスクリプトには互換性/クラッシュの問題はありません。
Logicoolインターフェイスで、上にスクロール/下にスクロールして左にスクロール/右にスクロールしてホイールを再バインドし、スクリプトを起動してプログラムを再起動し、試したすべてのアプリで成功しました:
承認された回答の編集が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