Raccourci de défilement horizontal sous Windows

65

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?

Matthew Shanley
la source
1
faire défiler dans quelle application? explorateur? un navigateur web? Cela dépend de la manière dont le créateur a voulu l'implémenter, donc si c'est un navigateur, ce sera différent.
John T
Je ne pense pas qu'il existe par défaut un raccourci à l'échelle du système pour cela sur Windows.
Chills42
12
J'espérais une solution à l'échelle du système.
Matthew Shanley

Réponses:

16

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) }
Ivo Flipse
la source
Ah tu l'as fait travailler? Impressionnant!
Ivo Flipse
23

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.)

Sam
la source
Merci, fonctionne très bien dans Visual Studio! Dommage que cela ne fonctionne pas dans Excel 2013 et Google Chrome.
cheesus SO cesser de nuire à Monica
3
@cheeesus, pour moi, dans Windows, Google Chrome prend en charge le défilement horizontal. Même sans le script ci-dessus, je peux maintenir la touche Maj enfoncée et faire défiler la molette de la souris pour faire défiler horizontalement.
Sam
2
Parfait! C'est la meilleure réponse ici, simple et facile. Pour ceux qui découvrent AutoHotKey, voici les étapes: 1) Téléchargez et installez AutoHotKey à partir de autohotkey.com 2) Faites un clic droit sur votre bureau -> Nouveau -> Document texte -> Créez un fichier appelé "myscript.ahk" 3) Copiez-collez le script ci-dessus -> Enregistrez le fichier. 4) Cliquez avec le bouton droit de la souris sur le fichier -> Exécuter le script. 5) Une petite icône en forme de H devrait apparaître dans la zone de notification de la barre des tâches. Désormais, "Maj + molette de la souris" devrait apparaître horizontalement. défilement
np8
@ np8 cela n'a pas fonctionné pour moi .. j'ai essayé exactement comme ça. J'utilise une souris HP normale avec molette de défilement. navigateur chrome fonctionne shift + scroll horizontalement .. il a toujours fait, même avant ahk. Maintenant, avec ahk installer .. J'espérais que MS Office fonctionnera .. mais ça ne marche pas.
ihightower le
@ihightower Il existe aussi une solution pour Excel. Je vais l'ajouter à cette réponse.
np8
8

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
Matthew Lock
la source
5

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!

Axxmasterr
la source
La souris laser sans fil 5000 de Microsoft ( microsoft.com/hardware/mouseandkeyboard/… ) offre cette fonctionnalité.
Travis
Vous avez raison! J'avais l'habitude d'avoir cette souris avant de mettre à niveau vers le VX. Le VX a deux très belles fonctionnalités, c'est pourquoi j'ai mis à jour. Il a un volant sur la molette de défilement qui tourne pendant 7 secondes. L’autre caractéristique intéressante est que la clé USB de la souris est parfaitement intégrée à l’appareil. Il est donc très difficile de perdre la clé.
Axxmasterr le
3

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.

Matthew Lock
la source
2
Chrome semble également disposer du défilement horizontal Shift intégré.
Sam
On dirait que cela fonctionne aussi dans VS, ce dont j'avais fondamentalement besoin! Je vous remercie!
Shimmy
2

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
iagrapefruit
la source
2

Pas exactement un raccourci clavier, mais vous pouvez toujours cliquer sur la molette de la souris. Cela fait apparaître une icône à 4 directions dans la plupart des applications que vous pouvez utiliser pour faire défiler

Blaine
la source
1

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
BevanFindlay
la source
1

À 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
Envil
la source
Super script. Cela fonctionne vraiment bien.
Nick Painter
La seule application sur laquelle cela ne semble pas fonctionner est l'explorateur Windows.
Nick Painter
0

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.

Configurer Autohotkey

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 .

Script Autohotkey

; 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
np8
la source