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
Vous devez vous connecter pour publier un commentaire.
J'ai fait un test où j'ai écouté pour la clé des événements sur la scène et a remarqué que (sur mon Mac) j'ai pu capturer ctrl-c, ctrl-v, etc. très bien, mais en ce qui concerne la commande (le clé) n'a pas été capturé jusqu'à ce que j'ai sorti la touche de commande, puis ctrlKey était faux (même si les docs dit que ctrlKey doit être vrai pour la touche cmd sur Mac), et le charCode était de 0. Assez inutile, en bref.
OriginalL'auteur Theo
Un autre incroyablement ennuyeux chose que je viens de réaliser, c'est que ctrl-c ne peuvent pas être capturés par
event.ctrlKey && event.keyCode = Keyboard.C
(ou ...event.charCode == 67
), au lieu de cela, vous devez les tester pourcharCode
oukeyCode
3
. Il fait sens pourcharCode
depuis ctrl-c est3
dans la table ASCII, mais il ne fait pas de sens pourkeyCode
, qui est censé représenter la touche sur le clavier, pas le caractère tapé. Il en va de même pour tous les autres combos (parce que chaque ctrl combo a un équivalent ASCII).Modifier Trouvé un bug dans le Flex système de suivi des bogues à ce sujet: https://bugs.adobe.com/jira/browse/FP-375
OriginalL'auteur Theo
J'ai trouvé une solution de contournement pour ce l'une basée sur la séquence de capture. Lorsque vous appuyez sur Cmd+A, par exemple, la séquence est:
Donc, chaque fois que vous obtenez mot de code 15 en bas puis en haut et la capture suivante est bas, on peut supposer que l'utilisateur appuie sur la combinaison de touches. Mon de mise en œuvre de finir comme cela:
OriginalL'auteur saulobrito
Pour moi, les ouvrages suivants:
OriginalL'auteur