Horizontale Bildlaufverknüpfung in Windows


64

In Os X kann ich die Umschalttaste gedrückt halten, während ich das Mausrad verwende, um horizontal statt vertikal zu scrollen. Gibt es eine Möglichkeit, etwas Ähnliches in Windows zu tun?


1
Scrollen in welcher Anwendung? Forscher? ein Webbrowser? Es hängt davon ab, wie der Ersteller es implementieren wollte. Wenn es sich also um einen Browser handelt, ist es anders.
John T

Ich glaube nicht, dass es für Windows standardmäßig eine systemweite Verknüpfung gibt.
chills42

11
Ich hatte auf eine systemweite Lösung gehofft.
Matthew Shanley

Antworten:


15

Sie können es mit AutoHotKey simulieren

Wenn ich das Skript finde, werde ich Sie wissen lassen: Von diesen Beiträgen:

Sie sollten einige Skripte finden

#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) }

Ah, hast du es geschafft? Genial!
Ivo Flipse

23

Hier ist ein AutoHotKey-Skript, das Shift- und (vermutlich) native Mausrad-Scroll-Befehle verwendet:

; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft

Dies wird direkt von https://gist.github.com/cheeaun/160999 entnommen .

Beachten Sie, dass viele Anwendungen, einschließlich Microsoft-Anwendungen, das horizontale Scrollen mit dem Mausrad nicht unterstützen. (Ich glaube, die Funktion wurde nur in Windows Vista eingeführt.)


Danke, funktioniert super in Visual Studio! Schade, dass es in Excel 2013 und Google Chrome nicht funktioniert.
Cheesus

3
@cheeesus, für mich hat Google Chrome in Windows eine eingebaute Unterstützung für horizontales Scrollen. Auch ohne das obige Skript kann ich die Umschalttaste gedrückt halten und mit dem Mausrad einen horizontalen Bildlauf durchführen.
Sam

2
Perfekt! Dies ist die beste Antwort hier, einfach und unkompliziert. Für diejenigen, die AutoHotKey noch nicht kennen, sind die folgenden Schritte zu befolgen: 1) Laden Sie AutoHotKey von autohotkey.com herunter und installieren Sie es. 2) Klicken Sie mit der rechten Maustaste auf Ihren Desktop -> Neu -> Textdokument -> Erstellen Sie eine Datei mit dem Namen "myscript.ahk". 3) Kopieren Sie das Skript von oben -> Speichern Sie die Datei. 4) Klicken Sie mit der rechten Maustaste auf die Datei. -> Führen Sie das Skript aus. 5) Das kleine H-Symbol sollte in Ihrem Infobereich der Taskleiste erscheinen und jetzt sollte "Umschalt + Mausrad" horizontal erscheinen Scrollen
np8

@ np8 es hat bei mir nicht funktioniert .. ich habe genau das versucht. Ich benutze eine normale HP Maus mit Scrollrad. Chrome Browser funktioniert Shift + Scroll horizontal .. es hat immer noch vor ahk. jetzt mit ahk install .. ich hatte gehofft, dass ms office funktioniert .. aber es funktioniert nicht.
Ihightower

@ihightower Auch für Excel gibt es eine Lösung. Ich werde es zu dieser Antwort hinzufügen.
5.

8

Von http://www.autohotkey.com/docs/Hotkeys.htm

Zu den nützlichsten Tastenkombinationen für das Mausrad gehören alternative Bildlaufmodi für den Fenstertext. Mit den folgenden Tastenkombinationen können Sie beispielsweise einen horizontalen und keinen vertikalen Bildlauf durchführen, wenn Sie das Rad drehen, während Sie die linke Steuertaste gedrückt halten:

~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

5

In Windows gibt es eine Möglichkeit, dies mit der rechten Maustaste zu tun. Ich habe eine Maus mit einem Scrollrad, in die eine Taste für Tippen nach links / Tippen nach rechts integriert ist. Durch einfaches Drücken des Scrollrads nach links oder rechts wird der Inhalt in die gewünschte Richtung verschoben. Ich habe den Logitech VX und bin sehr zufrieden damit.

