Não tem como.

Há 3 variáveis no evento de teclado: localização da tecla (esquerda, direita, numpad), código da tecla (somente as teclas de controle, não existem códigos para as teclas normais) e código ANSI da tecla.

Quando o Control está pressionado, o código ANSI da tecla vem em branco, impossibilitando de pegar qual tecla está sendo pressionada juntamente com o control, nem é disparado outro evento para a outra tecla quando Control está pressionado, além da estupidez de considerar KeyDown como KeyPress (ou seja, se você segura Control, ele dispara zilhões de eventos com KeyCode = 17 (que é o Control), quando na verdade eu estou pedindo um evento apenas quando a tecla for "abaixada" (DOWN)).

E, para piorar um pouco, os eventos de teclado estão na parte dos componentes Flex que não são open source (dentro do Flash).

O mundo ideal seria o Flex falar... OS ou Navegador, dane-se você, eu vou processar todas as teclas =) O Chrome parece que faz isso às vezes, porque quando estou com foco no Flex e pressiono F5, ele não dá refresh. O IE maldito já pega as teclas pra ele e boa (nem Alt funciona no Flex... o IE já abre a barra de menu logo de cara).

Enfim... pra evitar voltar ao velho problema do HTML em comportamentos diferentes para diferentes navegadores, deixo quieto essa parte... deu pra contornar o problema, então tá tudo bem =)

--------------------------------------------------
From: "RafaelViana" <rfl.vi...@gmail.com>
Sent: Saturday, December 19, 2009 11:57 AM
To: "flexdev" <flexdev@googlegroups.com>
Subject: [flexdev] Re: TextInput & Ctrl+X

Já fez o teste de apertar CTRL + outra letra que não seja atalho dos
SO's?
E ver se consegue escutar esse evento?

On 19 dez, 11:44, J.C.Ködel <jcko...@gmail.com> wrote:
Não pega... o evento não é disparado. Ele pega o código 17 que é o Ctrl (e fica repetindo, o que não deveria fazer já que não é evento KeyPress e sim
KeyDown), mas quando teclo X ele simplesmente dá cut e não dispara os
eventos de teclado)

Mas já resolvi o problema de outra forma, obrigado.

--------------------------------------------------
From: "RafaelViana" <rfl.vi...@gmail.com>
Sent: Saturday, December 19, 2009 11:41 AM
To: "flexdev" <flexdev@googlegroups.com>
Subject: [flexdev] Re: TextInput & Ctrl+X



> Para pegar a tecla CTRL + X, seria algo como:

> private function teste(event:KeyboardEvent):void{

>   if(event.ctrlKey && event.keyCode == codigo da tecla x)
>      ....

> }

> Mas....

> "CTRL+X is a command you can't override. CTRL+X in most OS's (all the
> ones supported by Flash at least) is the default shortcut for 'cut'.
> You can't override that call at all."

> Retirado de:http://www.actionscript.org/forums/showthread.php3?t=214879

> On 19 dez, 10:19, J.C.Ködel <jcko...@gmail.com> wrote:
>> Estou desenvolvendo um componente de MaskedTextInput (aliás, >> aprimorando
>> o q a Adobe fez), mas estou com um problema que não estou conseguindo
>> solucionar:

>>http://www.kodelsolutions.com/Sandbox.swf

>> No exemplo acima, experimente digitar algo, selecionar uma parte (ou
>> tudo) e teclar Ctrl+X.

>> O problema é que eu não consigo capturar quando o usuário tecla Ctrl+X
>> (Cut to Clipboard). O componente requer algumas ações especiais quando
>> algum caractere é deletado, e o Ctrl+X exclui caracteres e não me >> informa
>> de uma forma fácil de pegar =\

>> Então a pergunta é: alguém já fez alguma forma de bloquear totalmente >> a
>> função Cut ou conseguiu pegar a seqüência de teclas Ctrl+X no evento
>> KeyDown?

>> 
---------------------------------------------------------------------------­­-----
>> J.C.Ködel - Programador Microsoft.net/Adobe Flex
>> TDS-Enterprise -http://www.tds-enterprise.com

>>  smime.p7s
>> 6KExibirDownload

> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev



 smime.p7s
6KExibirDownload

--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to