Scorciatoia a scorrimento orizzontale in Windows


64

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?


1
scorrendo in quale applicazione? esploratore? un browser web? Dipende da come il creatore voleva implementarlo, quindi se si tratta di un browser sarà diverso.
John T,

Non credo che ci sia un collegamento a livello di sistema per questo su Windows per impostazione predefinita.
brividi42

11
Speravo in una soluzione a livello di sistema.
Matthew Shanley,

Risposte:


15

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

Ah, hai funzionato? Eccezionale!
Ivo Flipse,

23

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


Grazie, funziona benissimo in Visual Studio! Peccato che non funziona in Excel 2013 e Google Chrome.
Cheeesus,

3
@cheeesus, per me, in Windows, Google Chrome in realtà ha il supporto integrato per lo scorrimento orizzontale. Anche senza lo script sopra, posso tenere premuto Maiusc e scorrere la rotellina del mouse per scorrere in orizzontale.
Sam,

2
Perfetto! Questa è la risposta migliore qui, semplice e facile. Per coloro che non conoscono AutoHotKey, ecco i passaggi: 1) Scarica e installa AutoHotKey da autohotkey.com 2) Fai clic con il pulsante destro del mouse sul desktop -> Nuovo -> Documento di testo -> Crea un file chiamato "myscript.ahk" 3) Copia e incolla lo script da quanto sopra -> Salva il file 4) Fai clic con il pulsante destro del mouse sul file -> Esegui script 5) Una piccola icona H dovrebbe apparire nell'area di notifica della barra delle applicazioni e ora "Maiusc + Rotellina del mouse" dovrebbe produrre orizzontale scrolling
np8

@ np8 non ha funzionato per me .. ho provato esattamente così. sto usando un normale mouse hp con rotellina di scorrimento. il browser Chrome funziona shift + scroll in orizzontale .. lo ha sempre fatto anche prima di ahk. ora con ahk install .. speravo che MS Office funzionasse .. ma non funziona.
ihightower,

@ihightower Esiste anche una soluzione per Excel. Lo aggiungerò a questa risposta.
np8,

8

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

5

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!


Microsoft Wireless Laser Mouse 5000 ( microsoft.com/hardware/mouseandkeyboard/… ) ha questa funzionalità.
Travis,

Hai ragione! Avevo quel mouse prima di passare a VX. Il VX ha due caratteristiche molto belle, motivo per cui ho aggiornato. Ha un volano sulla rotella che gira per 7 secondi. L'altra bella caratteristica è il dongle USB per il mouse che si adatta perfettamente all'interno del dispositivo, quindi è molto difficile perdere il dongle.
Axxmasterr,

3

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.


2
Chrome sembra avere anche lo scorrimento orizzontale Shift incorporato.
Sam,

Sembra che funzioni anche in VS, quello di cui avevo praticamente bisogno! Grazie!
Shimmy,

2

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

2

Non esattamente una scorciatoia da tastiera, ma puoi sempre fare clic sulla rotellina del mouse. Questo fa apparire un'icona a 4 vie nella maggior parte delle applicazioni che puoi usare per scorrere


1

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

1

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

Ottima sceneggiatura. Funziona davvero bene.
Nick Painter,

L'unica applicazione su cui questo non sembra funzionare è Windows Explorer.
Nick Painter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.