Capturar teclas, menues de contexto

31 views
Skip to first unread message

Ramón S. Paz

unread,
Sep 18, 2009, 4:20:42 AM9/18/09
to Flex AIR Venezuela

Mi consulta va referida a si es posible capturar teclas sin que
responda el browser. Por ejemplo, si es posible capturar la
combinacion Ctrl+P en Flex e impedir que el browser responda abriendo
el dialogo para imprimir.
Segun una vaga linea en la ayuda de Flex, sugeriria que no se puede.
Hice tambien unas pruebas intentandolo pero no se bloquearon. Pero me
gustaria confirmar si hay o no alguna forma.

Relacionado con lo anterior, qusiera que mi aplicacion web,
basicamente de gestion, se pueda manejar agilmente desde el teclado.
No se necesitaria manipular mucho el mouse, apenas seleccionar menues,
solapas en los TabBars y similares, no mucho mas. Excepto si usar
mucho menu de contexto. Casi toda grilla o cuadro de texto necesita su
propio menu de contexto.

Estuve estudiando y probando todos estos temas. Basicamente, menues de
contexto puedo usar, con algunas limitaciones, pero no tendria mucho
problema en implementarlos.
Pero el uso del teclado todavia no se.
Pregunto, hay alguna forma de indicar por ejemplo (similar a la
filosofia de Windows) que tecla o combinacion corresponde a un boton o
elemento de un menu, o para llevar el foco a un control. Similar a
como Windows subraya la letra correspondiente para indicar cual tecla
tiene asignada.
Quisiera saber si alguien trabaja de esta manera, si pudo hacerlo, si
Flex permite esta 'filosofia' de trabajo, o si directamente tengo que
pensarlo de otra manera.

Juan

unread,
Sep 25, 2009, 1:56:51 PM9/25/09
to Flex AIR Venezuela
Saludos Ramón. Disculpa la tardanza de la respuesta pero es que tu
pregunta, aparte de interesante, es bastante avanzada y tuve que
investigar dos cositas que no sabía antes de poder responderte.

De manera natural, el Flash Player no se antepone de ninguna manera a
las combinaciones de teclas del navegador ni del sistema operativo.
Esto
quiere decir que puedes, efectivamente, agregar correctamente un
listener a un comando como, por ejemplo, Ctrl + W, pero el navegador
ejecutará su función asociada a este evento, siempre antes que el
Flash Player (en este caso, habrá cerrado la pestaña antes de que la
aplicación pueda ejecutar el
handler asociado a este evento dentro de la aplicación Flex).
Ciertamente, Flex maneja, practicamente, todos los tipos de eventos
posibles, simples y combinados, de teclado y mouse, pero tendrás que
usar combinaciones que no esten reservadas ni por el sistema operativo
ni por el navegador. Sin embargo, existen ciertas instrucciones
JavaScript que hacen peticiones al navegador, y que puedes invocar
desde el código Flex, y de esta forma logran una interacción más
potente que la que se puede lograr con el Flash Player. No soy
conocedor de JavaScript pero te invito, en caso de que tampoco lo
conozcas, a revisar algunas de las instrucciones en JavaScript que
puedan servirte para lograr lo que quieres. Si consigues alguna
instrucción que pueda anteponerse o inhabilitar alguna acción del
navegador, muy probablemente podrás invocarla desde Flex. Flex maneja
varios mecanismos para ejecutar código JavaScript desde el código
Flex; entre ellos estan las clases ExternalInterface y URLRequest.
Aqui hay algunos enlaces interesantes:

Sobre eventos de teclado:
http://livedocs.adobe.com/flex/3/html/help.html?content=events_11.html

Sobre diversas formas de capturar entradas de teclado:
http://livedocs.adobe.com/flex/3/html/help.html?content=Capturing_User_Input_3.html

Sobre código JavaScript desde Flex:
http://cookbooks.adobe.com/tags/JavaScript



Hice un ejemplito donce se pueden ver algunas de estas funcionalidades
que he mencionado. El codigo está aqui:
http://flex-air-ve.googlegroups.com/web/EjemploCapturaTeclasFlexairve.zip?hl=es

Espero que algo de lo anterior te sea útil.

Saludos. Juan Manrique.

pedro.varela

unread,
Oct 14, 2009, 6:23:09 PM10/14/09
to Flex AIR Venezuela
Hola Ramón, casi todo lo que quieras hacer con Flex, o Flash se puede
hacer.. la captura de teclas lo puede ver perfectamete en el ejemplo
que envió Juan, por cierto bien bueno tu ejemplo. Muchas veces los
componentes de flex tienen el mismo comportamiento que los de windows
por ejemplo si tienes foco en un textInput, y presionas la tecla TAB y
el componente que tienes visible es foscusable = true, vas a poder
accedero con el teclado, por ejemplo un CheckoBox, si presionas barra,
es lo mismo que hacer click, si en un ComoboBox, presionas CTRL+
Flecha hacia abajo desplega el DropDown del ComboBox. Las listas con
las teclas direccionales los puedes mover hacer cambiar un item
seleccionado del DataGrid,, y así sucesivamente, solo hay que saber
cómo accederlos con el teclado y lo otro es saber que componente tiene
el foco , si por ejemplos quieres hacer un botón para imprimir con un
shortcut QUE NO SEA Ctrl+P te va a funcionar con que stage como en el
ejemplo de juan

stage.addEventListener(KeyboardEvent.KEY_DOWN,tecladoHandler);
stage.addEventListener(KeyboardEvent.KEY_UP,restaurarHandler);

te va a funcionar sin problemas, existen palabras reservadas y
combinaciones de teclas ejemplo CTRL + P que por default son del
explorador o de flash player y pues sería medio fastidioso evitarlas,
así que mi recomendación usa tus propias combianciones de teclas o..
Que hagan Click.. y el teclado para escribir :)

Ramón S. Paz

unread,
Oct 14, 2009, 7:19:53 PM10/14/09
to Flex AIR Venezuela

saludo Juan y Pedro, se agradecen los comentarios.

Efectivamente, tendre que adaptar el trabajo a los detalles de flex.
De ultima no es mucho problema, los usuarios deberan adaptarse a las
nuevas caracteristicas, no queda otra.

El asunto con todo este tema es el siguiente: Estoy rehaciendo
sistemas de terceros en muchos casos bastante viejos, algunos hechos
en los primeros lenguajes visuales y hasta algunos en D.O.S.
Son sistemas de carga (u operacion) masiva, los usuarios estan
totalmente acostumbrados y los operan casi sin mirar las pantallas, de
automatizado que tienen su tarea. No usan mouse, es muy agil la
operacion de esos sistemas, quizas la unica caracteristica positiva
frente a los paradigmas visuales actuales.
Entonces tengo que tratar de reacer los sistemas mas o menos con las
mismas facilidades.
Y el tema de las combinaciones de teclas, en algunos de estos sistemas
usan por ejemplo la combinacion Ctrl+P para varias cosas, los usuarios
estan muy acostumbrados, si pudiera darles las mismas acciones con las
mismas combinaciones de teclas seria lo ideal.
Pero bueh, ya se acostumbraran.
Saludo
Reply all
Reply to author
Forward
0 new messages