La capture Cmd-C (ou Ctrl-C) le clavier de l'événement à partir modulaire de l'application Flex dans le navigateur ou de l'AIR

Il semble qu'il est impossible de capturer l'événement de clavier normalement utilisé pour la copie lors de l'exécution d'une application Flex dans le navigateur ou une application AIR, sans doute parce que le navigateur ou le système d'exploitation est d'intercepter la première.

Est-il un moyen de dire au navigateur ou du système d'exploitation de laisser l'événement à travers?

Par exemple, sur un AdvancedDataGrid j'ai mis de l'événement keyUp pour handleCaseListKeyUp(cas), qui appelle la fonction suivante:

        private function handleCaseListKeyUp(event:KeyboardEvent):void
        {
            var char:String = String.fromCharCode(event.charCode).toUpperCase();

            if (event.ctrlKey && char == "C")
            {
                trace("Ctrl-C");
                copyCasesToClipboard();
                return;
            }

            if (!event.ctrlKey && char == "C")
            {
                trace("C");
                copyCasesToClipboard();
                return;
            }

            //Didn't match event to capture, just drop out.
            trace("charCode: " + event.charCode);
            trace("char: " + char);
            trace("keyCode: " + event.keyCode);
            trace("ctrlKey: " + event.ctrlKey);
            trace("altKey: " + event.altKey);
            trace("shiftKey: " + event.shiftKey);
        }

Lors d'une exécution, je ne peux jamais obtenir la libération de la touche "C" tout en appuyant sur la touche de commande (qui s'affiche comme KeyboardEvent.ctrlKey). J'ai le résultats de la trace:

charCode: 0
char: 
keyCode: 17
ctrlKey: false
altKey: false
shiftKey: false

Comme vous pouvez le voir, le seul événement que je peux capturer est la libération de la touche de commande, la libération de la touche "C" tout en maintenant la touche commande n'est même pas envoyé.

Quelqu'un a mis en œuvre avec succès standard de copier et de coller la gestion clavier?

Suis-je destiné à simplement utiliser la touche "C" (comme indiqué dans l'exemple de code) ou de faire un bouton de copie disponibles?

Ou dois-je créer l'auditeur manuellement à un niveau supérieur et de transmettre l'événement dans mon application modulaire de tripes?

OriginalL'auteur ianmjones | 2008-08-28