it-swarm-eu.dev

Scorciatoia orizzontale a scorrimento in Windows

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?

62
Matthew Shanley

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) }
15
Ivo Flipse

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

23
Sam

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

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!

5
Axxmasterr

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.

3
Matthew Lock

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

2
Blaine

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
2
iagrapefruit

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

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