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