A Scala Robot class example (Java Robot class)

If you need an example of how to use the Java Robot class in a Scala program, here's a quick one. As unusual as it might seem, this example lets your Scala program log back into a Mac OS X computer after you've been logged out, typically by a screensaver.

First, here's the Scala source code to demonstrate the Robot class:

package robot

import java.awt.AWTException
import java.awt.Robot
import java.awt.event.InputEvent
import java.awt.event.KeyEvent

object RobotLogin {

  val password = "PASSWORD"
  val robot = new Robot

  def main(args: Array[String]) {
    robot.setAutoDelay(40)
    robot.setAutoWaitForIdle(true)
    
    robot.delay(20*1000)
    robot.mouseMove(40, 130)
    robot.delay(1*1000)

    typeString(password)
    robot.delay(1*1000)
    typeKeystroke(KeyEvent.VK_ENTER)
    
    robot.delay(1000)
    System.exit(0)
  }
  
  def leftClick {
    robot.mousePress(InputEvent.BUTTON1_MASK)
    robot.delay(200)
    robot.mouseRelease(InputEvent.BUTTON1_MASK)
    robot.delay(200)
  }
  
  def typeKeystroke(i: Int) {
    robot.delay(40)
    robot.keyPress(i)
    robot.keyRelease(i)
  }

  def typeString(s: java.lang.String) {
    val bytes = s.getBytes
    for (b <- bytes) {
      var code = b.toInt
      // keycode only handles [A-Z] (which is ASCII decimal [65-90])
      if (code > 96 && code < 123) code = code - 32
      robot.delay(40)
      robot.keyPress(code)
      robot.keyRelease(code)
    }
  }
}

Scala Robot class - demo video

Next, here's a video that shows how this source code works:

For more information on using the Robot class, see my original Java Robot class example. Although that source code is written in Java, it probably demonstrates a much more "normal" use case than the example shown here.

Reporting live with creative ideas from beautiful downtown Boulder, Colorado, this is Alvin Alexander.