Вы можете отправить любое событие, которое вам нравится, включая KeyboardEvents, поэтому для отправки KeyboardEvent, имитирующего ctrl-z (код клавиши 26) и ctrl-y (код клавиши 25), вы можете сделать что-то вроде следующего:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" creationComplete="creationCompleteHandler(event)">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function creationCompleteHandler(event:FlexEvent):void
{
this.addEventListener( KeyboardEvent.KEY_UP, keyHandler );
}
protected function clickHandler(event:MouseEvent):void
{
this.dispatchEvent( new KeyboardEvent( KeyboardEvent.KEY_UP, true, false, 26, 26, 0, true ) );
}
protected function keyHandler( e:KeyboardEvent ):void
{
trace(e.charCode, e.keyCode, e.ctrlKey);
}
]]>
</mx:Script>
<mx:Button id="undoButton" label="undo" click="clickHandler(event)" />
</mx:Application>
Строка this.dispatchEvent( new KeyboardEvent( KeyboardEvent.KEY_UP, true, false, 26, 26, 0, true ) );
- это ключ (без каламбура), который говорит отправка события KEY_UP, следующие два аргумента являются пузырьками и могут быть отменены, затем 26 для charCode и keyCode, 0 для keyLocation и, наконец, true для ctrlKey ( смоделировать это вниз).