Mit dem VX können Sie die Tasten auch für jede einzelne Anwendung anders konfigurieren, wenn Sie dies wünschen. Diese Anpassungsstufe ist sehr schön zu haben!


Die Microsoft Wireless Laser Mouse 5000 ( microsoft.com/hardware/mouseandkeyboard/… ) verfügt über diese Funktionalität.
Travis

Du hast Recht! Früher hatte ich diese Maus, bevor ich auf die VX umgestiegen bin. Der VX hat zwei sehr schöne Funktionen, weshalb ich ein Upgrade durchgeführt habe. Es hat ein Schwungrad am Scrollrad, das sich 7 Sekunden lang dreht. Das andere nette Feature ist, dass der USB-Dongle für die Maus tatsächlich vollständig in das Gerät passt, so dass es sehr schwierig ist, den Dongle zu verlieren.
Axxmasterr

3

In einigen Windows-Programmen wird beim Verschieben ein horizontaler Bildlauf ausgeführt (z. B. Windows Explorer).

In anderen Programmen wie Internet Explorer, Firefox und Excel wird ein horizontaler Bildlauf durchgeführt, wenn Sie das Scrollrad gedrückt halten und sich von links nach rechts bewegen.


2
In Chrome ist anscheinend auch das horizontale Scrollen mit Shift integriert.
Sam

Sieht so aus, als würde es auch in VS funktionieren, was ich im Grunde gebraucht habe! Danke!
Shimmy

2

Hier ist eine Hacky-Lösung für Word (nur), die sowohl AutoHotKey- als auch Word-Makros erfordert. Es funktioniert nur in der Hauptdokumentansicht in Word (was für mich gut genug ist).

Verwenden Sie zunächst AutoHotKey, um als Reaktion auf die Mausaktion einen benutzerdefinierten Tastenanschlag an Word zu senden. Ich verwende Alt-M RightArrow und Alt-M LeftArrow. (Ich habe auch Zuordnungen für die Ereignisse WheelLeft und WheelRight unten, da meine Maus sie einwandfrei sendet. Ich brauche nur Word, um etwas Nützliches mit ihnen zu tun.)

#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If

Richten Sie die Word-Tastenkombinationen ein (alternativ können Sie auch das Dialogfeld zum Anpassen der Tastatur verwenden):

' 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"

Definieren Sie schließlich die Word-Makros in Ihrer Vorlage "Normal" (oder passen Sie die Verweise auf diese oben an):

Sub ScrollRight()
    ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
    ActiveWindow.SmallScroll ToLeft:=1
End Sub

2

Nicht gerade eine Tastenkombination, aber Sie können immer mit dem Mausrad klicken. Dadurch wird in den meisten Anwendungen ein 4-Wege-Symbol angezeigt, mit dem Sie scrollen können


1

Nach einigem Hin und Her habe ich irgendwann einen Weg gefunden (mit AutoHotKey ), der in Excel und überall anders funktioniert, ohne offensichtlich irgendetwas zu beschädigen (angepasst aus ein paar verschiedenen Lösungen in den AutoHotKey-Foren, obwohl ich keine Quellen aufgenommen habe, die ich nicht angeben kann entsprechende Gutschrift sorry).

MS Excel scheint einige merkwürdige Möglichkeiten zu haben, mit der Benutzeroberfläche umzugehen (obwohl ich nach vielen Jahren, in denen ich gesehen habe, was die MS Office-Entwickler uns gegeben haben, nicht so überrascht bin). Dieses Skript scheint fast überall zu funktionieren, außer in MS Word - wenn jemand das lösen kann, dann lass es mich wissen! Es ist wahrscheinlich so etwas wie das Herausfinden der Fensterklasse für Word und das Codieren derselben, wie es mit Excel durchgeführt wurde (nur mit einem anderen Satz von Tastenzuordnungen).

#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

1

Aus der Sam-Lösung entwickelte ich meine eigene Lösung mit konfigurierbarer Bildlaufgeschwindigkeit:

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

Tolles Drehbuch. Das funktioniert wirklich gut.
Nick Painter

Die einzige Anwendung, auf der dies nicht zu funktionieren scheint, ist der Windows Explorer.
Nick Painter
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.