Atajo de desplazamiento horizontal en Windows

64

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

Matthew Shanley
fuente
1
desplazarse en qué aplicación? ¿explorador? un navegador web? Depende de cómo el creador quería implementarlo, por lo que si se trata de un navegador será diferente.
John T
No creo que haya un acceso directo a todo el sistema para eso en Windows de forma predeterminada.
escalofríos42
11
Esperaba una solución para todo el sistema.
Matthew Shanley el

Respuestas:

15

Podrías simularlo con AutoHotKey

Si encuentro el script, te lo haré saber: 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) }
Ivo Flipse
fuente
Ah tienes que trabajar? ¡Increíble!
Ivo Flipse
23

Aquí hay una secuencia de comandos AutoHotKey para hacerlo usando shift y (presumiblemente) comandos nativos de desplazamiento de la rueda del mouse:

; 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 aplicaciones de Microsoft, no admiten el desplazamiento horizontal de la rueda del mouse. (Creo que la función solo se introdujo en Windows Vista).

Sam
fuente
¡Gracias, funciona muy bien en Visual Studio! Lástima que no funcione en Excel 2013 y Google Chrome.
Cheeesus
3
@cheeesus, para mí, en Windows, Google Chrome en realidad tiene soporte incorporado para desplazamiento horizontal. Incluso sin el script anterior, puedo mantener presionada la tecla Mayús y desplazar la rueda del mouse para desplazarme horizontalmente.
Sam
2
¡Perfecto! Esta es la mejor respuesta aquí, simple y fácil. Para aquellos que son nuevos en AutoHotKey, estos son los pasos: 1) Descargue e instale AutoHotKey desde autohotkey.com 2) Haga clic derecho en su escritorio -> Nuevo -> Documento de texto -> Cree un archivo llamado "myscript.ahk" 3) Copie y pegue la secuencia de comandos de lo anterior -> Guarde el archivo 4) Haga clic derecho en el archivo -> Ejecutar secuencia de comandos 5) Debe aparecer un pequeño icono H en el área de notificación de la barra de tareas, y ahora "Shift + Rueda del mouse" debe producir horizontal desplazamiento
np8
@ np8 no funcionó para mí ... intenté exactamente eso. Estoy usando un mouse hp normal con rueda de desplazamiento. El navegador Chrome funciona shift + scroll horizontalmente ... siempre lo hizo incluso antes de ahk. ahora con ahk install ... esperaba que ms office funcionara ... pero no lo hace.
ihightower
@ihightower También hay una solución para Excel. Lo agregaré a esta respuesta.
np8
8

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

Algunas de las teclas de acceso rápido más útiles para la rueda del mouse implican 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
Matthew Lock
fuente
5

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 desplazamiento hacia la izquierda / desplazamiento hacia la derecha integrado en él. Simplemente presionando la rueda de desplazamiento hacia la izquierda o hacia la derecha se moverá el contenido en la dirección deseada. Tengo 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. ¡Es muy agradable tener este nivel de personalización!

Axxmasterr
fuente
Microsoft Wireless Laser Mouse 5000 ( microsoft.com/hardware/mouseandkeyboard/… ) tiene esta funcionalidad.
Travis
¡Estás en lo correcto! Solía ​​tener ese mouse antes de actualizar al VX. El VX tiene dos características muy buenas, por lo que actualicé. Tiene un volante en la rueda de desplazamiento que gira durante 7 segundos. La otra característica interesante es que el dongle USB para el mouse realmente se ajusta completamente dentro del dispositivo, por lo que es muy difícil perder el dongle.
Axxmasterr
3

En algunos programas de Windows, shift se desplaza horizontalmente (por ejemplo, Windows Explorer).

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

Matthew Lock
fuente
2
Chrome también parece tener desplazamiento horizontal Shift incorporado.
Sam
Parece que también funciona en VS, ¡lo que básicamente necesitaba! ¡Gracias!
Shimmy
2

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

Primero, use AutoHotKey para enviar una pulsación de tecla personalizada a Word en respuesta a la acción del mouse. Estoy usando Alt-M RightArrow y Alt-M LeftArrow. (También tengo asignaciones para los eventos WheelLeft y WheelRight a continuación porque mi mouse los envía muy 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 las asociaciones de teclas de Word (también puede usar el diálogo de personalización del teclado para hacer esto):

' 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
iagrapefruit
fuente
2

No es exactamente un atajo de teclado, pero siempre puedes hacer clic en la rueda del mouse. Esto muestra un ícono de 4 vías en la mayoría de las aplicaciones que puede usar para desplazarse

Blaine
fuente
1

Después de mirar un poco, eventualmente encontré una forma (usando AutoHotKey ) que funciona en Excel y en cualquier otro lugar, sin romper obviamente nada (adaptado de un par de soluciones diferentes en los foros de AutoHotKey, aunque no grabé fuentes, así que no puedo dar crédito apropiado lo siento).

MS Excel parece tener 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ágamelo saber! Probablemente sea algo como encontrar la clase de ventana para Word y codificarla 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
BevanFindlay
fuente
1

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
Envil
fuente
Gran guión Esto funciona muy bien
Nick Painter el
La única aplicación en la que esto no parece funcionar es el explorador de Windows.
Nick Painter