Esempio di scorciatoia da tastiera

… soprattutto se si parla di scorciatoie da tastiera.

L'utente pretende le stesse possibilità di scelta di un programma Office, e lo sviluppatore deve spesso trovare il metodo meno sanguinoso possibile per gestire il tutto, partendo dal presupposto che "non si può fare" non sempre è una risposta accettabile.

FileMaker Pro mette a disposizione una funzione di ricavo -  Get ( TastiModificatoreAttivo )  - che restituisce quali tasti sono in quel momento premuti dall'utente. I risultati sono illuminanti:

Maiusc = 1
Bloc Maiusc = 2
Ctrl = 4
Alt (Windows) e Opzione (OS X) = 8
Comando (OS X) = 16

Nel caso in cui più tasti siano premuti insieme, il sistema restituisce la somma: ad esempio la combinazione  crtl-maiuscolo restituisce un valore di 5.

Si tratta quindi di trovare il modo migliore per intercettare quali tasti sono premuti con il minore spreco di tempo.
È proprio il caso di dire che la matematica non è un' opinione: tutti i risultati sono potenze di 2 (1= 20, 2= 21, 4= 22, 8= 23,16= 24).

Questo ci può aiutare a trovare una soluzione semplice ed elegante.  Un'applicazione divertente è spiegata qui: viene creata una funzione personalizzata (get.modifierKeys) utilizzando la funzione Modulo() e Divisore() per ricavare tutti i tasti premuti partendo dall'esponente 0 per arrivare all'esponente 4:

Dichiara( [
_modKeys = Get( TastiModificatoreAttivo );
_returnValue = _modKeys; $$SHIFT = Modulo( _modKeys; 2 );
_modKeys = Divisore( _modKeys; 2 );
$$CAPS = Modulo( _modKeys; 2 );
_modKeys = Divisore( _modKeys; 2 );
$$CTRL = Modulo( _modKeys; 2 );
_modKeys = Divisore( _modKeys; 2 );
$$ALT = Modulo( _modKeys; 2 );
_modKeys = Divisore( _modKeys; 2 );
$$CMD = Modulo( _modKeys; 2 ) ];
_returnValue )

La funzione  non richiede parametri, e ridichiara la variabile  _modKeys per ciascuno degli esponenti, ricavando il risultato. Ma dato che Modulo() è una funzione logica e restituisce un risultato booleano (1 o 0) può essere utilizzata per dichiarare una variabile globale che a sua volta è utilizzabile anche negli script. In questo la funzione è esemplificativa di un concetto poco conosciuto: è possibile dichiarare le variabili direttamente dal motore di calcolo di FileMaker, senza utilizzare l'istruzione di script imposta variabile[].

Arrivati a questo punto il gioco è semplice. È sufficiente inserire negli script interessati un if [] del tipo:

Imposta Variabile [$Keys; Valore: get.modifierKeys]
If [$$CTRL and $$CMD];
… una serie di istruzioni …
ElseIf [$$SHIFT];
… altra serie di istruzioni …
ElseIf [$$CMD];
…etc…
End If

E tu come gestisci le scorciatoie da tastiera?

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here