Гаразд, тому я провів дослідження і досяг успіху.
Подумавши, я прийшов до висновку, не знаю, як це працює :-) Це просто так! :-)
Раніше на « Корисному :) веселощі »:
Коротше кажучи, тачпад Synaptics надсилає ( SendMessage()
або PostMessage()
не намагався чітко визначити це) повідомлення правого вікна ( WM_MOUSEWHEEL
) у вікно VMware, але те, що він насправді повинен робити, - це використовувати SendInput()
, безпосередньо імітуючи фізичну мишу. Здається, була можливість контролювати поведінку драйверів (або, точніше, програми в режимі користувача SynTPEnh.exe
) з файлом
tp4table.dat
. На жаль, ця опція якимось чином не включена в моїх драйверах (хоча в рядку є така рядок).
Отже, я зробив наступне - просто ввів .dll
у процес вікна VMware (я сподіваюся, що це безпечно, а також сподіваюся, що це не той самий процес, що виконує VM), підкласирований віконною процедурою (маючи на увазі перехоплені віконні повідомлення) та переклав "неправильні", використовуючи SendInput()
.
Крім того , було відмічено, що наступне виправлення варто застосувати навіть до мого рішення: http://blog.alexou.net/2010/07/scrolling-in-gtk-apps-with-synaptics-driver/ .
Отже, вихідний код та виконувані файли (вони підтримують лише Workstation, читайте далі для Player, у "UPDATE") - запитайте у коментарі, якщо ви щось не знайшли - на https://www.dropbox.com/s/ gucmyo35heha6g2 / vmware_scroll.zip? dl = 0 .
ОСНОВНЕ ЗАМЕЧАННЯ: запустіть відповідний виконуваний файл під час роботи VM.
ДРУГА ОСНОВНА ЗАБЕЗПЕЧЕННЯ: Не рухайтесь hook.dll
і не рухайтесь *.exe
після прокрутки. Якщо ви почнете vmware_scroll_stop.exe
з іншого місця, воно не буде завантажуватися .dll
(тобто відключити прокрутку).
ОНОВЛЕННЯ : Є вдосконалена версія
(її покращив Ентоні Приер, велике спасибі йому!), Яка також підтримує VMware Player.
Також доступна програма, що походить від
VMWareTrackPadScroller з простим інтерфейсом користувача.
ПРИМІТКА. На жаль, не буде версії, яка підтримує горизонтальну прокрутку, на жаль. Справа в тому, що ідея рішення є, але я її відкинув як занадто брудну. Для виконання завдання потрібно підключити (в SynTPEnh.exe) API GetClassNameW (), щоб змінити назви класів вікон VMware (вони "VMware.GuestWindow" і "MKSEmbedded") або wcsicmp (), щоб завжди повертати "не рівне" коли одним із аргументів є один із згаданих рядків. Я думаю, що це брудне рішення з точки зору продуктивності, принаймні (це насправді слабкий аргумент, оскільки покарання за виконання буде мінімальним). У будь-якому випадку, на сьогоднішній день рішення є прийнятним, я думаю, оскільки ви не завжди маєте пристрій з можливістю горизонтальної прокрутки, і краще бути звичним жити без такої розкоші, ніж страждати від бідності. До речі,Shift+Vertical Scroll
робити горизонтальну прокрутку.