it-swarm.asia

Pintasan gulir horizontal di Windows

Di Os X, saya bisa menahan Shift sambil menggunakan roda gulir pada mouse untuk menggulir secara horizontal, bukan vertikal. Apakah ada cara untuk melakukan hal serupa di Windows?

62
Matthew Shanley

Anda dapat mensimulasikannya dengan AutoHotKey

Jika saya menemukan skripnya, saya akan memberi tahu Anda: Dari pos-pos ini:

Anda harus menemukan beberapa skrip

#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

Berikut ini skrip AutoHotKey untuk melakukannya menggunakan shift dan (mungkin) perintah gulir roda mouse asli:

; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft

Ini diambil langsung dari https://Gist.github.com/cheeaun/160999 .

Ingatlah bahwa banyak aplikasi, termasuk aplikasi Microsoft, tidak mendukung pengguliran roda mouse horizontal. (Saya percaya fitur ini hanya diperkenalkan di Windows Vista.)

23
Sam

Dari http://www.autohotkey.com/docs/Hotkeys.htm

Beberapa tombol pintas yang paling berguna untuk roda mouse melibatkan mode alternatif untuk menggulir teks jendela. Misalnya, sepasang hotkey berikut ini bergulir secara horizontal, bukan vertikal ketika Anda memutar roda sambil menahan tombol Control kiri:

~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

Ada cara untuk melakukan ini di windows dengan mouse kanan. Saya memiliki mouse dengan roda gulir yang memiliki tombol jog kiri/jog kanan terintegrasi langsung ke dalamnya. Cukup mendorong roda gulir ke kiri atau kanan akan memindahkan konten ke arah yang diinginkan. Saya memiliki Logitech VX dan saya sangat senang dengannya.

VX juga memungkinkan Anda untuk mengonfigurasikan tombol secara berbeda untuk setiap aplikasi tunggal jika Anda menginginkannya. Tingkat penyesuaian ini sangat baik untuk dimiliki!

5
Axxmasterr

Dalam beberapa program Windows, shift bergulir secara horizontal (misalnya Windows Explorer).

Dalam program lain seperti Internet Explorer, Firefox dan Excel menahan tombol gulir roda dan bergerak dari kiri ke kanan akan menggulir secara horizontal.

3
Matthew Lock

Bukan cara pintas keyboard, tetapi Anda selalu dapat mengeklik roda mouse. Ini menampilkan ikon 4 arah di sebagian besar aplikasi yang dapat Anda gunakan untuk menggulir

2
Blaine

Berikut ini solusi hacky untuk Word (hanya) yang membutuhkan makro AutoHotKey dan Word. Ini hanya berfungsi pada tampilan dokumen utama di Word (yang cukup bagus untuk saya).

Pertama, gunakan AutoHotKey untuk mengirim keystroke khusus ke Word sebagai respons terhadap tindakan mouse. Saya menggunakan Alt-M RightArrow dan Alt-M LeftArrow. (Saya juga punya pemetaan untuk peristiwa WheelLeft dan WheelRight di bawah ini karena mouse saya mengirimkannya dengan baik; Saya hanya perlu Word untuk melakukan sesuatu yang berguna dengan mereka.)

#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If

Menyiapkan binding kata kunci (Anda dapat menggunakan alternatif dialog kustomisasi keyboard untuk melakukan ini):

' 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"

Akhirnya, tentukan makro Word di templat Normal Anda (atau sesuaikan referensi ke atasnya):

Sub ScrollRight()
    ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
    ActiveWindow.SmallScroll ToLeft:=1
End Sub
2
iagrapefruit

Dari solusi Sam, saya mengembangkan solusi saya sendiri yang memiliki kecepatan gulir yang dapat dikonfigurasi:

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

Setelah beberapa melihat-lihat, akhirnya menemukan cara (menggunakan AutoHotKey ) yang bekerja di Excel dan di mana-mana, tanpa jelas melanggar apa pun (diadaptasi dari beberapa berbeda solusi di forum Autohotkey, meskipun saya tidak mencatat sumber sehingga tidak dapat memberikan kredit yang sesuai maaf).

MS Excel tampaknya memiliki beberapa aneh cara menangani antarmuka pengguna (meskipun entah bagaimana, setelah bertahun-tahun melihat apa yang telah diberikan oleh pengembang MS Office kepada kami, saya tidak terkejut) . Skrip ini tampaknya berfungsi hampir di semua tempat kecuali MS Word - jika ada yang bisa menyelesaikannya, beri tahu saya! Mungkin sesuatu seperti mencari tahu kelas jendela untuk Word dan mengkodekannya secara khusus seperti dilakukan dengan Excel (hanya dengan serangkaian ikatan kunci yang berbeda).

#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