2012-04-11 22 views
10

Necesito saber si el usuario está presionando la tecla ctrl haciendo clic en un botón. dado que es un botón y no una figura, no puedo usar 'selectionType' en la figura, etc. ¿Hay alguna manera simple de hacerlo?¿Está presionada la tecla 'Ctrl'?

Gracias!

Respuesta

10

¿Qué tal esto:

modifiers = get(gcf,'currentModifier');  %(Use an actual figure number if known) 
ctrlIsPressed = ismember('control',modifiers); 

La clase figura tiene una serie de propiedades útiles Current* que son útiles al manejar las devoluciones de llamada. Esta es la forma de recuperar la posición actual del mouse, el objeto gráfico seleccionado y (como aquí) las teclas presionadas. Estos incluyen: CurrentAxes, CurrentCharacter, CurrentKey, CurrentModifier, CurrentObject y CurrentPosition.

+0

Parece que el modificador cmd se queda después de que se haya liberado la clave. ¿Hay alguna forma de averiguar qué teclas se están presionando actualmente? – codekitty

1

Al presionar la tecla de escape se reinicia el modificador de corriente. Mi solución hasta ahora ha sido instruir a mis usuarios (directamente en la GUI) para presionar la tecla de escape para volver al comportamiento predeterminado.

En general, el comportamiento del CurrentModifier de Matlab parece ser que la tecla modificadora se "pega" hasta que ocurre una de las siguientes: se pulsa un modificador diferente, se selecciona una ventana diferente o se presiona la tecla de escape.

Cuestiones relacionadas