Controlling cursor speed when using a joystick

David McFarlane mcfarla9 at msu.edu
Thu May 12 19:34:05 UTC 2011


Erin,

Thanks for testing that out, and posting back so quickly.  I don't 
have any joystick myself, so I don't think I can help any further.  I 
would not have expected your result, clearly the joystick does not 
simply emulate the mouse otherwise it would just work (and in that 
case you would not need a code solution in the first place).  Is 
there a separate Windows "control panel" for the joystick that you 
can use to control its settings?  Other than that, if it were me I 
might try another joystick, or start Googling around for more 
technical background on joysticks in general and then use that 
knowledge to devise a solution.

Good luck,
-- David McFarlane, Professional Faultfinder


>hi David,
>Matt was the one helping me.
>
>Thank you very much for the sample code!  I tried it out, and it does
>change how the cursor moves.  For the mouse, it slows it down quite
>perfectly.  For the joystick, it also slows down, but there is an
>interesting effect. The mouse cursor is basically "stuck" to the
>joystick.  Normally, when you move the joystick left, the cursor
>continues to move left, even when the joystick handle is held in a
>constant left position.  With your modification, the mouse cursor
>moves only when you move the joystick.  So, the cursor will move left
>as you move the joystick left, but when you stop the joystick, it
>stops.  And, when you let the joystick go back to it's resting
>position, the cursor actually backtracks back to it's original
>position.  This is an interesting feature, but not what will work for
>my particular application. (However, I'm sure it's exactly what
>someone else might need).  It would be absolutely perfect if the
>cursor could be "unstuck"  from the joystick, so that the joystick
>just directs the cursor to move forward in whatever direction the
>joystick is pointed.  Any suggestions?  Again, thank you so much!
>
>Erin
>
>
>
>On May 12, 1:58 pm, David McFarlane <mcfar... at msu.edu> wrote:
> > Erin,
> >
> > Thanks for posting the full information from PST, that helped (can
> > you let us know which staff member helped you?).  I might have come
> > up with the Mouse.SetCursorPos approach myself, but not the
> > Mouse.SetCursorLimits approach, that approach seems a little wacky to
> > me but what do I know?.
> >
> > As for Mouse.SetCursorPos, this posed a nice little puzzle, so I
> > knocked out a quick demo, and here is the inline that I came up
> > with.  (Just to have a mouse click to respond to, I preceded the
> > inline with a TextDisplay called StimText, set to Duration of 0 and
> > mouse with Time Limit of (infinite)):
> >
> > /----------------------------------------------------------------------\
> > ' Code to modify the rate of mouse movement.
> >
> > Const  LoopDelay as Long = 0
> > Const  CursorMoveFactor as Single = 0.5
> >
> > Dim  x0 as Long, y0 as Long
> > Dim  x1 as Long, y1 as Long
> >
> > Mouse.GetCursorPos x0, y0  ' initialize
> > Do While (StimText.RT = 0)  ' replace this with your exit condition
> >      Mouse.GetCursorPos x1, y1
> >      x0 = x0 + (CursorMoveFactor * (x1 - x0))
> >      y0 = y0 + (CursorMoveFactor * (y1 - y0))
> >      Mouse.SetCursorPos x0, y0
> >      Sleep LoopDelay
> > Loop
> > \----------------------------------------------------------------------/
> >
> > I expected to find some cursor movement artifacts, but it really
> > worked rather smoothly.  As you can see, I didn't even really need
> > the LoopDelay, but I left it there just in case.
> >
> > -- David McFarlane, Professional Faultfinder
> >
> > At 5/12/2011 01:03 PM Thursday, you wrote:
> >
> > >I want to control the speed the cursor moves when controlling it with
> > >a joystick.  I set the joystick to emulate the mouse in my experiment
> > >(inline Joystick.AttachToMouseCursor = True).  The joystick is quite
> > >touchy, and causes the cursor to move very quickly across the screen.
> > >For my experiment, I need the cursor to only move slowly, no matter
> > >how much the joystick is moved.
> >
> > >I tried decreasing the mouse sensitivity settings on my computer.
> > >This slowed the cursor down when using the mouse within my experiment,
> > >but had no effect on the joystick.  I also tried increasing the
> > >resolution display of my experiment (giving the cursor "further" to
> > >travel)- also no effect.  I have also tried adjusting the sensitivity
> > >of my joystick, but the cursor is still too fast.
> >
> > >E-Prime support suggested the following: "E-Prime does have some
> > >limited options for positioning the mouse cursor and limiting its
> > >boundaries. We could try to use a combination of the two to make the
> > >mouse cursor move more slowly. However, this would require significant
> > >scripting and could result in the cursor movement not being smooth"
> >
> > >My main question: Is anyone aware of a simpler way of controlling the
> > >cursor speed in E-Prime?
> >
> > >If not, here is further information on this method:
> >
> > >E-Prime help suggested the following:
> > >"I would recommend taking a look at the MouseDevice.SetCursorLimits
> > >and MouseDevice.SetCursorPos topics in the E-Basic Help (accessed via
> > >the Help menu). The former will allow you to specify boundaries for
> > >the cursor, and the latter will allow you to position the mouse cursor
> > >in a specific area. You could use a combination of the two to first
> > >limit the movement of the cursor so that it does not immediately move
> > >to one edge of the screen, and then use SetCursorPos to move the
> > >cursor move slowly. You could also slowly expand the cursor limits as
> > >the cursor hits the maximum in one direction. This would allow you to
> > >give the appearance of the cursor moving more slowly. To do this, you
> > >would have a loop that continuously checks the cursor position against
> > >the limits that are set, and expand the limits in one direction as the
> > >cursor hits that limit. This would require significant scripting and
> > >could result in the cursor movement not being smooth."
> >
> > >I took a look at the MouseDevice.SetCursorLimits and
> > >MouseDevice.SetCursorPos help, and I understand how this would work in
> > >theory.  However, I am very new to programming, and I am afraid that
> > >the scripting involved is a bit over my head.  If anyone can offer any
> > >advice or pointers, it would be very appreciated.  thank you!
> >
> > >Erin

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.



More information about the Eprime mailing list