Revision: 42309
Updated Code
at March 3, 2011 03:09 by laurenceosx
Updated Code
#!usr/bin/env groovy //@+leo-ver=4-thin //@+node:lpt.20110228174854.1369:@thin XRobot.groovy //@@first //@@language java //@@lineending platform //@+doc // // 3/2/2011 // // file: XRobot.groovy // // Laurence Toenjes // // Created with Leo 4.6.3 final, build 2286, September 4, 2009 // http://webpages.charter.net/edreamleo/front.html // // I created this to help make groovysh act like the python -i option, // because I got tired of the extra typing of simulating the python // interpreter -i option . // // How to use: // youros> groovysh // // import XRobot // robot = XRobot.createRobot() // robot.sendString( '''// How now brown cow.''' ) // //@-doc //@@code //@+others //@+node:lpt.20110228174854.1370:imports import java.awt.Robot; import java.awt.event.KeyEvent as ke; import java.awt.event.KeyEvent //@-node:lpt.20110228174854.1370:imports //@+node:lpt.20110228174854.1373:class XRobot class XRobot { //@ @+others //@+node:lpt.20110228174854.1372:static def createRobot() static def createRobot() { //@ @+others //@+node:lpt.20110228174854.1374:c // def result = new Robot() { // //@ @+others //@+node:lpt.20110228174854.1377:*** sendString def void sendString( aString ) { def keyList = [] aString.each { letter -> def ltr = letter as Character def keyInfoMap = keyCodeForLetter2( ltr ) keyList << keyInfoMap // has keys keyCode as int and shift as boolean } keyList.each { keyInfoItem -> if ( keyInfoItem.shift ) { this.keyPress( KeyEvent.VK_SHIFT ) } this.keyCodeClick( keyInfoItem.keyCode as int ) if ( keyInfoItem.shift ) { this.keyRelease( KeyEvent.VK_SHIFT ) } } } // end sendString //@-node:lpt.20110228174854.1377:*** sendString //@+node:lpt.20110228174854.1376:keyCodeClick def keyCodeClick( code ) { this.keyPress( code as int ) this.keyRelease( code as int ) } //@-node:lpt.20110228174854.1376:keyCodeClick //@+node:lpt.20110228174854.1375:keyCodeForLetter2 def keyCodeForLetter2( aLetter ) { // based on http://gruimed.blogspot.com/2009/09/using-java-robot-to-type-text-strings.html // // returns a map with keys keyCode as int and shift as boolean char c = aLetter as char boolean shift = true; int keyCode; switch (c) { case '~': keyCode = (int)'`'; break; case '!': keyCode = (int)'1'; break; case '@': keyCode = (int)'2'; break; case '#': keyCode = (int)'3'; break; case '$': keyCode = (int)'4'; break; case '%': keyCode = (int)'5'; break; case '^': keyCode = (int)'6'; break; case '&': keyCode = (int)'7'; break; case '*': keyCode = (int)'8'; break; case '(': keyCode = (int)'9'; break; case ')': keyCode = (int)'0'; break; case ':': keyCode = (int)';'; break; case '_': keyCode = (int)'-'; break; case '+': keyCode = (int)'='; break; case '|': keyCode = (int)'\\'; break; // lpt mod // to handle some problem key strokes // special BEG case '"': keyCode = KeyEvent.VK_QUOTE as int shift = true break; case '\'': keyCode = KeyEvent.VK_QUOTE as int shift = false break; case '\n': keyCode = KeyEvent.VK_ENTER as int shift = false; break; // special END case '?': keyCode = (int)'/'; break; case '{': keyCode = (int)'['; break; case '}': keyCode = (int)']'; break; case '<': keyCode = (int)','; break; case '>': keyCode = (int)'.'; break; default: keyCode = (int) c; shift = false; // lpt mod // handle letters and case def ch = aLetter as Character if ( ch.isLetter() ) { keyCode = (int) ch.toUpperCase(); shift = ch.isUpperCase(); } } // return ['keyCode': keyCode as int, 'shift': shift] as Map } //@-node:lpt.20110228174854.1375:keyCodeForLetter2 //@-others // } // end new Robot anon class result.setAutoWaitForIdle(true) return result // //@-node:lpt.20110228174854.1374:c //@-others } // end createRobot //@nonl //@-node:lpt.20110228174854.1372:static def createRobot() //@+node:lpt.20110228174854.1378:static def test1 static def test1() { def robot = XRobot.createRobot() def testString = '''\ // How // now // brown cow. '''; robot.sendString( testString ) return robot } //@nonl //@-node:lpt.20110228174854.1378:static def test1 //@-others } // end XRobot //@-node:lpt.20110228174854.1373:class XRobot //@-others //@-node:lpt.20110228174854.1369:@thin XRobot.groovy //@-leo
Revision: 42308
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 3, 2011 03:01 by laurenceosx
Initial Code
#!usr/bin/env groovy //@+leo-ver=4-thin //@+node:lpt.20110228174854.1369:@thin XRobot.groovy //@@first //@@language java //@@lineending platform //@+doc // // 3/2/2011 // // file: XRobot.groovy // // Laurence Toenjes // // Created with Leo 4.6.3 final, build 2286, September 4, 2009 // http://webpages.charter.net/edreamleo/front.html // // I created this to help make groovysh act like the python -i option, // because I got tired of the extra typing of simulating the python // interpreter -i option . // // How to use: // youros> groovysh // // import XRobot // robot = XRobot.createRobot() // robot.sendString( '''// How now brown cow.''' ) // //@-doc //@@code //@+others //@+node:lpt.20110228174854.1370:imports import java.awt.Robot; import java.awt.event.KeyEvent as ke; import java.awt.event.KeyEvent //@-node:lpt.20110228174854.1370:imports //@+node:lpt.20110228174854.1373:class XRobot class XRobot { //@ @+others //@+node:lpt.20110228174854.1372:static def createRobot() static def createRobot() { //@ @+others //@+node:lpt.20110228174854.1374:c // def result = new Robot() { // //@ @+others //@+node:lpt.20110228174854.1377:*** sendString def sendString( aString ) { def keyList = [] aString.each { letter -> def ltr = letter as Character def keyInfoMap = keyCodeForLetter2( ltr ) keyList << keyInfoMap // has keys keyCode as int and shift as boolean } keyList.each { keyInfoItem -> if ( keyInfoItem.shift ) { this.keyPress( KeyEvent.VK_SHIFT ) } this.keyCodeClick( keyInfoItem.keyCode as int ) if ( keyInfoItem.shift ) { this.keyRelease( KeyEvent.VK_SHIFT ) } } } // end sendString //@-node:lpt.20110228174854.1377:*** sendString //@+node:lpt.20110228174854.1376:keyCodeClick def keyCodeClick( code ) { this.keyPress( code as int ) this.keyRelease( code as int ) } //@-node:lpt.20110228174854.1376:keyCodeClick //@+node:lpt.20110228174854.1375:keyCodeForLetter2 def keyCodeForLetter2( aLetter ) { // based on http://gruimed.blogspot.com/2009/09/using-java-robot-to-type-text-strings.html // // returns a map with keys keyCode as int and shift as boolean char c = aLetter as char boolean shift = true; int keyCode; switch (c) { case '~': keyCode = (int)'`'; break; case '!': keyCode = (int)'1'; break; case '@': keyCode = (int)'2'; break; case '#': keyCode = (int)'3'; break; case '$': keyCode = (int)'4'; break; case '%': keyCode = (int)'5'; break; case '^': keyCode = (int)'6'; break; case '&': keyCode = (int)'7'; break; case '*': keyCode = (int)'8'; break; case '(': keyCode = (int)'9'; break; case ')': keyCode = (int)'0'; break; case ':': keyCode = (int)';'; break; case '_': keyCode = (int)'-'; break; case '+': keyCode = (int)'='; break; case '|': keyCode = (int)'\\'; break; // lpt mod // to handle some problem key strokes // special BEG case '"': keyCode = KeyEvent.VK_QUOTE as int shift = true break; case '\'': keyCode = KeyEvent.VK_QUOTE as int shift = false break; case '\n': keyCode = KeyEvent.VK_ENTER as int shift = false; break; // special END case '?': keyCode = (int)'/'; break; case '{': keyCode = (int)'['; break; case '}': keyCode = (int)']'; break; case '<': keyCode = (int)','; break; case '>': keyCode = (int)'.'; break; default: keyCode = (int) c; shift = false; // lpt mod // handle letters and case def ch = aLetter as Character if ( ch.isLetter() ) { keyCode = (int) ch.toUpperCase(); shift = ch.isUpperCase(); } } // return ['keyCode': keyCode as int, 'shift': shift] as Map } //@-node:lpt.20110228174854.1375:keyCodeForLetter2 //@-others // } // end new Robot anon class result.setAutoWaitForIdle(true) return result // //@-node:lpt.20110228174854.1374:c //@-others } // end createRobot //@nonl //@-node:lpt.20110228174854.1372:static def createRobot() //@+node:lpt.20110228174854.1378:static def test1 static def test1() { def robot = XRobot.createRobot() def testString = '''\ // How // now // brown cow. '''; robot.sendString( testString ) return robot } //@nonl //@-node:lpt.20110228174854.1378:static def test1 //@-others } // end XRobot //@-node:lpt.20110228174854.1373:class XRobot //@-others //@-node:lpt.20110228174854.1369:@thin XRobot.groovy //@-leo
Initial URL
Initial Description
Initial Title
Groovy Robot SendString
Initial Tags
groovy
Initial Language
Groovy