Atalho de rolagem horizontal no Windows

64

No Os X, posso segurar 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?

Matthew Shanley
fonte
11
rolagem em qual aplicativo? explorador? um navegador da web? Depende de como o criador quis implementá-lo, por isso, se for um navegador, será diferente.
John T
Eu não acho que exista um atalho para todo o sistema no Windows por padrão.
chills42
11
Eu esperava uma solução para todo o sistema.
21339 Matthew Shanley

Respostas:

15

Você pode simulá-lo com o AutoHotKey

Se eu encontrar o script, informarei: Destas postagens:

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) }
Ivo Flipse
fonte
Ah, você conseguiu fazer funcionar? Impressionante!
Ivo Flipse 29/07/2009
23

Aqui está um script AutoHotKey para fazê-lo usando os comandos shift e (presumivelmente) roda de mouse nativa:

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

Isso é obtido diretamente em https://gist.github.com/cheeaun/160999 .

Lembre-se de que muitos aplicativos, incluindo aplicativos da Microsoft, não oferecem suporte à rolagem horizontal da roda do mouse. (Acredito que o recurso foi introduzido apenas no Windows Vista.)

Sam
fonte
Obrigado, funciona muito bem no Visual Studio! Pena que não funciona no Excel 2013 e no Google Chrome.
cheeesus
3
@cheeesus, para mim, no Windows, o Google Chrome na verdade tem suporte interno para rolagem horizontal. Mesmo sem o script acima, posso pressionar Shift e rolar a roda do mouse para rolar horizontalmente.
Sam
2
Perfeito! Esta é a melhor resposta aqui, simples e fácil. Para quem é novo no AutoHotKey, aqui estão as etapas: 1) Baixe e instale o AutoHotKey no site autohotkey.com 2) Clique com o botão direito na área de trabalho -> Novo -> Documento de texto -> Crie um arquivo chamado "myscript.ahk" 3) Copie e cole o script acima -> Salve o arquivo 4) Clique com o botão direito do mouse no arquivo -> Executar Script 5) O pequeno ícone H deve aparecer na sua área de notificação da barra de tarefas e agora "Shift + Mouse Wheel" deve produzir horizontal scrolling
np8
@ np8 não funcionou para mim .. eu tentei exatamente assim. Estou usando um mouse hp normal com roda de rolagem. navegador Chrome funciona shift + scroll horizontalmente .. sempre fazia mesmo antes ahk. agora com ahk install .. eu estava esperando que o ms office funcionasse .. mas não funciona.
ihightower
@ihightower Também existe uma solução para o Excel. Vou adicioná-lo a esta resposta.
np8 5/02
8

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

Algumas das teclas de atalho mais úteis para a roda do mouse envolvem modos alternativos de rolagem do texto de uma janela. Por exemplo, o seguinte par de teclas de atalho rola horizontalmente em vez de verticalmente quando você gira o volante enquanto mantém pressionada a tecla Control esquerda:

~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
Matthew Lock
fonte
5

Existe uma maneira de fazer isso no Windows com o mouse direito. Eu tenho um mouse com uma roda de rolagem que possui um botão esquerdo / direito direito integrado. Basta pressionar a roda de rolagem para a esquerda ou direita para mover o conteúdo na direção desejada. Eu tenho o Logitech VX e fiquei muito feliz com ele.

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

Axxmasterr
fonte
O Microsoft Wireless Laser Mouse 5000 ( microsoft.com/hardware/mouseandkeyboard/… ) possui essa funcionalidade.
314 Travis Travis
Você está certo! Eu costumava ter esse mouse antes de atualizar para o VX. O VX tem dois recursos muito interessantes e é por isso que eu atualizei. Possui um volante no volante que gira por 7 segundos. O outro recurso interessante é o dongle USB do mouse que se encaixa totalmente dentro do dispositivo, por isso é muito difícil perdê-lo.
Axxmasterr
3

Em alguns programas do Windows, a mudança rola horizontalmente (por exemplo, Windows Explorer).

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

Matthew Lock
fonte
2
O Chrome também parece ter a rolagem horizontal Shift integrada.
Sam
Parece que também funciona no VS, o que eu basicamente precisava! Obrigado!
Shimmy 20/16
2

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

Primeiro, use o AutoHotKey para enviar uma combinação de teclas personalizada 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; eu só preciso do Word para fazer 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 combinações de teclas do Word (você também pode 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"

Por fim, 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
iagrapefruit
fonte
2

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

Blaine
fonte
1

Depois de alguns olhar em volta, finalmente encontrei uma maneira (usando o 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, não posso dar crédito apropriado desculpe).

O MS Excel parece ter algumas maneiras estranhas de lidar com sua interface de usuário (embora, de alguma forma, depois de muitos anos vendo o que os desenvolvedores do MS Office nos deram, não estou tão surpreso). Esse script parece funcionar praticamente em qualquer lugar, exceto no MS Word - se alguém puder resolver isso, então me avise! Provavelmente é algo como descobrir a classe da janela do Word e codificá-la especificamente como foi feita com o Excel (apenas com um conjunto diferente de combinações de teclas).

#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
BevanFindlay
fonte
1

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

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
Envil
fonte
Ótimo roteiro. Isso funciona muito bem.
26518 Nick Painter
O único aplicativo em que isso não parece funcionar é o Windows Explorer.
31818 Nick Painter