it-swarm.com.de

Horizontale Bildlaufverknüpfung in Windows

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?

62
Matthew Shanley

Sie könnten 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) }
15
Ivo Flipse

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

23
Sam

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
7
Matthew Lock

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. Dieses Maß an Anpassung ist sehr schön zu haben!

5
Axxmasterr

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.

3
Matthew Lock

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

2
Blaine

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
iagrapefruit

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
1
Envil

Nach einigem Umschauen, schließlich einen Weg gefunden (mit AutoHotKey ), der in Excel und überall sonst funktioniert, ohne offensichtlich etwas zu brechen (von ein paar verschiedenen angepasst Lösungen in den AutoHotKey-Foren, obwohl ich keine Quellen aufgezeichnet habe, kann ich die entsprechende Gutschrift leider nicht geben.

MS Excel scheint einige seltsame 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 sonderlich überrascht bin). . Dieses Skript scheint fast überall zu funktionieren, mit Ausnahme von MS Word - wenn jemand das lösen kann, lassen Sie 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
BevanFindlay