it-swarm-es.tech

Atajo de desplazamiento horizontal en Windows

En Os X, puedo mantener presionada la tecla Mayús mientras uso la rueda de desplazamiento del mouse para desplazarse horizontalmente en lugar de verticalmente. ¿Hay una manera de hacer algo similar en Windows?

62
Matthew Shanley

Podría simularlo con AutoHotKey

Si encuentro el guión, te lo haré saber: A partir de estas publicaciones:

Deberías encontrar algunos guiones

#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

Aquí hay un script de AutoHotKey para hacerlo usando los comandos shift y (presumiblemente) rueda de desplazamiento del mouse nativo:

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

Esto se toma directamente de https://Gist.github.com/cheeaun/160999 .

Tenga en cuenta que muchas aplicaciones, incluidas las de Microsoft, no admiten el desplazamiento horizontal de la rueda del mouse. (Creo que la característica solo se introdujo en Windows Vista).

23
Sam

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

Algunas de las teclas de acceso rápido más útiles para la rueda del ratón incluyen modos alternativos de desplazamiento del texto de una ventana. Por ejemplo, el siguiente par de teclas de acceso rápido se desplaza horizontalmente en lugar de verticalmente cuando gira la rueda mientras mantiene presionada la tecla de control izquierda:

~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

Hay una manera de hacer esto en Windows con el mouse derecho. Tengo un mouse con una rueda de desplazamiento que tiene un botón de jog left/jog right integrado a la derecha. Simplemente empujando la rueda de desplazamiento hacia la izquierda o hacia la derecha moverá el contenido en la dirección deseada. Tengo el Logitech VX y estoy muy contento con él.

El VX también le permite configurar los botones de manera diferente para cada aplicación si así lo desea. Este nivel de personalización es muy bueno tener!

5
Axxmasterr

En algunos programas de Windows, el desplazamiento se desplaza horizontalmente (por ejemplo, el Explorador de Windows).

En otros programas, como Internet Explorer, Firefox y Excel, mantener presionado el botón de la rueda de desplazamiento y moverse de izquierda a derecha se desplazará horizontalmente.

3
Matthew Lock

No es exactamente un método abreviado de teclado, pero siempre puede hacer clic hacia abajo en la rueda del mouse. Esto muestra un ícono de 4 direcciones en la mayoría de las aplicaciones que puede usar para desplazarse

2
Blaine

Aquí hay una solución pirata para Word (solo) que requiere las macros AutoHotKey y Word. Solo funciona en la vista del documento principal en Word (que es lo suficientemente bueno para mí).

Primero, use AutoHotKey para enviar una pulsación personalizada a Word en respuesta a la acción del mouse. Estoy usando Alt-M RightArrow y Alt-M LeftArrow. (También tengo mapeos para los eventos WheelLeft y WheelRight a continuación porque mi mouse los envía bien; solo necesito que Word haga algo útil con ellos).

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

Configure los enlaces de teclas de Word (para hacerlo, también puede usar el cuadro de diálogo de personalización del teclado):

' 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 las macros de Word en su plantilla Normal (o ajuste las referencias a ellas arriba):

Sub ScrollRight()
    ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
    ActiveWindow.SmallScroll ToLeft:=1
End Sub
2
iagrapefruit

A partir de la solución Sam, desarrollé mi propia solución que tiene una velocidad de desplazamiento configurable:

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

Después de mirar un poco, finalmente encontró una forma (usando AutoHotKey ) que funciona en Excel y en cualquier otro lugar, sin romper nada (obviamente, adaptada de un par de diferentes soluciones en los foros de AutoHotKey, aunque no registré las fuentes, por lo que no puedo dar el crédito apropiado.

Parece que MS Excel tiene algunas formas extrañas de manejar su interfaz de usuario (aunque de alguna manera, después de muchos años de ver lo que los desarrolladores de MS Office nos han dado, no estoy tan sorprendido) . Este script parece funcionar prácticamente en todas partes, excepto en MS Word. Si alguien puede resolverlo, ¡házmelo saber! Probablemente sea algo así como averiguar la clase de ventana para Word y codificar para ella específicamente como se hizo con Excel (solo con un conjunto diferente de enlaces 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