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@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users