Dans Os X, je peux maintenir la touche Maj enfoncée tout en utilisant la molette de la souris pour faire défiler horizontalement au lieu de verticalement. Y at-il un moyen de faire quelque chose de similaire dans Windows?
Dans Os X, je peux maintenir la touche Maj enfoncée tout en utilisant la molette de la souris pour faire défiler horizontalement au lieu de verticalement. Y at-il un moyen de faire quelque chose de similaire dans Windows?
Réponses:
Vous pouvez le simuler avec AutoHotKey
Si je trouve le script, je vous le ferai savoir:
Vous devriez trouver des 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) }
Voici un script AutoHotKey pour le faire en utilisant les commandes shift et (vraisemblablement) natives de la molette de la souris:
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
Cela provient directement de https://gist.github.com/cheeaun/160999 .
N'oubliez pas que de nombreuses applications, y compris Microsoft, ne prennent pas en charge le défilement horizontal de la molette de la souris. (Je pense que la fonctionnalité n'a été introduite que dans Windows Vista.)
De http://www.autohotkey.com/docs/Hotkeys.htm
Certaines des touches de raccourci les plus utiles pour la molette de la souris impliquent d'autres modes de défilement du texte d'une fenêtre. Par exemple, la paire de touches de raccourci suivante défile horizontalement au lieu de verticalement lorsque vous tournez le volant tout en maintenant la touche Ctrl enfoncée:
~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
Il y a un moyen de faire cela dans les fenêtres avec la bonne souris. J'ai une souris avec une molette de défilement dans laquelle est intégré un bouton gauche / droit. Il suffit de pousser la molette de défilement vers la gauche ou vers la droite pour déplacer le contenu dans la direction souhaitée. J'ai le Logitech VX et j'en suis très content.
Le VX vous permet également de configurer les boutons différemment pour chaque application si vous le souhaitez. Ce niveau de personnalisation est très agréable à avoir!
Dans certains programmes Windows, shift défile horizontalement (par exemple, Windows Explorer).
Dans d'autres programmes tels que Internet Explorer, Firefox et Excel, maintenez le bouton de la molette de défilement enfoncé et déplacez-vous de gauche à droite pour faire défiler horizontalement.
Voici une solution de hacky pour Word (uniquement) nécessitant à la fois les macros AutoHotKey et Word. Cela ne fonctionne que sur la vue principale du document dans Word (ce qui me suffit).
Commencez par utiliser 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 mappages pour les événements WheelLeft et WheelRight ci-dessous car ma souris les envoie très bien; j'ai juste besoin que Word fasse quelque chose d'utile avec eux.)
#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If
Configurez les raccourcis clavier 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 ci-dessus):
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
Après quelques recherches, nous avons finalement trouvé un moyen (avec AutoHotKey ) de fonctionner dans Excel et ailleurs, sans rien casser de toute évidence (adapté de deux solutions différentes sur les forums AutoHotKey, bien que je n’ai pas enregistré de sources, je ne peux donc pas vous donner. crédit approprié désolé).
MS Excel semble avoir des manières étranges de gérer son interface utilisateur (même si, après de nombreuses années à voir ce que les développeurs de MS Office nous ont donné, je ne suis pas étonné de cette surprise). Ce script semble fonctionner un peu partout, à l'exception de MS Word - si quelqu'un peut résoudre ce problème, faites le moi savoir! C'est probablement quelque chose comme découvrir la classe de fenêtre pour Word et le coder pour cela, comme si cela avait été fait avec Excel (juste avec un ensemble différent de raccourcis clavier).
#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
À partir de la solution 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
L'ajout de mes notes Autohotkey sur une réponse distincte, car la modification de la réponse acceptée a été rejetée deux fois.
Pour ceux qui découvrent AutoHotKey pour la première fois, voici les étapes:
1) Download and install AutoHotKey from autohotkey.com
2) Right click on your desktop (or any other folder) -> New
-> Text Document -> Make a file called "myscript.ahk"
3) Copy-paste the script from below -> Save the file
4) Right-click on the file -> Run Script
5) Small H-icon should appear to your taskbar notification area
Astuce: Vous voudrez peut-être que le script s'exécute automatiquement au démarrage de Windows .
; Default solution (for all other programs)
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
; MS Excel
#IfWinActive, ahk_exe EXCEL.EXE
; Shift + Wheel for horizontal scrolling (left)
~LShift & WheelUp::
{
SetScrollLockState, on
send,{left}
SetScrollLockState, off
}
return
; Shift + Wheel for horizontal scrolling (right)
~LShift & WheelDown::
{
SetScrollLockState, on
send,{right}
SetScrollLockState, off
}
return
#IfWinActive