Pintasan gulir horizontal di Windows

64

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?

Matthew Shanley
sumber
1
bergulir di aplikasi apa? penjelajah? browser web? Itu tergantung pada bagaimana pembuatnya ingin mengimplementasikannya jadi jika itu peramban akan berbeda.
John T
Saya tidak berpikir ada pintasan seluruh sistem untuk itu di windows secara default.
menggigil42
11
Saya berharap untuk solusi seluruh sistem.
Matthew Shanley

Jawaban:

15

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) }
Ivo Flipse
sumber
Ah Anda berhasil? Luar biasa!
Ivo Flipse
23

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

Sam
sumber
Terima kasih, bekerja dengan baik di Visual Studio! Sayang sekali itu tidak berfungsi di Excel 2013 dan Google Chrome.
cheeesus
3
@ cheeesus, bagi saya, di Windows, Google Chrome sebenarnya memiliki dukungan bawaan untuk pengguliran horizontal. Bahkan tanpa skrip di atas, saya bisa menahan Shift dan gulir roda mouse untuk menggulir secara horizontal.
Sam
2
Sempurna! Ini jawaban terbaik di sini, sederhana dan mudah. Bagi mereka yang baru mengenal AutoHotKey, berikut adalah langkah-langkahnya: 1) Unduh dan instal AutoHotKey dari autohotkey.com 2) Klik kanan pada desktop Anda -> Baru -> Dokumen Teks -> Buat file bernama "myscript.ahk" 3) Salin-tempel skrip dari atas -> Simpan file 4) Klik kanan pada file -> Jalankan Skrip 5) Ikon H kecil akan muncul di area notifikasi bilah tugas, dan sekarang "Shift + Mouse Wheel" akan menghasilkan horisontal scrolling
np8
@ np8 itu tidak berhasil untuk saya .. saya mencoba persis seperti itu. saya menggunakan hp mouse normal dengan roda gulir. browser chrome bekerja shift + gulir secara horizontal .. itu selalu dilakukan bahkan sebelum ahk. sekarang dengan ahk install .. saya berharap ms office akan berfungsi .. tetapi tidak.
ihightower
@ihightower Ada solusi untuk Excel juga. Saya akan menambahkannya ke jawaban ini.
np8
8

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

Beberapa hotkey yang paling berguna untuk roda mouse melibatkan mode-mode alternatif untuk menggulirkan 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
Matthew Lock
sumber
5

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 menyenangkan untuk dimiliki!

Axxmasterr
sumber
Microsoft Wireless Laser Mouse 5000 ( microsoft.com/hardware/mouseandkeyboard/… ) memiliki fungsi ini.
Travis
Anda benar! Saya dulu punya mouse itu sebelum saya upgrade ke VX. VX memiliki dua fitur yang sangat bagus itulah sebabnya saya memutakhirkan. Ini memiliki roda gila di roda gulir yang berputar selama 7 detik. Fitur bagus lainnya adalah dongle USB untuk mouse yang benar-benar pas di dalam perangkat, sehingga sangat sulit untuk kehilangan dongle.
Axxmasterr
3

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.

Matthew Lock
sumber
2
Chrome juga memiliki pengguliran horizontal Shift bawaan.
Sam
Sepertinya itu bekerja di VS juga, apa yang saya butuhkan pada dasarnya! Terima kasih!
Shimmy
2

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

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

Blaine
sumber
1

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

MS Excel tampaknya memiliki beberapa cara aneh untuk menangani antarmuka pengguna (meskipun entah bagaimana, setelah bertahun-tahun melihat apa yang telah diberikan oleh pengembang MS Office kepada kami, saya tidak terlalu 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
BevanFindlay
sumber
1

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
Envil
sumber
Script yang bagus. Ini bekerja dengan sangat baik.
Nick Painter
Satu-satunya aplikasi yang sepertinya tidak berfungsi adalah Windows explorer.
Nick Painter