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?
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?
Antworten:
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) }
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.)
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
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!
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.
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
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
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