Не подумайте что игнорирую, просто немножко не понимаю, но все таки, взяв за основу ваш пост gloomyBrain, у меня получилось вот что

Код AS3:
private function inPousePanel():void
{
super.stage.focus = interfac.pouse_mc.restart_btn;
addEventListener(KeyboardEvent.KEY_DOWN, keyFocus);
}
private function keyFocus(e:KeyboardEvent):void
{
if (e.keyCode == 37) {
switch(super.stage.focus) {
case interfac.pouse_mc.restart_btn:super.stage.focus = interfac.pouse_mc.gallery_btn; break;
case interfac.pouse_mc.gallery_btn:super.stage.focus = interfac.pouse_mc.help_btn; break;
case interfac.pouse_mc.help_btn:super.stage.focus = interfac.pouse_mc.resume_btn; break;
case interfac.pouse_mc.resume_btn:super.stage.focus = interfac.pouse_mc.restart_btn; break;
}
}
if (e.keyCode == 39) {
switch(super.stage.focus) {
case interfac.pouse_mc.restart_btn:super.stage.focus = interfac.pouse_mc.resume_btn; break;
case interfac.pouse_mc.resume_btn:super.stage.focus = interfac.pouse_mc.help_btn; break;
case interfac.pouse_mc.help_btn:super.stage.focus = interfac.pouse_mc.gallery_btn; break;
case interfac.pouse_mc.gallery_btn:super.stage.focus = interfac.pouse_mc.restart_btn; break;
}
}
if (e.keyCode == 13) {
switch(super.stage.focus) {
case interfac.pouse_mc.restart_btn:restartLevel(); break;
case interfac.pouse_mc.gallery_btn:returnToGallery(); break;
case interfac.pouse_mc.help_btn:; break;
case interfac.pouse_mc.resume_btn:resumeGame(); break;
}
}
}
Смысл:
При открытии окна вызывается функция "inPousePanel", в ней ставится фокус на самую часто-кликуемую кнопку и цепляется событие нажатия на клавиатуру, т.е лево - 37, право - 39 и ентер - 13. Когда мы нажимаем одну из них, меняется фокус или запускается функция кнопки, в зависимости от кнопки над которой фокус.
И оно работает! Теперь осталось только написать то же самое тля окон "Конец игры" и "Уровень пройден" и самое сложное "Меню и галрея" - где 19 кнопок

Как думаете, можно упростить?