
Итак, у меня есть ноутбук с Windows 8 дома и ноутбук с Windows 7 на работе. У обоих есть сенсорные панели Synaptics. Проблема в том, что на рабочем ноутбуке я могу прокручивать любое окно независимо от того, какое из них в данный момент находится в фокусе. Это поведение, которое мне нужно на обоих компьютерах.
В настоящее время это не происходит на компьютере с Windows 8. Я знаю, что могу использовать (и пробовал!) wizmouse, alwaysmousewheel, katmouse и т. д.; но ни один из них не работает на 100% так, как на рабочем компьютере. katmouse иногда перестает работать, alwaysmousewheel, у меня были проблемы с его прокруткой самостоятельно, wizmouse иногда заставляет мышь запаздывать. Другие просто не работали.
До того, как у меня появился рабочий компьютер, я смирился с ним, но теперь я вижу, что он работает сразу из коробки, без использования каких-либо внешних программ, на старой операционной системе, и удивляюсь, почему я не могу заставить его работать так же на моем собственном компьютере!
Все мои поиски сводились к тому, что люди предлагали внешние программы, которые я уже пробовал, поэтому ответы, предлагающие их, на самом деле не то, что я ищу (если только это не какое-то волшебство, которое я могу сделать с драйвером Synaptics, который, кстати, более актуален на компьютере с Windows 8, на котором он не работает).
решение1
альтдрагтакже имеет эту функцию.
решение2
я используюXMouseButtonControlна моем компьютере. Я обнаружил, что он наиболее совместим со всеми программами, которые я использую.
решение3
В AutoHotKey есть способ сделать это. Как активный пользователь KatMouse на протяжении многих лет, этот способ показался мне достаточно хорошим, поэтому я пока отключил KatMouse (посмотрим, выдержит ли скрипт AHK).
Вот сценарий (источник):
CoordMode, Mouse, Screen
return
WheelUp::
MouseGetPos, m_x, m_y
hw_m_target := DllCall( "WindowFromPoint", "int", m_x, "int", m_y )
; WM_MOUSEWHEEL
; WHEEL_DELTA = 120
SendMessage, 0x20A, 120 << 16, ( m_y << 16 )|m_x,, ahk_id %hw_m_target%
return
WheelDown::
MouseGetPos, m_x, m_y
hw_m_target := DllCall( "WindowFromPoint", "int", m_x, "int", m_y )
; WM_MOUSEWHEEL
; WHEEL_DELTA = 120
SendMessage, 0x20A, -120 << 16, ( m_y << 16 )|m_x,, ahk_id %hw_m_target%
return
Пока что в моем кратком тестировании он работал везде, где раньше работал KatMouse, плюс несколько других. KatMouse никогда не работал у меня должным образом в Visual Studio 2010, но, похоже, работает. Я также обнаружил, что он не отключается, когда я использую удаленный рабочий стол, как это делал KatMouse (хотя активная прокрутка не передавалась на удаленный компьютер).
решение4
Некоторые определенные старые версии драйвера Synaptics, по-видимому, отправляют обычные события колесика мыши, поэтому AlwaysMouseWheel и подобные приложения работают правильно.
Одним из таких примеров являетсяhttp://drivers.synaptics.com/Synaptics_v16_3_15_1_C_XP32_Vista32_Win7-32_XP64_Vista64_Win7-64_Signed_Acme_Inc.zip