Windows中的水平滚动快捷方式


64

在OS X中,我可以按住Shift键,同时使用鼠标上的滚轮水平滚动而不是垂直滚动。有没有办法在Windows中做类似的事情?


1
在什么应用程序中滚动?探险家?网络浏览器?它取决于创建者如何实现它,因此,如果它是浏览器,则将有所不同。
约翰T

我认为默认情况下Windows上没有针对该功能的系统级快捷方式。
chills42

11
我希望有一个系统范围的解决方案。
马修·香利

Answers:


15

您可以使用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) }

啊,你有工作吗?太棒了!
Ivo Flipse,2009年

23

这是一个AutoHotKey脚本,它使用shift和(大概)本地鼠标滚轮滚动命令来执行此操作:

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

直接从https://gist.github.com/cheeaun/160999获取

请记住,许多应用程序,包括Microsoft应用程序,都不支持水平鼠标滚轮滚动。(我相信该功能仅在Windows Vista中引入。)


谢谢,在Visual Studio中效果很好!太糟糕了,它在Excel 2013和Google Chrome中不起作用。
cheeesus 2014年

3
@cheeesus,对我来说,在Windows中,谷歌浏览器实际上具有对水平滚动的内置支持。即使没有上述脚本,我也可以按住Shift键并滚动鼠标滚轮以水平滚动。
2014年

2
完善!这是简单易用的最佳答案。对于那些不熟悉AutoHotKey的用户,请按以下步骤操作:1)从autohotkey.com下载并安装AutoHotKey 2)右键单击桌面->新建->文本文档->创建一个名为“ myscript.ahk”的文件3)从上方复制并粘贴脚本->保存文件4)右键单击文件->运行脚本5)小H图标应出现在任务栏通知区域,现在“ Shift +鼠标滚轮”应产生水平滚动
np8

@ np8对我不起作用..我尝试了那样。我正在使用带滚轮的普通hp鼠标。chrome浏览器的工作原理是水平移动+水平滚动。它总是在ahk之前执行。现在有了ahk install ..我希望ms office可以工作..但是没有。
ihightower

@ihightower也有Excel的解决方案。我将其添加到此答案。
np8

8

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

鼠标滚轮一些最有用的热键涉及滚动窗口文本的其他模式。例如,在按住左控制键的同时转动滚轮时,以下一对热键是水平滚动而不是垂直滚动:

~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

5

有一种方法可以在Windows中使用鼠标右键进行此操作。我有一个带有滚轮的鼠标,该滚轮的左转/右转按钮集成在其中。只需向左或向右推动滚轮,即可沿所需方向移动内容。我有Logitech VX,对此我感到非常满意。

如果愿意,VX还允许您为每个应用程序配置不同的按钮。这种自定义级别非常好!


Microsoft无线激光鼠标5000(microsoft.com/hardware/mouseandkeyboard/…)具有此功能。
特拉维斯,

你是对的!在升级到VX之前,我曾经使用过该鼠标。VX具有两个非常好的功能,这就是我升级的原因。它在滚轮上有一个飞轮,可旋转7秒钟。另一个不错的功能是鼠标的USB加密狗实际上完全适合设备内部,因此丢失加密狗非常困难。
Axxmasterr

3

在某些Windows程序中,shift确实会水平滚动(例如Windows资源管理器)。

在Internet Explorer,Firefox和Excel等其他程序中,按住滚轮按钮并从左向右移动将水平滚动。


2
Chrome似乎也内置了Shift水平滚动。
2014年

看起来它在VS中也能正常工作,这是我基本需要的!谢谢!
Shimmy

2

这是仅需要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

不完全是键盘快捷键,但是您始终可以单击鼠标滚轮。这会在大多数应用程序中弹出一个四向图标,您可以使用该图标进行滚动


1

经过一番环顾之后,最终找到了一种方法(使用AutoHotKey)在Excel和其他任何地方都可以使用,而没有明显破坏任何内容(改编自AutoHotKey论坛上的几个不同解决方案,尽管我没有记录源,所以无法给出相应的信用抱歉)。

MS Excel似乎有一些奇怪的方式来处理其用户界面(尽管以某种方式,经过多年了解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

从Sam解决方案中,我开发了自己的解决方案,该解决方案具有可配置的滚动速度:

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

很棒的剧本。这真的很好。
Nick Painter

Windows资源管理器是唯一似乎无法运行的应用程序。
尼克画家
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.