import java.text.DecimalFormat; class Test { public static void main( final String[] args ) { boolean printDeviceState = true; MultitouchAndPenReader r = new MultitouchAndPenReader(); r.initialize(); DecimalFormat df5 = new DecimalFormat(); df5.setMinimumFractionDigits(5); df5.setMaximumFractionDigits(5); DecimalFormat df2 = new DecimalFormat(); df2.setMinimumFractionDigits(2); df2.setMaximumFractionDigits(2); while ( true ) { try { Thread.sleep( 1 ); if ( r.pollMultitouch() ) { if ( printDeviceState ) { if ( r.numFingers == 0 && r.numFingers != r.numFingers_old ) System.out.println("FINGERS: all fingers lifted off"); else if ( r.numFingers > 0 ) { System.out.print("FINGERS "); for ( int i = 0; i < r.numFingers; ++i ) { System.out.print( "(" + r.finger[i].id + "," + df5.format( r.finger[i].x ) + "," + df5.format( r.finger[i].y ) + ") " ); } System.out.println(""); } } } if ( r.pollPen() ) { if ( r.isVerbose ) { if ( r.pen.distanceState == PenState.TOUCHING && r.pen_old.distanceState != PenState.TOUCHING ) { System.out.println(" ( stylus down"); } else if ( r.pen.distanceState != PenState.TOUCHING && r.pen_old.distanceState == PenState.TOUCHING ) { System.out.println(" ) stylus up"); } } if ( printDeviceState ) { System.out.println(" STYLUS " +(r.pen.distanceState==PenState.TOUCHING?"T":(r.pen.distanceState==PenState.HOVERING?"H":"O")) +"," +(r.pen.tipState==PenState.PEN_TIP?" pen ":"eraser") +"," +"(x,y,z)=("+df5.format(r.pen.x)+","+df5.format(r.pen.y)+","+df5.format(r.pen.z)+")" +", " +"pressure="+df2.format(r.pen.pressure) +", " +"buttons=" + (r.pen.button1?"1":"0") + (r.pen.button2?"1":"0") +", " +"elevation=" + df2.format(r.pen.elevation) + ", azimuth=" + df2.format(r.pen.azimuth) ); } } } catch( InterruptedException e ) { } } } }