2012-04-11 29 views
10

Ho bisogno di sapere se l'utente sta tenendo premuto il tasto ctrl mentre si fa clic su un pulsante. dato che si tratta di un pulsante e non di una figura, non posso usare "selectionType" sulla figura ecc. Esiste un modo semplice per farlo?Il tasto 'Ctrl' è premuto?

Grazie!

risposta

10

ne dite di questo:

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

La classe figura ha un certo numero di utili Current* proprietà che sono utili quando si maneggiano i callback. Ecco come recuperare la posizione attuale del mouse, l'oggetto grafico selezionato e (come qui) i tasti premuti. Questi includono: CurrentAxes, CurrentCharacter, CurrentKey, CurrentModifier, CurrentObject e CurrentPosition.

+0

Sembra che il modificatore cmd rimanga in posizione dopo che il tasto è stato rilasciato. C'è un modo per scoprire quali tasti vengono attualmente premuti? – codekitty

1

Premendo il tasto Esc viene reinizializzato CurrentModifier. La mia soluzione finora è stata quella di istruire i miei utenti (proprio nella GUI) a premere il tasto Esc per ripristinare il comportamento predefinito.

Complessivamente, il comportamento di CurrentModifier di Matlab sembra essere che il tasto di modifica "si blocca" fino a quando si verifica una delle seguenti condizioni: viene premuto un altro modificatore, viene selezionata una finestra diversa o viene premuto il tasto di escape.

Problemi correlati