Dans Os X, je peux maintenir la touche Maj tout en utilisant la molette de la souris pour faire défiler les pages horizontalement au lieu de verticalement. Existe-t-il un moyen de faire quelque chose de similaire sous Windows ?
Réponses
Trop de publicités?Dans certains programmes Windows, la touche Maj défile horizontalement (par exemple, l'Explorateur Windows).
Dans d'autres programmes tels qu'Internet Explorer, Firefox et Excel, le fait de maintenir le bouton de la molette de défilement enfoncé et de se déplacer de gauche à droite permet un défilement horizontal.
Voici une solution bricolée pour Word (uniquement) qui nécessite à la fois AutoHotKey et les macros Word. Elle ne fonctionne que sur la vue principale du document dans Word (ce qui est suffisant pour moi).
Tout d'abord, utilisez AutoHotKey pour envoyer une frappe personnalisée à Word en réponse à l'action de la souris. J'utilise Alt-M RightArrow et Alt-M LeftArrow. (J'ai également des mappings pour les événements WheelLeft et WheelRight ci-dessous car ma souris les envoie très bien ; j'ai juste besoin que Word en fasse quelque chose d'utile).
#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If
Configurez les liaisons de touches de Word (vous pouvez également utiliser la boîte de dialogue de personnalisation du clavier pour ce faire) :
' 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"
Enfin, définissez les macros Word dans votre modèle normal (ou ajustez les références à celles-ci ci-dessus) :
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
En combinant les réponses précédentes et les scripts sur Internet. Voici le scripts qui fonctionne dans Word, PowerPoint, Excel et OneNote.
; Scroll speed parameter
ScrollSpeed=4
; OneNote horizontal scroll
#IfWinActive, ahk_exe ONENOTE.EXE
+WheelUp::WheelLeft
+WheelDown::WheelRight
; PowerPoint horizontal scroll
#IfWinActive, ahk_exe POWERPNT.EXE
+WheelUp::ComObjActive("PowerPoint.Application").ActiveWindow.SmallScroll(0,0,0,ScrollSpeed)
+WheelDown::ComObjActive("PowerPoint.Application").ActiveWindow.SmallScroll(0,0,ScrollSpeed,0)
; Word horizontal scroll
#IfWinActive, ahk_exe WINWORD.EXE
+WheelUp::ComObjActive("Word.application").ActiveWindow.SmallScroll(0,0,0,ScrollSpeed)
+WheelDown::ComObjActive("Word.application").ActiveWindow.SmallScroll(0,0,ScrollSpeed,0)
; Excel horizontal scroll
#IfWinActive ahk_exe EXCEL.EXE
+WheelUp::
SetScrollLockState, On
SendInput {Left}
SetScrollLockState, Off
Return
+WheelDown::
SetScrollLockState, On
SendInput {Right}
SetScrollLockState, Off
Return
A partir de la solution de Sam, j'ai développé ma propre solution qui a une vitesse de défilement 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