Ярлик прокрутки по горизонталі в Windows


64

У Os X я можу утримувати Shift, використовуючи колесо прокрутки на миші, щоб прокручувати горизонтально, а не вертикально. Чи є спосіб зробити щось подібне в Windows?


1
прокрутка в якій програмі? дослідник? веб-браузер? Це залежить від того, як творець хотів його реалізувати, тому якщо це веб-переглядач, то буде інакше.
Джон Т

Я не думаю, що для Windows за замовчуванням існує ярлик для цієї системи.
озноб42,

11
Я сподівався на загальносистемне рішення.
Меттью Шенлі

Відповіді:


15

Ви можете імітувати його за допомогою 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) }

Ах, у вас це працює? Дивовижно!
Іво Фліпс

23

Ось сценарій AutoHotKey, щоб зробити це за допомогою команд shift та (імовірно) нативної команди прокрутки колеса миші:

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

Це взято безпосередньо з https://gist.github.com/cheeaun/160999 .

Майте на увазі, що багато програм, включаючи програми Microsoft, не підтримують горизонтальне прокручування коліс миші. (Я вважаю, що функція була введена лише в Windows Vista.)


Дякую, чудово працює у Visual Studio! Шкода, що він не працює в Excel 2013 та Google Chrome.
чіз

3
@cheeesus, для мене в Google Google Chrome фактично є вбудована підтримка горизонтальної прокрутки. Навіть без вищезазначеного сценарію я можу затримувати Shift і прокручувати колесо миші, щоб прокручуватися по горизонталі.
Сем

2
Ідеально! Тут найкраща відповідь, проста і легка. Для тих, хто не знайомий з AutoHotKey, ось такі кроки: 1) Завантажте та встановіть AutoHotKey з autohotkey.com 2) Клацніть правою кнопкою миші на робочому столі -> Новий -> Текстовий документ -> Створіть файл під назвою "myscript.ahk" 3) Скопіюйте і вставте скрипт із зазначеного вище -> Збережіть файл 4) Клацніть правою кнопкою миші на файлі -> Запустіть сценарій 5) Маленька піктограма Н повинна з’явитися у зоні сповіщень на панелі завдань, і тепер «Shift + колесо миші» має створювати горизонтальну прокрутка
np8

@ np8 у мене це не вийшло .. Я спробував саме так. я використовую звичайну мишу HP з колесом прокрутки. хром браузер працює зсув + прокручування по горизонталі .. це завжди робилося навіть до ах. тепер з AHK встановити .. Я сподівався, що MS Office буде працювати .. але це не так.
ihightower

@ihightower Існує рішення і для Excel. Я додам його до цієї відповіді.
np8

8

Від 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

5

Існує спосіб зробити це у вікнах правою мишкою. У мене є миша з колесом прокрутки, в якому вбудована права бічна ліва / бігова кнопка правої. Просто натискання колеса прокрутки вліво або вправо перемістить вміст у потрібному напрямку. У мене є Logitech VX, і я був дуже задоволений цим.

VX також дозволяє вам налаштувати кнопки по-різному для кожної програми, якщо ви були так схильні. Цей рівень налаштування дуже приємно мати!


Microsoft Wireless Laser Mouse 5000 ( microsoft.com/hardware/mouseandkeyboard/… ) має цю функціональність.
Тревіс

Ви праві! У мене раніше була ця миша, перш ніж я перейшов до VX. VX має дві дуже приємні функції, тому я модернізував. На колесі прокрутки є маховик, який крутиться протягом 7 секунд. Інша приємна особливість - USB-ключ для миші насправді повністю вписується всередину пристрою, тому втратити ключа дуже важко.
Axxmasterr

3

У деяких програмах Windows зсув прокручується горизонтально (наприклад, Провідник Windows).

В інших програмах, таких як Internet Explorer, Firefox та Excel, утримуючи кнопку колеса прокрутки та рухаючись зліва направо, прокручуються горизонтально.


2
Схоже, у Chrome вбудована горизонтальна прокрутка Shift.
Сем

Схоже, це працює і в VS, що мені в принципі потрібно! Дякую!
Шиммі

2

Ось стислий спосіб для Word (лише), який вимагає як AutoHotKey, так і Word макросів. Він працює лише на головному перегляді документа в Word (що досить добре для мене).

По-перше, використовуйте AutoHotKey, щоб надіслати користувачеві натискання клавіші у відповідь на дії миші. Я використовую 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"

По-перше, визначте макроси Word у вашому шаблоні Normal (або відрегулюйте посилання на них вище):

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

2

Не зовсім комбінація клавіш, але ви завжди можете натискати на колесо миші. Це відображає чотиристоронню піктограму в більшості програм, яку можна використовувати для прокрутки


1

Подивившись навколо, врешті-решт знайшов спосіб (використовуючи 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

З рішення Сема я розробив власне рішення, яке має настроювану швидкість прокрутки:

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

Чудовий сценарій. Це працює дуже добре.
Нік Пентер

Єдиним додатком, на який, схоже, це не працює, є Windows Explorer.
Нік Пентер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.