{
private static final int LEFT = 37 ;
private static final int UP = 38 ;
private static final int RIGHT = 39 ;
private static final int DOWN = 40 ;
private static final int PLUS = 61 ;
private static final int MINUS = 45 ;
private static final int ASTERISK = 56 ;
private static final int SLASH = 47 ;
private static final int ENTER = java . awt . event . KeyEvent . VK_ENTER ;
private static final int ESC = 27 ;
private static final int TOGGLEMOUSE = java . awt . event . KeyEvent . VK_SPACE ;
private static final int MOUSEHOME = java . awt . event . KeyEvent . VK_H ;
private static final int MOUSEMOVE = java . awt . event . KeyEvent . VK_M ;
private static final int MOUSEPRESS = java . awt . event . KeyEvent . VK_Q ;
private static final int MOUSERELEASE = java . awt . event . KeyEvent . VK_W ;
private static final int KEYPRESS = java . awt . event . KeyEvent . VK_E ;
private static final int KEYRELEASE = java . awt . event . KeyEvent . VK_R ;
private static final int GETPIXELCOLOR = java . awt . event . KeyEvent . VK_C ;
private static final int CREATESCREENCAPTURE = java . awt . event . KeyEvent . VK_S ;
private static final int AUTOWAIT = java . awt . event . KeyEvent . VK_A ;
private static final int DELAY = java . awt . event . KeyEvent . VK_D ;
private static final int IDLE = java . awt . event . KeyEvent . VK_I ;
public static final void main ( final java . lang . String [ ] args ) throws java . lang . Exception
{
final java . lang . Runnable exitRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
java . lang . System . exit ( 0 ) ;
}
} ;
final javax . swing . JFrame jFrame = new javax . swing . JFrame ( ) ;
final java . awt . Container contentPane = jFrame . getContentPane ( ) ;
final javax . swing . JDesktopPane jDesktopPane = new javax . swing . JDesktopPane ( ) ;
contentPane . add ( jDesktopPane ) ;
final java . awt . Robot robot = new java . awt . Robot ( ) ;
final java . lang . Runnable robotRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
final boolean recordMode [ ] = new boolean [ 1 ] ;
final java . util . List < java . lang . Runnable > runnables = new java . util . ArrayList < java . lang . Runnable > ( ) ;
final int [ ] point = new int [ 2 ] ;
final boolean [ ] mouseMode = new boolean [ 1 ] ;
mouseMode [ 0 ] = true ;
final int [ ] keyMode = new int [ 2 ] ;
keyMode [ 0 ] = 1 ;
final int [ ] sleep = new int [ 1 ] ;
sleep [ 0 ] = 1 ;
final javax . swing . JInternalFrame jInternalFrame = new javax . swing . JInternalFrame ( "Robot" , true , true , true , true ) ;
final javax . swing . JButton jButton = new javax . swing . JButton ( "Mouse" ) ;
jButton . setFocusable ( true ) ;
jButton . setRequestFocusEnabled ( true ) ;
jInternalFrame . getContentPane ( ) . add ( jButton ) ;
final java . lang . Runnable toggleMouseModeRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
mouseMode [ 0 ] = ! mouseMode [ 0 ] ;
}
} ;
final java . lang . Runnable mouseToPointRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
final int x = point [ 0 ] ;
final int y = point [ 1 ] ;
robot . mouseMove ( x , y ) ;
}
} ;
final java . lang . Runnable mouseMoveRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
final int x = point [ 0 ] ;
final int y = point [ 1 ] ;
final java . lang . Runnable runnable = new java . lang . Runnable ( )
{
public final void run ( )
{
robot . mouseMove ( x , y ) ;
}
} ;
runnables . add ( runnable ) ;
}
} ;
final java . lang . Runnable mousePressRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
final int [ ] pressOrRelease = new int [ 1 ] ;
final int [ ] buttons = new int [ 1 ] ;
final java . util . Map < java . lang . Integer , java . lang . String > codeMap = new CodeMap ( ) ;
codeMap . put ( java . awt . event . InputEvent . BUTTON1_MASK , "Button 1" ) ;
codeMap . put ( java . awt . event . InputEvent . BUTTON2_MASK , "Button 2" ) ;
codeMap . put ( java . awt . event . InputEvent . BUTTON3_MASK , "Button 3" ) ;
final int x = point [ 0 ] ;
final int y = point [ 1 ] ;
mouseMode [ 0 ] = false ;
radio ( jInternalFrame , codeMap , pressOrRelease , buttons ) ;
toggleMouseModeRunnable . run ( ) ;
final java . lang . Runnable runnable = new java . lang . Runnable ( )
{
public final void run ( )
{
robot . mouseMove ( x , y ) ;
if ( pressOrRelease [ 0 ] == 1 )
{
robot . mousePress ( buttons [ 0 ] ) ;
}
else if ( pressOrRelease [ 0 ] == 2 )
{
robot . mouseRelease ( buttons [ 0 ] ) ;
}
else if ( pressOrRelease [ 0 ] == 3 )
{
robot . mousePress ( buttons [ 0 ] ) ;
robot . mouseRelease ( buttons [ 0 ] ) ;
}
}
} ;
runnables . add ( runnable ) ;
runnable . run ( ) ;
jButton . requestFocus ( ) ;
}
} ;
final java . lang . Runnable keyPressRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
final int [ ] pressOrRelease = new int [ 1 ] ;
final int [ ] buttons = new int [ 1 ] ;
final java . util . Map < java . lang . Integer , java . lang . String > codeMap = new CodeMap ( ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_A , "A" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_B , "B" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_C , "C" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_D , "D" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_E , "E" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_F , "F" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_G , "G" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_H , "H" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_I , "I" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_J , "J" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_K , "K" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_L , "L" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_M , "M" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_N , "N" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_O , "O" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_P , "P" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_Q , "Q" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_R , "R" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_S , "S" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_T , "T" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_U , "U" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_V , "V" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_W , "W" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_X , "X" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_Y , "Y" ) ;
codeMap . put ( java . awt . event . KeyEvent . VK_Z , "Z" ) ;
final int x = point [ 0 ] ;
final int y = point [ 1 ] ;
mouseMode [ 0 ] = false ;
radio ( jInternalFrame , codeMap , pressOrRelease , buttons ) ;
toggleMouseModeRunnable . run ( ) ;
final java . lang . Runnable runnable = new java . lang . Runnable ( )
{
public final void run ( )
{
robot . mouseMove ( x , y ) ;
if ( pressOrRelease [ 0 ] == 1 )
{
robot . keyPress ( buttons [ 0 ] ) ;
}
else if ( pressOrRelease [ 0 ] == 2 )
{
robot . keyRelease ( buttons [ 0 ] ) ;
}
else if ( pressOrRelease [ 0 ] == 3 )
{
robot . keyPress ( buttons [ 0 ] ) ;
robot . keyRelease ( buttons [ 0 ] ) ;
}
}
} ;
runnables . add ( runnable ) ;
runnable . run ( ) ;
jButton . requestFocus ( ) ;
}
} ;
final java . lang . Runnable delayRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
final java . lang . Runnable runnable = new java . lang . Runnable ( )
{
final java . lang . String delayString = javax . swing . JOptionPane . showInputDialog ( jInternalFrame , "Delay (in milliseconds)" ) ;
final int delay = java . lang . Integer . parseInt ( delayString ) ;
public final void run ( )
{
robot . delay ( delay ) ;
}
} ;
runnables . add ( runnable ) ;
}
} ;
final java . awt . event . KeyListener keyListener = new java . awt . event . KeyAdapter ( )
{
public final void keyPressed ( final java . awt . event . KeyEvent e )
{
final int keyCode = e . getKeyCode ( ) ;
if ( keyCode == TOGGLEMOUSE )
{
toggleMouseModeRunnable . run ( ) ;
}
else if ( keyCode == MOUSEHOME )
{
point [ 0 ] = 0 ;
point [ 1 ] = 1 ;
}
else if ( keyCode == MOUSEMOVE )
{
mouseMoveRunnable . run ( ) ;
}
else if ( keyCode == MOUSEPRESS )
{
mousePressRunnable . run ( ) ;
}
else if ( keyCode == KEYPRESS )
{
keyPressRunnable . run ( ) ;
}
else if ( keyCode == DELAY )
{
delayRunnable . run ( ) ;
}
else if ( ( keyCode == LEFT ) || ( keyCode == RIGHT ) || ( keyCode == UP ) || ( keyCode == DOWN ) )
{
keyMode [ 0 ] = 1 ;
keyMode [ 1 ] = keyCode ;
}
else if ( keyCode == PLUS )
{
sleep [ 0 ] ++ ;
}
else if ( keyCode == MINUS )
{
sleep [ 0 ] -- ;
}
else if ( keyCode == ASTERISK )
{
sleep [ 0 ] *= 2 ;
}
else if ( keyCode == SLASH )
{
sleep [ 0 ] /= 2 ;
}
else if ( keyCode == ESC )
{
recordMode [ 0 ] = false ;
jButton . removeKeyListener ( this ) ;
}
if ( sleep [ 0 ] <= 0 )
{
sleep [ 0 ] = 1 ;
}
else if ( sleep [ 0 ] > 2048 )
{
sleep [ 0 ] = 2048 ;
}
}
public final void keyReleased ( final java . awt . event . KeyEvent e )
{
keyMode [ 0 ] = 0 ;
}
} ;
final java . lang . Runnable recordRobotRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
jButton . requestFocus ( ) ;
jButton . addKeyListener ( keyListener ) ;
recordMode [ 0 ] = true ;
while ( recordMode [ 0 ] )
{
if ( ( keyMode [ 0 ] == 1 ) && ( mouseMode [ 0 ] ) )
{
if ( keyMode [ 1 ] == LEFT )
{
point [ 0 ] -- ;
}
else if ( keyMode [ 1 ] == RIGHT )
{
point [ 0 ] ++ ;
}
else if ( keyMode [ 1 ] == UP )
{
point [ 1 ] -- ;
}
else if ( keyMode [ 1 ] == DOWN )
{
point [ 1 ] ++ ;
}
else
{
keyMode [ 0 ] = 0 ;
}
}
if ( mouseMode [ 0 ] == true )
{
mouseToPointRunnable . run ( ) ;
robot . delay ( sleep [ 0 ] ) ;
}
}
}
} ;
final java . lang . Runnable runRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
final java . util . Iterator < java . lang . Runnable > iter = runnables . iterator ( ) ;
while ( iter . hasNext ( ) )
{
final java . lang . Runnable next = iter . next ( ) ;
next . run ( ) ;
}
}
} ;
final java . lang . Runnable rerunRunnable = new java . lang . Runnable ( )
{
public final void run ( )
{
while ( true )
{
runRunnable . run ( ) ;
try
{
java . lang . Thread . sleep ( 60 * 1000 ) ;
}
catch ( final java . lang . Exception cause )
{
cause . printStackTrace ( ) ;
}
}
}
} ;
jInternalFrame . setSize ( 160 , 160 ) ;
final javax . swing . JMenuBar jMenuBar = new javax . swing . JMenuBar ( ) ;
final javax . swing . JMenu jMenu = new javax . swing . JMenu ( "Robot" ) ;
action ( recordRobotRunnable , "Record Robot" , jMenu ) ;
action ( runRunnable , "Run" , jMenu ) ;
action ( rerunRunnable , "Continuously Run" , jMenu ) ;
jMenuBar . add ( jMenu ) ;
jInternalFrame . setJMenuBar ( jMenuBar ) ;
jInternalFrame . setVisible ( true ) ;
jDesktopPane . add ( jInternalFrame ) ;
}
} ;
jFrame . setSize ( 200 , 200 ) ;
final javax . swing . JMenuBar jMenuBar = new javax . swing . JMenuBar ( ) ;
final javax . swing . JMenu jMenu = new javax . swing . JMenu ( "File" ) ;
action ( robotRunnable , "Robot" , jMenu ) ;
action ( exitRunnable , "Exit" , jMenu ) ;
jMenuBar . add ( jMenu ) ;
jFrame . setJMenuBar ( jMenuBar ) ;
final java . awt . event . WindowListener windowListener = new java . awt . event . WindowAdapter ( )
{
public final void windowClosing ( final java . awt . event . WindowEvent e )
{
start ( exitRunnable ) ;
}
} ;
jFrame . addWindowListener ( windowListener ) ;
jFrame . setVisible ( true ) ;
}
private static final void start ( final java . lang . Runnable runnable )
{
final java . lang . Thread thread = new java . lang . Thread ( runnable ) ;
thread . start ( ) ;
}
private static final void action ( final java . lang . Runnable runnable , final java . lang . String name , final javax . swing . JMenu jMenu )
{
final javax . swing . Action action = action ( runnable , name ) ;
jMenu . add ( action ) ;
}
private static final javax . swing . Action action ( final java . lang . Runnable runnable , final java . lang . String name )
{
final javax . swing . Action action = new javax . swing . AbstractAction ( name )
{
public final void actionPerformed ( final java . awt . event . ActionEvent e )
{
start ( runnable ) ;
}
} ;
return ( action ) ;
}
private static final void radio ( final javax . swing . ButtonGroup buttonGroup , final javax . swing . JPanel jPanel , final java . lang . String name , final int [ ] code , final int codeValue )
{
final javax . swing . Action action = new javax . swing . AbstractAction ( name )
{
public final void actionPerformed ( final java . awt . event . ActionEvent e )
{
code [ 0 ] = codeValue ;
}
} ;
final javax . swing . JRadioButton jRadioButton = new javax . swing . JRadioButton ( action ) ;
buttonGroup . add ( jRadioButton ) ;
jPanel . add ( jRadioButton ) ;
}
private static final void radio ( final javax . swing . JInternalFrame jInternalFrame , final java . util . Map < java . lang . Integer , java . lang . String > codeMap , final int [ ] pressOrRelease , final int [ ] code )
{
final javax . swing . JPanel prPanel = new javax . swing . JPanel ( ) ;
final javax . swing . JPanel cdPanel = new javax . swing . JPanel ( ) ;
final javax . swing . ButtonGroup prGroup = new javax . swing . ButtonGroup ( ) ;
final javax . swing . ButtonGroup cdGroup = new javax . swing . ButtonGroup ( ) ;
radio ( prGroup , prPanel , "Press" , pressOrRelease , 1 ) ;
radio ( prGroup , prPanel , "Release" , pressOrRelease , 2 ) ;
radio ( prGroup , prPanel , "Press And Release" , pressOrRelease , 3 ) ;
final java . util . Set < java . lang . Integer > keySet = codeMap . keySet ( ) ;
final java . util . Iterator < java . lang . Integer > iterator = keySet . iterator ( ) ;
while ( iterator . hasNext ( ) )
{
final java . lang . Integer key = iterator . next ( ) ;
final int k = key . intValue ( ) ;
final java . lang . String name = codeMap . get ( key ) ;
radio ( cdGroup , cdPanel , name , code , k ) ;
}
final javax . swing . JPanel jPanel = new javax . swing . JPanel ( ) ;
jPanel . add ( prPanel ) ;
jPanel . add ( cdPanel ) ;
javax . swing . JOptionPane . showMessageDialog ( jInternalFrame , jPanel ) ;
}
private static final class CodeMap extends java . util . Hashtable < java . lang . Integer , java . lang . String >
{
public final void put ( final int key , final java . lang . Object value )
{
final java . lang . Integer k = new java . lang . Integer ( key ) ;
final java . lang . String v = value . toString ( ) ;
super . put ( k , v ) ;
}
}
}
This is a simle Robot application. It makes use of the class java.awt.Robot.
You can use it to record a robot.
When you record a robot, you use the keyboard to control input to the system.
For example, you use the up, down, left, and right arrow keys to control the mouse.
The application will record your inputs.
Then later, you can play them back.
For now, I have abandoned this project.
No comments:
Post a Comment