Oke, jadi saya melakukan riset dan berhasil.
Setelah beberapa pemikiran saya sampai pada kesimpulan saya tidak tahu cara kerjanya :-) Itu benar! :-)
Sebelumnya di « Berguna :) Menyenangkan »:
Singkatnya, Synaptics touchpad mengirim ( SendMessage()
atau PostMessage()
, tidak repot-repot menunjukkan dengan tepat) pesan di jendela kanan ( WM_MOUSEWHEEL
) ke jendela VMware, tetapi yang seharusnya dilakukan adalah menggunakan SendInput()
, langsung mengemulasi mouse fisik. Tampaknya ada opsi untuk mengontrol perilaku driver (atau, lebih tepatnya, program mode pengguna SynTPEnh.exe
) dengan file
tp4table.dat
. Sayangnya, opsi ini entah bagaimana tidak diaktifkan di driver saya (meskipun ada string seperti itu di executable).
Jadi, saya melakukan yang berikut - hanya menyuntikkan .dll
ke dalam proses jendela VMware (saya harap ini aman dan juga berharap itu bukan proses yang sama yang mengeksekusi VM), prosedur jendela subkelas (yang berarti pesan jendela dicegat) dan menerjemahkan yang "salah" menggunakan SendInput()
.
Juga , telah dicatat bahwa perbaikan berikut layak diterapkan bahkan dengan solusi saya: http://blog.alexou.net/2010/07/scrolling-in-gtk-apps-with-synaptics-driver/ .
Jadi, kode sumber dan executable (mereka hanya mendukung Workstation, baca lebih lanjut untuk Player, di "UPDATE") - tanyakan dalam komentar jika Anda tidak menemukan sesuatu - ada di https://www.dropbox.com/s/ gucmyo35heha6g2 / vmware_scroll.zip? dl = 0 .
PERINGATAN UTAMA: jalankan executable yang sesuai saat VM berjalan.
CATATAN LAIN LAINNYA: Jangan bergerak hook.dll
dan *.exe
setelah bergulir telah diaktifkan. Jika Anda memulai vmware_scroll_stop.exe
dari lokasi lain, ia tidak akan terlepas .dll
(mis. Nonaktifkan pengguliran).
UPDATE : Ada versi yang disempurnakan
(ini ditingkatkan oleh Anthony Prieur, terima kasih banyak padanya!), Yang juga mendukung VMware Player. Sebuah program yang berasal dari VMWareTrackPadScroller yang disebut
dengan antarmuka pengguna yang sederhana juga tersedia.
CATATAN: Sayangnya, tidak ada versi yang mendukung pengguliran horizontal. Masalahnya, ada ide solusi, tapi saya menolaknya karena terlalu kotor. Untuk menyelesaikan tugas tersebut, seseorang perlu menghubungkan (di SynTPEnh.exe) GetClassNameW () API untuk memodifikasi nama kelas jendela VMware (mereka adalah "VMware.GuestWindow" dan "MKSEmbedded") atau wcsicmp () untuk selalu mengembalikan "tidak sama" ketika salah satu argumen adalah salah satu string yang disebutkan. Saya pikir itu solusi kotor dari sudut pandang kinerja, setidaknya (itu sebenarnya argumen yang lemah karena penalti kinerja akan minimal). Bagaimanapun, solusi saat ini dapat diterima, saya pikir, karena Anda tidak selalu memiliki perangkat dengan kemampuan gulir horizontal dan lebih baik terbiasa hidup tanpa kemewahan itu daripada menderita dalam kemiskinan. BTW,Shift+Vertical Scroll
untuk melakukan gulir horizontal.