GetKeyboardState

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]

Long

Not implemented.

Shift [out]

siKeyboardState

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 if

2. 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