In Os X, posso tenere premuto Shift mentre usi la rotellina del mouse per scorrere orizzontalmente anziché verticalmente. C'è un modo per fare qualcosa di simile in Windows?
Puoi simularlo con AutoHotKey
Se trovo lo script ti farò sapere: Da questi post:
Dovresti trovare alcuni 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 shift e (presumibilmente) comandi di scroll 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, incluse le applicazioni Microsoft, non supportano lo scorrimento orizzontale della rotellina del mouse. (Credo che la funzionalità è 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 riguardano 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 ruota la rotella tenendo premuto il tasto di controllo 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 tasto destro del mouse. Ho un mouse con una rotella di scorrimento che ha un pulsante jog left/jog right integrato in esso. Spingendo semplicemente la rotella di scorrimento verso sinistra o verso destra, il contenuto viene spostato nella direzione desiderata. Ho il Logitech VX e ne sono stato molto contento.
Il VX ti permette anche di configurare i pulsanti in modo diverso per ogni singola applicazione, se eri così inclinato. Questo livello di personalizzazione è molto bello da avere!
In alcuni programmi di Windows, lo spostamento scorre in orizzontale (ad es. Windows Explorer).
In altri programmi come Internet Explorer, Firefox ed Excel, tenendo premuto il pulsante della rotellina e spostandosi da sinistra a destra, si scorrerà orizzontalmente.
Non esattamente una scorciatoia da tastiera, ma puoi sempre fare clic sulla rotellina del mouse. Ciò fa apparire un'icona a 4 direzioni nella maggior parte delle applicazioni che è possibile utilizzare per scorrere
Ecco una soluzione hacky 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 mappature per gli eventi WheelLeft e WheelRight qui sotto perché il mio 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
Configurare i collegamenti dei tasti di Word (in alternativa puoi usare 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 Normal (o regola i riferimenti ad esse sopra):
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
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
Dopo aver guardato in giro, alla fine ha trovato un modo (usando AutoHotKey ) che funziona in Excel e ovunque, senza ovviamente rompere nulla (adattato da un paio di differenti soluzioni sui forum di AutoHotKey, anche se non ho registrato le fonti quindi non posso dare il giusto credito scusa).
MS Excel sembra avere alcuni strani modi di gestire la sua interfaccia utente (anche se in qualche modo, dopo molti anni di vedere ciò che gli sviluppatori di MS Office ci hanno dato, non sono così sorpreso) . Questo script sembra funzionare praticamente ovunque tranne MS Word - se qualcuno può risolverlo, fammelo sapere! Probabilmente è qualcosa di simile a scoprire la classe della finestra per Word e la codifica in modo specifico come è stato fatto con Excel (solo con un diverso set di associazioni 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