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