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 - Show more from this author
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.

Support this website.

This library has been a free commmunity resource for FileMaker users and developers for 20 years. It receives no funding and has no advertisements. If it has helped you out, I'd really appreciate it if you could contribute whatever you think it's worth: