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