Atalho de rolagem horizontal no Windows

59

Em Os X, posso segurar a tecla Shift enquanto uso a roda de rolagem do mouse para rolar horizontalmente em vez de verticalmente. Existe uma maneira de fazer algo semelhante no Windows?

    
por Matthew Shanley 27.07.2009 / 18:24

9 respostas

15

Você pode simulá-lo com AutoHotKey

Se eu encontrar o script, informarei: Destes posts:

Você deve encontrar alguns scripts

#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) }
    
por 27.07.2009 / 18:32
21

Aqui está um script AutoHotKey para fazer isso usando comandos de deslocamento de roda do mouse com shift e (presumivelmente) nativo:

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

Isso é retirado diretamente do link .

Tenha em mente que muitos aplicativos, incluindo aplicativos da Microsoft, não suportam a rolagem horizontal da roda do mouse. (Acredito que o recurso foi introduzido apenas no Windows Vista).

    
por 16.05.2013 / 03:02
7

De link

Some of the most useful hotkeys for the mouse wheel involve alternate modes of scrolling a window's text. For example, the following pair of hotkeys scrolls horizontally instead of vertically when you turn the wheel while holding down the left Control key:

~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
    
por 03.06.2010 / 11:21
5

Existe uma maneira de fazer isso nas janelas com o mouse direito. Eu tenho um mouse com uma roda de rolagem que tem um botão de jog esquerda / direita jogado diretamente nela. Basta pressionar a roda de rolagem para a esquerda ou para a direita para mover o conteúdo na direção desejada. Eu tenho o Logitech VX e fiquei muito feliz com isso.

O VX também permite que você configure os botões de maneira diferente para cada aplicativo, se você estivesse inclinado. Este nível de personalização é muito bom ter!

    
por 27.07.2009 / 18:34
3

Em alguns programas do Windows, o deslocamento é feito na horizontal (por exemplo, no Windows Explorer).

Em outros programas, como o Internet Explorer, o Firefox e o Excel, manter pressionado o botão de rolagem e mover da esquerda para a direita rolará horizontalmente.

    
por 22.04.2014 / 06:31
2

Aqui está uma solução hacky para o Word (apenas) que requer as macros AutoHotKey e Word. Ele só funciona na visualização do documento principal no Word (o que é bom o suficiente para mim).

Primeiro, use o AutoHotKey para enviar um pressionamento de tecla personalizado para o Word em resposta à ação do mouse. Estou usando Alt-M RightArrow e Alt-M LeftArrow. (Eu também tenho mapeamentos para os eventos WheelLeft e WheelRight abaixo porque meu mouse os envia muito bem; só preciso que o Word faça algo útil com eles.)

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

Configure as associações de teclas do Word (você pode, alternativamente, usar a caixa de diálogo de personalização do teclado para fazer isso):

' 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"

Finalmente, defina as macros do Word no seu modelo Normal (ou ajuste as referências a elas acima):

Sub ScrollRight()
    ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
    ActiveWindow.SmallScroll ToLeft:=1
End Sub
    
por 03.02.2016 / 18:10
1

Depois de dar uma olhada, finalmente encontrei um jeito (usando AutoHotKey ) que funciona no Excel e em qualquer outro lugar, sem obviamente quebrar nada ( adaptado de algumas soluções diferentes nos fóruns do AutoHotKey, embora eu não tenha gravado fontes, por isso não posso dar o devido crédito, desculpe).

O MS Excel parece ter algumas maneiras estranhas de lidar com a interface do usuário (embora, de alguma forma, depois de muitos anos vendo o que os desenvolvedores do MS Office nos deram, não estou surpreso). Este script parece funcionar praticamente em todos os lugares, exceto no MS Word - se alguém puder resolver isso, então me avise! É provavelmente algo como descobrir a classe de janela do Word e codificá-la especificamente como foi feito com o Excel (apenas com um conjunto diferente de atalhos de teclado).

#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
    
por 12.10.2014 / 21:51
1

A partir da solução Sam, desenvolvi minha própria solução que possui velocidade de rolagem configurável:

link

; 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
    
por 10.11.2016 / 04:06
1

Não é exatamente um atalho de teclado, mas você sempre pode clicar na roda do mouse. Isso traz um ícone de quatro direções na maioria dos aplicativos que você pode usar para rolar

    
por 10.11.2016 / 04:14