// // Mouse Listener (provides an easy way to get mouse input) // class MouseInput extends Event { Hid mouse; HidMsg mouseMsg; 0 => int deltaX => int deltaY => int wheelDeltaX => int wheelDeltaY => int buttonUp => int buttonDown; 0 => int defaultMouse; 0 => int DEBUG; fun void listen( int m ) { m => defaultMouse; listen(); } fun void listen() { // open mouse 0, exit on fail if( !mouse.openMouse( defaultMouse ) ) me.exit(); <<< "mouse '" + mouse.name() + "' ready", "" >>>; while( true ) { mouse => now; 0 => deltaX => deltaY => wheelDeltaX => wheelDeltaY => buttonUp => buttonDown; while( mouse.recv( mouseMsg ) ) { // mouse motion if( mouseMsg.isMouseMotion() ) { if( mouseMsg.deltaX ) { if(DEBUG) <<< "mouse motion:", mouseMsg.deltaX, "on x-axis" >>>; mouseMsg.deltaX => deltaX; } if( mouseMsg.deltaY ) { if(DEBUG) <<< "mouse motion:", mouseMsg.deltaY, "on y-axis" >>>; mouseMsg.deltaY => deltaY; } } // mouse button down else if( mouseMsg.isButtonDown() ) { if(DEBUG) <<< "mouse button", mouseMsg.which, "down" >>>; mouseMsg.which + 1 => buttonDown; // buttons are now 1, 2, 3... (no zeroeth button) } // mouse button up else if( mouseMsg.isButtonUp() ) { if(DEBUG) <<< "mouse button", mouseMsg.which, "up" >>>; mouseMsg.which + 1 => buttonUp; // buttons are now 1, 2, 3... (no zeroeth button) } // mouse wheel motion else if( mouseMsg.isWheelMotion() ) { if( mouseMsg.deltaX ) { if(DEBUG) <<< "mouse wheel:", mouseMsg.deltaX, "on x-axis" >>>; mouseMsg.deltaX => wheelDeltaX; } if( mouseMsg.deltaY ) { if(DEBUG) <<< "mouse wheel:", mouseMsg.deltaY, "on y-axis" >>>; mouseMsg.deltaY => wheelDeltaY; } } this.broadcast(); me.yield(); } } } } // MouseInput mi; // spork ~ mi.listen(); // me.yield(); // // while(true) // { // mi => now; // <<< mi.deltaX, mi.deltaY, mi.wheelDeltaX, mi.wheelDeltaY, mi.buttonDown, mi.buttonUp >>>; // me.yield(); // }