it-swarm.asia

التمرير الأفقي الاختصار في ويندوز

في نظام التشغيل Os X ، يمكنني الضغط على مفتاح Shift أثناء استخدام عجلة التمرير الموجودة بالماوس للتمرير أفقياً بدلاً من الرأسية. هل هناك طريقة لفعل شيء مشابه في Windows؟

62
Matthew Shanley

يمكنك محاكاة ذلك باستخدام AutoHotKey

إذا وجدت البرنامج النصي فسأعلمك: من هذه المشاركات:

يجب أن تجد بعض النصوص

#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

في ما يلي نص برمجي AutoHotKey للقيام بذلك باستخدام إزاحة وأوامر تمرير عجلة الماوس الأصلية (المفترض):

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

هذا مأخوذ مباشرة من https://Gist.github.com/cheeaun/160999 .

ضع في اعتبارك أن الكثير من التطبيقات ، بما في ذلك تطبيقات Microsoft ، لا تدعم التمرير الأفقي لعجلة الماوس. (أعتقد أنه تم تقديم الميزة فقط في نظام التشغيل Windows Vista.)

23
Sam

من http://www.autohotkey.com/docs/Hotkeys.htm

تتضمن بعض مفاتيح الاختصار الأكثر فائدة لعجلة الماوس أوضاعًا بديلة لتمرير نص النافذة. على سبيل المثال ، يتم تمرير مفاتيح الاختصارات التالية أفقياً بدلاً من رأسياً عندما تقوم بتدوير العجلة أثناء الضغط باستمرار على مفتاح التحكم الأيسر:

~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

هناك طريقة للقيام بذلك في windows باستخدام الماوس الأيمن. لدي ماوس بعجلة تمرير بها زر يمين للركض/الركض يمين مدمج فيه. ببساطة دفع عجلة التمرير إلى اليسار أو اليمين سينقل المحتويات في الاتجاه المطلوب. لدي جهاز Logitech VX وكنت سعيدًا جدًا به.

يتيح لك VX أيضًا تكوين الأزرار بشكل مختلف لكل تطبيق منفرد إذا كنت مائلاً. هذا المستوى من التخصيص هو لطيف جدا أن يكون!

5
Axxmasterr

في بعض برامج Windows ، يتم التمرير أفقياً (مثل مستكشف Windows).

في برامج أخرى مثل Internet Explorer ، سيتم تمرير Firefox و Excel مع الاستمرار في الضغط على زر عجلة التمرير والانتقال من اليسار إلى اليمين بشكل أفقي.

3
Matthew Lock

ليس بالضبط اختصار لوحة المفاتيح ، ولكن يمكنك دائمًا النقر لأسفل عجلة الماوس. يؤدي ذلك إلى ظهور رمز رباعي الاتجاه في معظم التطبيقات التي يمكنك استخدامها للتمرير

2
Blaine

فيما يلي حل متهور لبرنامج Word (فقط) الذي يتطلب وحدات الماكرو AutoHotKey و Word. إنه يعمل فقط على عرض المستند الرئيسي في Word (وهو أمر جيد بما يكفي بالنسبة لي).

أولاً ، استخدم AutoHotKey لإرسال ضغطة مفتاح مخصصة إلى Word استجابةً لإجراء الماوس. أنا أستخدم Alt-M RightArrow و Alt-M LeftArrow. (لدي أيضًا تعيينات لأحداث WheelLeft و WheelRight أدناه لأن الماوس يرسلها جيدًا ؛ أحتاج فقط إلى Word للقيام بشيء مفيد معها.)

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

قم بإعداد روابط مفتاح Word (يمكنك بدلاً من ذلك استخدام مربع حوار تخصيص لوحة المفاتيح للقيام بذلك):

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

FInally ، حدد وحدات ماكرو Word في القالب Normal (أو اضبط المراجع إليها أعلاه):

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

من حل Sam ، قمت بتطوير حل خاص بي يحتوي على سرعة تمرير قابلة للتكوين:

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

بعد أن نظر بعض الأشخاص من حولهم ، عثروا في النهاية على طريقة (باستخدام AutoHotKey ) التي تعمل في Excel وفي كل مكان آخر ، دون كسر أي شيء بشكل واضح (مقتبس من مجموعة مختلفة الحلول في منتديات AutoHotKey ، على الرغم من أنني لم أسجل المصادر ، لذا لا يمكنني إعطاء رصيد مناسب آسف).

يبدو أن MS Excel لديه بعض طرق غريبة للتعامل مع واجهة المستخدم الخاصة به (على الرغم من ذلك بطريقة ما ، بعد سنوات عديدة من رؤية ما قدمه لنا مطورو MS Office ، لست مندهشًا) . يبدو أن هذا البرنامج النصي يعمل بشكل كبير في كل مكان باستثناء برنامج MS Word - إذا كان بإمكان أي شخص حل ذلك ، فأعلمني! من المحتمل أن يكون الأمر مثل اكتشاف فئة النافذة لـ Word والترميز الخاص بها على وجه التحديد كما تم مع Excel (فقط مع مجموعة مختلفة من روابط المفاتيح).

#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