// we can set up commands to be run
Mercurial.gamepad1().a()
// runs on the rising edge of button a
.onTrue(new Lambda("command-name"))
// runs on the falling edge of button a
.onFalse(new Lambda("command-name"))
// runs on the rising edge of button a, until the falling edge, then ends naturally
.whileTrue(new Lambda("command-name"))
// runs on the falling edge of button a, until the rising edge, then ends naturally
.whileFalse(new Lambda("command-name"))
// runs on the rising edge of button a, reschedules if it ends early, until the falling edge, then ends naturally
.untilFalse(new Lambda("command-name"))
// runs on the falling edge of button a, reschedules if it ends early, until the rising edge, then ends naturally
.untilTrue(new Lambda("command-name"))
// runs on the rising edge of button a, cancels on the next rising edge
.toggleTrue(new Lambda("command-name"))
// runs on the falling edge of button a, cancels on the next falling edge
.toggleFalse(new Lambda("command-name"))
// cancels on the rising edge of a
.cancelOnTrue(new Lambda("command-name"))
// cancels on the falling edge of a
.cancelOnFalse(new Lambda("command-name"));