FlashPlayer のバグ?仕様?

ActionScript を使った開発を行う時には、デバッグしやすいスタンドアロンのプレイヤーを利用しています。ダウンロードは下のアドレスから。スタックトレースはじめ、何だかんだ言って便利です。

http://www.adobe.com/support/flashplayer/downloads.html

さて、今回は普段便利なプレイヤーの仕様のせいで困ったのでメモを。個人的には時間を取られたのでバグだと思っています。
Ctrl + c などのショートカットをアプリケーションに実装しようと思ったのですが、スタンドアロンのプレイヤーではキーボードの値が正しく取得されないようです。

サンプル

具体的には、以下のようなケース。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()">
  <mx:Script>
    <![CDATA[
      import flash.events.*;

      private function init():void {
        addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
      }

      override protected function keyDownHandler(e:KeyboardEvent):void {
        l.text = "code:" + e.keyCode + " ctrl:" + e.ctrlKey;
      }
    ]]>
  </mx:Script>
  <mx:Label id="l" />
  <mx:TextInput />
</mx:Application>

ブラウザでこれを実行して TextInput 上でキー入力を行うと Ctrl + c で Ctrl キー(Mac では Command キーも)が押されている事と、『c』のキーが押されている事が確認できます。
一方スタンドアロンのプレイヤーでは Ctrl + c を押しても keyCode プロパティで Ctrl キーの値が返されてしまいます。
さらに調べたところ一部のキーでは正しい値が入り、定義済みのショートカットが存在するキーではその動作が優先されてしまうようでした(例えば Ctrl + q ならプレイヤーが終了します)。


大体の場合ブラウザで実行できれば問題ないのですが、同じようなケースではまったとしても、それはコードのせいではないかもしれませんよ、ということで。