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

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

Вы можете имитировать его с помощью AutoHotKey

Если я найду сценарий, я дам вам знать: из этих сообщений:

Вы должны найти некоторые скрипты

#Persistent mhook: => DllCall («SetWindowsHookEx», «int», 14>; WH_MOUSE_LL, «uint», RegisterCallback («WheelHorzHook»),> «uint», 0, «uint», 0) return

WheelLeft: возврат MsgBox WheelLeft

WheelRight: возврат MsgBox WheelRight

WheelHorzHook (nCode, wParam, lParam) {global mhook Критический if (wParam = 0x020E); WM_MOUSEHWHEEL (только для Vista) {if (delta: = NumGet (lParam + 0,10, «Short»)) {if (delta <0) {SetTimer, WheelLeft, -1 возвращает true} else {SetTimer, WheelRight, -1 Return true}}} return DllCall («CallNextHookEx», «uint», mhook, «int», nCode, «uint», wParam, «uint», lParam)}

Вот сценарий AutoHotKey, чтобы сделать это, используя команды сдвига и (по-видимому) собственные команды прокрутки колеса мыши:

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

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

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

С 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 

В Windows есть способ сделать это с помощью правой мыши. У меня есть мышь с колесиком прокрутки, в которой правая кнопка jog left / jog включена в нее. Простое нажатие колесика прокрутки влево или вправо приведет к перемещению содержимого в нужном направлении. У меня есть Logitech VX, и я был очень доволен этим.

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

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

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

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

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

Из решения Сэма я разработал собственное решение, которое имеет настраиваемую скорость прокрутки:

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 

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

Давайте будем гением компьютера.