it-swarm-pt.tech

Atalho de rolagem horizontal no Windows

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

62
Matthew Shanley

Você pode simular 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) }
15
Ivo Flipse

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

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

Isso é obtido diretamente de https://Gist.github.com/cheeaun/160999 .

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).

23
Sam

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

Algumas das teclas de atalho mais úteis para a roda do mouse envolvem modos alternados de rolar o texto de uma janela. Por exemplo, o par de teclas de atalho a seguir rola horizontalmente em vez de verticalmente quando você gira a roda enquanto mantém pressionada a tecla de controle 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
7
Matthew Lock

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!

5
Axxmasterr

Em alguns programas do Windows, a mudança é feita na horizontal (por exemplo, no Windows Explorer).

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

3
Matthew Lock

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

2
Blaine

Aqui está uma solução hacky para o Word (apenas) que requer 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; 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 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
2
iagrapefruit

A partir da 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
1
Envil

Depois de alguns olhar ao redor, eventualmente encontrei um caminho (usando AutoHotKey ) que funciona no Excel e em qualquer outro lugar, sem obviamente quebrar nada (adaptado de um par de soluções diferentes nos fóruns AutoHotKey, embora eu não o fizesse gravar fontes, por isso não pode dar crédito adequado desculpe).

O MS Excel parece ter algumas maneiras estranhas de lidar com sua interface com o usuário (embora, de alguma forma, depois de muitos anos vendo o que os desenvolvedores do MS Office nos deram, eu não estou tão surpreso). Este 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 de janela do Word e codificá-la especificamente como foi feito com o Excel (apenas com um conjunto diferente de atalhos 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
1
BevanFindlay