From: Nuno L. <lu...@nl...> - 2004-08-20 23:39:51
|
Sam Liddicott, dando pulos de alegria, escreveu : > > You will need to pay careful attention to WM_HITTEST and WM_NCHITTEST > messages so that windows realises that the mouse is over a "transparent" > area and then will pass the mouse click messages on to the window below. > Unfortunely is a little more difficult than that. There are 3 ways we can get mouse messages to colinux: 1) Full emulation of a PS/2 (or other) mouse For this we would need to translate mouse messages to the raw messages windows hides from us. (just delta messages about the mouse movement, button status and wheel deltas). Another approach would be to create a filter driver, so that we get the the real low-level message and pass them untranslated to colinux. And then we are faced with the problem of assuring the linux mouse pointer is synchronized with the windows mouse position (as any colinux application can set a new mouse position). 2) Emulate a special device input like a touch-screen Here we can pass the screen position of the mouse (relative to the colinux window, off course), but I don't know if this devices can pass intermediate positions between clicks. The problem here would be that if no intermediate positions are passed, then all applications that need "context help" a la windows tooltips (just resting the mouse over an object) will not work. I still need to check this better, but it could prove to be the best solution. 3) Special colinux daemon for mouse input I'm not sure of this, but I guess that as we can simulate keyboard and mouse events in windows, we can also do the same under linux. The daemon would handle the communication with the windows mouse daemon and translate them as colinux translated events. To explain it better, I'm talking of a hacked "gpm" application, that would work in console and in X. This "co-gpm" would need to be started at boot, making zero-config random distro booting not possible. I tend to not like this option very much, as it's the less flexible of all, as long as we can achieve the same thing with the other 2. On the other hand, it may prove to be the easiest to implement (at least under the console, not sure about X). I would be very interested in knowing how other virtual emulators handle this (like vmware, etc.). For those interested in the PS/2 mouse protocol, I found this very complete page (a funny thing is the way 2-wheels mouse work ;) : http://panda.cs.ndsu.nodak.edu/%7Eachapwes/PICmicro/mouse/mouse.html Just want to note I still haven't done any substantial research on this subject (like studying the kernel sources), so please bear with me ;) Ok, I'm waiting your comments... Regards, ~Nuno Lucas |