From: John Stone (johns_at_ks.uiuc.edu)
Date: Thu Apr 27 2006 - 12:45:44 CDT

Chang,
  That could probably be made to work by disabling the system's mouse
cursor while your code is active, and querying the mouse position etc
for yourself. You might be able to prototype this for yourself very
quickly with VMD 1.8.4 by using the new mouse position callback and
writing some simple scripts to test the idea on a tiny molecule.
(no need to recompile the code even)
You could render the cursor with graphics/draw commands and redraw for
every mouse position update. If you like I can give you more suggestions
about this tomorrow when I have a bit more time to talk. For now, you
might look at the User's Guide section on callbacks, and the Tcl 'trace'
command. From there you can user the new position callback and the new
userpoint mouse mode. (see mouse command)
If you wanted to hack the source code directly rather than prototyping in
scripting, then you'll need to pick your favorite display device subclass
and disable the mouse cursor and add cursor rendering there,
followed by edits to Mouse.C for the new behavior, or something like that.

  John Stone
  vmd_at_ks.uiuc.edu

On Thu, Apr 27, 2006 at 01:36:23PM -0400, Chang Hu wrote:
> Thanks a lot, John,
>
> In that case I'd want to render a cursor inside VMD display because in
> our system the display of a system window and OpenGL rendering are on
> seperate screens. Is there any way to do that? I'd imagine getting the
> mouse movement from the OS and rendering a cursor for each frame
> rendered. I am not sure if I can creat a Displayable object and if it's
> the easiest way...
>
> Chang
>
>
> John Stone wrote:
>
> >Hi,
> > VMD doesn't actually directly manipulate the mouse cursor position,
> >this is done completely by the host operating system. The farthest VMD
> >goes in that direction is to set the active mouse cursor style, among the
> >choices available on the host operating system. This is the reason you
> >haven't
> >found any code of that sort in VMD. All of the important mouse behavior
> >code is contained in Mouse.C, with the lowest level mouse I/O calls found
> >in each of the DisplayDevice subclasses for OpenGL, Win32 OpenGL, FLTK,
> >CAVE, and FreeVR. I'm not even sure there's a means of altering the
> >mouse acceleration by application control in most windowing systems.
> >There may be a way to do this on some, but I'm sure you'll find that
> >to be a difficult thing to write portable code for, if it's even possible.
> >
> > John Stone
> > vmd_at_ks.uiuc.edu
> >
> >On Thu, Apr 27, 2006 at 12:19:57AM -0400, Chang Hu wrote:
> >
> >
> >>Hi,
> >>
> >>I am trying to implement enhanced picking in VMD. To do this, I am
> >>planning to decrease the mouse speed whenever it's near an atom,
> >>according to the distance between the mouse cursor and the atom. I
> >>looked into the Programmer's Guide and had no luck finding related
> >>source code. (I guess I need the part where the mouse cursor is
> >>rendered.) Could anybody help me out with this?
> >>
> >>Thanks,
> >>Chang
> >>
> >>
> >
> >
> >

-- 
NIH Resource for Macromolecular Modeling and Bioinformatics
Beckman Institute for Advanced Science and Technology
University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801
Email: johns_at_ks.uiuc.edu                 Phone: 217-244-3349
  WWW: http://www.ks.uiuc.edu/~johns/      Fax: 217-244-6078