Brian Dunning's FileMaker Custom Functions

ModifierVariables ( )

This function creates a local boolean variable for each modifier key.

  Average rating: 4.4 (30 votes) Log in to vote

Jeff Drake   Jeff Drake
Drakeling Technologies

Share on Facebook Share on Twitter

  Sample input:
A script containing this function is initiated while holding the shift and option keys.
  Sample output:
The following five local variables are set:

$CommandOn = 0
$OptionOn = 1
$ControlOn = 0
$CapsLockOn = 0
$ShiftOn = 1

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

By placing this function at the beginning of a script, the script has immediate access to five variables, each denoting the status of a different modifier key at the time the script was initiated.

Note: this function does not return any values outside of the five local variables.

 

Comments

Josh   Josh, Santa Rosa
Feb 19, 2009
Shouldn't the output be:

$CommandOn = 0
$OptionOn = 1
$ControlOn = 0
$CapsLockOn = 0
$ShiftOn = 1 <------


if both the shift and option keys are held down during input?
 
Jeff Drake   Jeff Drake, Drakeling Technologies
Feb 21, 2009
Yep, I just noticed that too. Thanks for the catch!
 
Eric   Eric, SJSU
May 30, 2015
/* For output, I went ahead and listed all the variable names turned on,
so a non-Advanced user can test the result and get a hint about the variables names.
Eric Matthews at SJSU edu
/*
ModifierVariables ©2009 Jeffanna Design
Last modified: 8/15/2009
This function sets a series of local variables based on which modifier keys are being pressed, e.g.
If the shift key is being pressed, $ShiftOn = 1.
If the command key is not being pressed, $CommandOn = 0.
*/

Let([modifier = If( IsEmpty(Get(TriggerModifierKeys)); Get(ActiveModifierKeys); Get(TriggerModifierKeys) );
$CommandOn = Mod(modifier; 32) ≥ 16; //if the ⌘ (command) key is being pressed.
$AltOn = Mod(modifier; 16) ≥ 8; //if the ⌥ (option/alt) key is being pressed
$ControlOn = Mod(modifier; 8) ≥ 4; //if the ^ (control) key is being pressed
$CapsLockOn = Mod(modifier; 4) ≥ 2; //if the ⇪ (caps lock) key is being pressed
$ShiftOn = Mod(modifier; 2) ≥ 1 //if the ⇧ (shift) key is being pressed
]; //end define Let

List
(
If($ShiftOn; "$ShiftOn");
If($CapsLockOn; "$CapsLockOn");
If($ControlOn; "$ControlOn");
If($AltOn; "$AltOn");
If( $CommandOn; "$CommandOn")
) // Added by Eric.Matthews at SJSU edu

) //end Let
 
Jeff Drake   Jeff Drake, Drakeling Technologies
May 30, 2015
Good idea, Eric. Thanks!
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.