it-swarm.asia

Windows'ta yatay kaydırma kısayolu

Os X'te, dikey yerine yatay kaydırmak için farenin kaydırma tekerleğini kullanırken Shift tuşunu basılı tutabilirim. Windows'ta benzer bir şey yapmanın bir yolu var mı?

62
Matthew Shanley

Simule edebilirsiniz AutoHotKey

Senaryoyu bulursam size bildiririm: Bu mesajlardan:

Senaryoları bulmalısın

#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

İşte shift ve (büyük olasılıkla) yerel fare tekerleği kaydırma komutlarını kullanarak yapmak için bir AutoHotKey komut dosyası:

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

Bu doğrudan https://Gist.github.com/cheeaun/160999 adresinden alınır.

Microsoft uygulamaları dahil birçok uygulamanın yatay fare tekerleği kaydırmayı desteklemediğini unutmayın. (Özelliğin yalnızca Windows Vista'da tanıtıldığına inanıyorum.)

23
Sam

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

Fare tekerleği için en yararlı kısayol tuşlarından bazıları, bir pencerenin metnini kaydırmanın alternatif modlarını içerir. Örneğin, aşağıdaki kısayol tuşları çifti, sol Kontrol tuşunu basılı tutarken tekerleği döndürdüğünüzde dikey yerine yatay olarak kaydırılır:

~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

Bunu sağ fare ile pencerelerde yapmanın bir yolu var. Sağa bütünleşik bir jogme sola/sağa hareket düğmesine sahip kaydırma tekerleğine sahip bir farem var. Kaydırma tekerleğini sola veya sağa itmek, içerikleri istenen yönde hareket ettirir. Logitech VX'e sahibim ve bundan çok memnun kaldım.

VX ayrıca, eğimli olmanız durumunda her bir uygulama için düğmeleri farklı şekilde yapılandırmanıza izin verir. Bu özelleştirme seviyesi olması çok güzel!

5
Axxmasterr

Bazı Windows programlarında vardiya yatay kaydırma yapar (örn. Windows Gezgini).

Internet Explorer, Firefox ve Excel gibi diğer programlarda kaydırma tekerleğini basılı tutup soldan sağa hareket ettirmek yatay olarak kaydırılır.

3
Matthew Lock

Tam olarak bir klavye kısayolu değil, ancak her zaman fare tekerleğini aşağı tıklayabilirsiniz. Bu, kaydırma yapmak için kullanabileceğiniz çoğu uygulamada 4 yollu bir simge getirir.

2
Blaine

İşte hem AutoHotKey hem de Word makrolarını gerektiren Word (sadece) için hacky bir çözüm. Yalnızca Word'deki ana belge görünümünde çalışır (bu benim için yeterli).

İlk olarak, fare eylemine yanıt olarak Word'e özel bir tuş vuruşu göndermek için AutoHotKey tuşunu kullanın. Alt-M RightArrow ve Alt-M LeftArrow kullanıyorum. (Ayrıca WheelLeft ve WheelRight olayları için eşlemelere sahibim, çünkü farem onları iyi gönderir; onlarla yararlı bir şeyler yapmak için Word'e ihtiyacım var.)

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

Word tuşu ciltlemelerini ayarlama (bunu yapmak için alternatif olarak klavye özelleştirmesi iletişim kutusunu kullanabilirsiniz):

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

Son olarak, Normal şablonunuzdaki Word makrolarını tanımlayın (veya yukarıdaki referansları ayarlayın):

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

Sam çözümünden, yapılandırılabilir kaydırma hızına sahip olan kendi çözümümü geliştirdim:

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

Bazıları etrafa baktıktan sonra, sonunda Excel'de ve başka yerlerde çalışan AutoHotKey kullanarak çalışan bir yol buldum, açıkçası hiçbir şey kırmadan (AutoHotKey forumlarında birkaç farklı çözümden uyarlanmış olmama rağmen) Kayıt kaynakları bu yüzden uygun kredi veremem üzgünüm).

MS Excel'in kullanıcı arayüzünü kullanmanın bazı garip yollarını kullandığı görülüyor (her nasılsa, MS Office geliştiricilerinin bize neler verdiğini gördükten yıllar sonra o kadar şaşırmadım. Bu senaryo MS Word hariç hemen hemen her yerde çalışıyor gibi görünüyor - eğer biri çözebilirse, o zaman bana bildirin! Muhtemelen Excel için pencere sınıfını bulmak ve özellikle Excel ile yapıldığı gibi kodlamak gibi bir şey (sadece farklı bir anahtar bağlama kümesi ile).

#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