Introduced
1.0
Description
Retrieves the current status of all the virtual keys.
Note: This command uses output arguments. C# and some scripting languages (such as JScript, PerlScript and Python) don't support arguments passed by reference so you need to use the best workaround for your situation:
For scripting languages this command returns an ISIVTCollection which you can use to get the output arguments.
For C# you can use the XSIApplication.ExecuteCommand method to call this command. ExecuteCommand packs the output arguments into a C# System.Object containing an Array of the output arguments (see Calling Commands from C#).
Scripting Syntax
GetKeyboardState( [KeyCode], [Shift] )
Parameters
|
Parameter |
Type |
Description |
|
KeyCode [out] |
Not implemented. |
|
|
Shift [out] |
Returns an integer mask which corresponds to the state of the Shift(1), Ctrl(2), and Alt(4) keys. |
Examples
1. VBScript Example
dim l_ModifierKey
GetKeyboardState , l_ModifierKey
if CBool(CByte(1) And CByte(l_ModifierKey)) then
LogMessage "Shift pressed"
elseif CBool(CByte(2) And CByte(l_ModifierKey)) then
LogMessage "Ctrl pressed"
elseif CBool(CByte(4) And CByte(l_ModifierKey)) then
LogMessage "Alt pressed"
else
LogMessage "No modifier key pressed."
end if2. JScript Example
/* This example illustrates how to call the GetKeyboardState command and access the output argument called Shift; this contains the modifier key state. */ var rtn = GetKeyboardState(); var mod; // get modifier by index modifier = rtn(1); LogMessage( "modifier = " + modifier, siInfo ); // get modifier by argument name modifier = rtn("Shift"); LogMessage( "modifier = " + modifier, siInfo ); var str = ""; if ( 1 & modifier ) { str = "Shift " } if ( 2 & modifier ) { str += "Ctrl " } if ( 4 & modifier ) { str += "Alt " } if ( str != "" ) { LogMessage( str + "pressed", siInfo ); } else { LogMessage( "No modifier key pressed.", siInfo ); } //INFO : "modifier = 7" //INFO : "modifier = 7" //INFO : "Shift Ctrl Alt pressed"
3. PerlScript Example
use Win32::OLE::Variant;
my $keycode = Variant(VT_VARIANT|VT_BYREF,0);
my $modifier = Variant(VT_VARIANT|VT_BYREF,0);
$Application->GetKeyBoardState($keycode, $modifier);
$Application->LogMessage("KeyboardState KeyCode: $keycode Modifier: $modifier\n");//Autodesk Softimage v7.5