Горизонтальная прокрутка ярлык в Windows

64

В Os X я могу удерживать Shift, используя колесико прокрутки мыши для прокрутки по горизонтали, а не по вертикали. Есть ли способ сделать что-то подобное в Windows?

Мэтью Шенли
источник
1
прокрутка в каком приложении? исследователь? веб-браузер? Это зависит от того, как создатель хотел реализовать его, поэтому, если это браузер, он будет другим.
Джон Т
Я не думаю, что есть общесистемный ярлык для этого по умолчанию в Windows.
chills42
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, для меня, в Windows, Google Chrome на самом деле имеет встроенную поддержку горизонтальной прокрутки. Даже без приведенного выше сценария я могу удерживать нажатой клавишу «Shift» и прокручивать колесико мыши для горизонтальной прокрутки.
Сэм
2
Отлично! Это лучший ответ здесь, простой и легкий. Для тех, кто новичок в AutoHotKey, вот шаги: 1) Загрузите и установите AutoHotKey с autohotkey.com 2) Щелкните правой кнопкой мыши на рабочем столе -> Создать -> Текстовый документ -> Создайте файл с именем «myscript.ahk» 3) Скопируйте и вставьте скрипт из вышеперечисленного -> Сохраните файл 4) Щелкните правой кнопкой мыши по файлу -> Запустите сценарий 5) Маленький значок H должен появиться в области уведомлений панели задач, и теперь «Shift + колесо мыши» должно отображаться горизонтально прокрутка
np8
@ np8 это не сработало для меня .. я попробовал именно так. Я использую обычную мышь HP с колесом прокрутки. браузер chrome работает shift + scroll по горизонтали .. так было всегда даже до ахк. теперь с установкой ahk .. я надеялся, что MS Office будет работать .. но это не так.
Высшая башня
@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

Есть способ сделать это в Windows правой кнопкой мыши. У меня есть мышь с колесом прокрутки, в которое встроена правая кнопка Jog Left / Jog Right. Простое нажатие колеса прокрутки влево или вправо перемещает содержимое в нужном направлении. У меня есть Logitech VX, и я был очень счастлив с ним.

VX также позволяет вам настраивать кнопки по-разному для каждого отдельного приложения, если вы так склонны. Этот уровень настройки очень приятен!

Axxmasterr
источник
Беспроводная лазерная мышь Microsoft 5000 ( microsoft.com/hardware/mouseandkeyboard/… ) имеет эту функцию.
Трэвис
Ты прав! Раньше я пользовался этой мышью, прежде чем перейти на VX. У VX есть две очень приятные особенности, поэтому я обновился. Он имеет маховик на колесе прокрутки, который вращается в течение 7 секунд. Еще одна приятная особенность - USB-ключ для мыши, который полностью умещается внутри устройства, поэтому потерять ключ очень сложно.
Axxmasterr
3

В некоторых программах Windows смещение прокручивается по горизонтали (например, Windows Explorer).

В других программах, таких как Internet Explorer, Firefox и Excel, удерживая нажатой кнопку колеса прокрутки и перемещаясь слева направо, будет прокручиваться горизонтально.

Мэтью Лок
источник
2
В Chrome встроена горизонтальная прокрутка Shift.
Сэм
Похоже, он работает и в VS, что мне и было нужно! Спасибо!
Shimmy
2

Вот хакерское решение для 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"

Наконец, определите макросы Word в вашем шаблоне Normal (или настройте ссылки на них выше):

Sub ScrollRight()
    ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
    ActiveWindow.SmallScroll ToLeft:=1
End Sub
iagrapefruit
источник
2

Не совсем сочетание клавиш, но вы всегда можете нажать на колесо мыши. В большинстве приложений появляется значок с 4 направлениями, который можно использовать для прокрутки.

Blaine
источник
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
BevanFindlay
источник
1

На основе решения 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
Envil
источник
Отличный сценарий. Это работает очень хорошо.
Ник Пэйнтер
Только приложение, над которым это не работает, является проводником Windows.
Ник Пейнтер