[chuck-users] mouse position

Stefan Blixt stefan.blixt at gmail.com
Thu Oct 23 04:11:35 EDT 2008


Aha, sorry I didn't realise that you meant the pointer on the screen.

/Stefan

On Thu, Oct 23, 2008 at 10:05 AM, Joel Matthys <jwmatthys at yahoo.com> wrote:

> Actually, this is an interesting question. Hid tracks mouse motion rather
> than mouse position, so it's not so easy to create a ChucK patch that
> depends on the mouse's position on the screen. (ie trigger a sound when the
> mouse is in the upper left hand corner.)
>
> I modified the mouse.ck example below. It prompts you to enter the screen
> size (one could easily set this up as an argument; is there any way for
> ChucK to access this property without user input?) and calibrates the mouse
> position from the upper left hand corner.
>
> This works fine if I move the mouse slowly, but it's not absolutely
> correlative to the pointer position on the screen. Any suggestions on how to
> refine this?
>
> Joel
>
> Chuck code follows:
>
> // mouse-pos.ck
>
> // make HidIn and HidMsg
> Hid hi;
> HidMsg msg;
> // make ConsoleInput
> ConsoleInput in;
>
> // which mouse
> 0 => int device;
> // get from command line
> if( me.args() ) me.arg(0) => Std.atoi => device;
>
> // open mouse 0, exit on fail
> if( !hi.openMouse( device ) ) me.exit();
> <<< "mouse '" + hi.name() + "' ready", "" >>>;
>
> int atZero, mouseX, mouseY, screenWidth, screenHeight;
>
> // prompt user to enter screen size
> in.prompt( "enter screen width:" ) => now;
> in.getLine() => Std.atoi => screenWidth;
> in.prompt( "enter screen height:" ) => now;
> in.getLine() => Std.atoi => screenHeight;
> in.prompt( "mouse mouse to upper left corner and press enter.") => now;
>
> /* alternative method - calibrate via mouse click
>
> <<< "Move mouse to upper left corner and click" >>>;
>
> while (!atZero)
> {
>   hi => now;
>   while( hi.recv( msg ) )
>   {
>       if( msg.isButtonDown() )
>       {
>           1 => atZero;
>       }
>   }
> }*/
>
> // infinite event loop
> while( true )
> {
>   // wait on HidIn as event
>   hi => now;
>
>   // messages received
>   while( hi.recv( msg ) )
>   {
>       // mouse motion
>       if( msg.isMouseMotion() )
>       {
>           if( msg.deltaX )
>           {
>               msg.deltaX +=> mouseX;
>           }
>           if( msg.deltaY )
>           {
>               msg.deltaY +=> mouseY;
>           }
>       }
>             // keep values within area of screen
>       constrain(mouseX, 0, screenWidth) $ int => mouseX;
>       constrain(mouseY, 0, screenHeight) $ int => mouseY;
>             <<< "Mouse Position:",mouseX,mouseY>>>;
>   }
> }
>
> fun float constrain (float test, float v1, float v2)
> {
>   Math.min (v1,v2) => float bottom;
>   Math.max (v1,v2) => float top;
>   Math.max (test, bottom) => test;
>   Math.min (test, top) => test;
>   return test;
> }
>
> // end of mouse-pos.ck
>
>
> eduard aylon wrote:
>
>> Hello list,
>>
>> is there a way to track y-position of the mouse pointer. It's not in the
>> manual.
>> I know I can track the x-position with HidMsg.fdata
>>
>> thanks,
>>
>> eduard
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
>>
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>



-- 
Release me, insect, or I will destroy the Cosmos!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20081023/b2614f6d/attachment.html>


More information about the chuck-users mailing list