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?
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?
Respuestas:
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) }
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).
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
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!
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.
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
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
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