## GetKeyboardState

### Introduced

v1.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 | Long | Not implemented.
Shift | 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"