This seems to be a Flash Player issue (not strictly a FlashPunk one), but Event.ACTIVATE and Event.DEACTIVATE fire twice.
A simple workaround would be to check the last focus event, as in:
private function onActivate (e:Event):void
{
if (_lastFocusEvent === Event.ACTIVATE) return;
_lastFocusEvent = Event.ACTIVATE;
...
}