In Os X, posso tenere premuto Maiusc mentre uso la rotellina del mouse per scorrere in orizzontale anziché in verticale. C'è un modo per fare qualcosa di simile in Windows?
In Os X, posso tenere premuto Maiusc mentre uso la rotellina del mouse per scorrere in orizzontale anziché in verticale. C'è un modo per fare qualcosa di simile in Windows?
Risposte:
Puoi simularlo con AutoHotKey
Se trovo la sceneggiatura ti farò sapere: Da questi post:
Dovresti trovare degli script
#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) }
Ecco uno script AutoHotKey per farlo usando i comandi shift e (presumibilmente) nativi della rotellina del mouse:
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
Questo è preso direttamente da https://gist.github.com/cheeaun/160999 .
Tieni presente che molte applicazioni, comprese le applicazioni Microsoft, non supportano lo scorrimento orizzontale della rotellina del mouse. (Credo che la funzionalità sia stata introdotta solo in Windows Vista.)
Da http://www.autohotkey.com/docs/Hotkeys.htm
Alcuni dei tasti di scelta rapida più utili per la rotellina del mouse prevedono modalità alternative di scorrimento del testo di una finestra. Ad esempio, la seguente coppia di tasti di scelta rapida scorre in orizzontale anziché in verticale quando si gira la ruota tenendo premuto il tasto Control sinistro:
~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
C'è un modo per farlo in Windows con il mouse destro. Ho un mouse con una rotella di scorrimento che ha un pulsante jog left / jog right integrato al suo interno. Basta spingere la rotella di scorrimento verso sinistra o verso destra per spostare il contenuto nella direzione desiderata. Ho Logitech VX e ne sono stato molto contento.
Il VX ti consente anche di configurare i pulsanti in modo diverso per ogni singola applicazione se eri così incline. Questo livello di personalizzazione è molto bello da avere!
In alcuni programmi Windows il turno scorre in orizzontale (ad es. Esplora risorse).
In altri programmi come Internet Explorer, Firefox ed Excel, tenendo premuto il pulsante della rotellina di scorrimento e spostandosi da sinistra a destra, scorrerà in senso orizzontale.
Ecco una soluzione caotica per Word (solo) che richiede sia macro AutoHotKey che Word. Funziona solo sulla vista del documento principale in Word (che è abbastanza buono per me).
Innanzitutto, utilizzare AutoHotKey per inviare una sequenza di tasti personalizzata a Word in risposta all'azione del mouse. Sto usando Alt-M RightArrow e Alt-M LeftArrow. (Ho anche dei mapping per gli eventi WheelLeft e WheelRight di seguito perché il mouse li invia bene; ho solo bisogno di Word per fare qualcosa di utile con loro.)
#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If
Imposta i collegamenti dei tasti di Word (in alternativa puoi utilizzare la finestra di dialogo di personalizzazione della tastiera per farlo):
' 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"
Infine, definisci le macro di Word nel tuo modello Normale (o modifica i riferimenti alle precedenti):
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
Dopo aver guardato in giro, alla fine ho trovato un modo (usando AutoHotKey ) che funziona in Excel e in qualsiasi altro luogo, senza ovviamente interrompere nulla (adattato da un paio di soluzioni diverse nei forum AutoHotKey, anche se non ho registrato fonti quindi non posso dare scusa credito appropriato).
MS Excel sembra avere alcuni strani modi di gestire la sua interfaccia utente (anche se in qualche modo, dopo molti anni di vedere cosa ci hanno dato gli sviluppatori di MS Office, non sono così sorpreso). Questo script sembra funzionare praticamente ovunque, tranne MS Word - se qualcuno può risolverlo, allora fammelo sapere! Probabilmente è qualcosa come scoprire la classe della finestra per Word e codificarla in modo specifico come è stato fatto con Excel (solo con un diverso set di combinazioni di tasti).
#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
Dalla soluzione Sam, ho sviluppato la mia soluzione che ha una velocità di scorrimento configurabile:
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