Input Director

Input Director Configuration Import and Export

Contents:

1. Overview

The configuration for Input Director can be imported and exported as a file. This can be used to for a variety of purposes, from migrating the configuration from one computer to another or to change a single setting. Input Director configuration files are formatted in XML and follow a simple structure that has been designed to maximise readability, maintainability and writeability.

Click here to see an example configuration for a system that can be controlled by a specific system.

Click here to see an example configuration for a system setup to control another system.

Configuration files don't need to be written from scratch. Instead, it's easiest to configure Input Director on a system, export the configuration, and then if desired make any edits or remove sections not required.

As all settings within a configuration file are optional, configuration files can contain just the settings you wish to apply to a system. As an example, the following sample changes the configuration so that only Local Administrators can make config changes:

<?xml version="1.0" encoding="UTF-8"?> <InputDirectorConfig ver="2.1.2" idver="2.1.2"> <Security> <AdminOnlyChanges>true</AdminOnlyChanges> </Security> </InputDirectorConfig>

Configuration settings closely match the settings and descriptions found in the user interface and the usage guide is a good resource to understand the purpose of a particular setting. Any minor differences have been called out in Section 3 below, covering the configuration tags and structure.

2. Usage

2.1 Import/Export from the application

To import or export configuration from within the Input Director application, click the "ID" icon in the top-left corner of its window and select the required option from the pull down menu. If importing, Input Director will first verify that the configuration is valid, displaying any errors found in the file. Providing the selected xml file is fine, it will import the configuration and restart the application to activate it.

If Input Director has been set so that only Local Administrators can make changes, then only administrators will be able to import and export configuration files.

2.2 Import/Export using the command line tool

Configuration files can be imported and exported using a command line tool. The tool can be used interactively from the command line or called as part of a batch file / script.

To use the tool, provide either the -importconfig or -exportconfig switch with a filename. If the filename includes spaces, then it can be wrapped in quotes like so:

IDConfig.exe -importconfig:"D:\My Documents\Input Director\LatestConfig.xml"

n.b. IDConfig must be run from the Input Director install directory, alongside the rest of the Input Director files.

Running IDConfig will result it in displaying a success message or error information. If using the tool as part of a batch file you can test its return code - IDConfig will issue a return code of 0 for success and 1 if there was an error.

Input Director cannot be running whilst IDConfig is executing. As such, when IDConfig is run it will check if InputDirector is running and if so it will shut it down. After importing/exporting the configuration it will restart Input Director.

Input Director is restarted using the logged in user's credentials. This ensures that if an elevated (Admin) shell is used to run IDConfig and import/export a configuration file, the restarted Input Director will not be running under the Administrator account.

If Input Director has been set so that only Local Administrators can make changes, then only administrators will be able to import and export configuration files.

3. XML Configuration Structure

Input Director settings hierarchy starts with the top-level tag "InputDirectorConfig". Sitting under it are "GlobalPrefs", "Security", "DirectorPrefs" and "Configuration". Each of these sections reflect the same configuration settings found on the Input Director user interface (with Configuration encapsulating the defined client systems, bindings and macros).

The following sections describe the four groups of configuration settings.

3.1 GlobalPrefs

The Global Preference settings consists of configuration common across a system regardless of it's role. The settings are analogues to those found under the "Global Preferences" tab within the application. A description of these settings can be found here.

... <GlobalPrefs> <RunOnStartup>true</RunOnStartup> <StartupState>Enabled</StartupState> <ShareClipboard excludeDefaultShares="true" FileCopyMode="UseIDFileCopy">true</ShareClipboard> <CursorWaterRipple>true</CursorWaterRipple> <HideCursor>true</HideCursor> <CursorSwitchLocation>CenterCursorPrimaryScreen</CursorSwitchLocation> <CheckForNewVersions>true</CheckForNewVersions> <AllowScreenEdgeTransitions>true</AllowScreenEdgeTransitions> <RememberScreenEdgeTransitionChoice>false</RememberScreenEdgeTransitionChoice> <ListenPort>31234</ListenPort> <PreferredNetwork/> <HideWarnings> <NoSystemResponse>PromptUser</NoSystemResponse> <OlderVersion>false</OlderVersion> <ClipboardPasteError>false</ClipboardPasteError> <SystemAvailable>false</SystemAvailable> <SystemUnavailable>false</SystemUnavailable> <RemoteFileOpened>false</RemoteFileOpened> </HideWarnings> <InfoWindow show="false"/> </GlobalPrefs> ...

The majority of settings are straightforward. A couple to be aware of:

PreferredNetwork

The preferred network tag can be empty (as in the example above), which indicates that no preferred network is set, or it can follow this form to define the network/mask (which must match one of the network interfaces on the computer):

<PreferredNetwork mask="255.255.255.0">10.0.0.0</PreferredNetwork>

NoSystemResponse

Valid values for the NoSystemResponse tag are

3.2 Security

The Security section covers access control, encryption and directive response settings. The settings are analogues to those found under the "Security" tab within the application. A description of these settings can be found here.

... <Security> <AccessControl type="AuthorisedComputers"> <HostnameOrIP>bob</HostnameOrIP> <HostnameOrIP>10.0.0.11</HostnameOrIP> </AccessControl> <SynchroniseLockWithDirector>false</SynchroniseLockWithDirector> <KeepSystemAwakeWhilstIDActive>false</KeepSystemAwakeWhilstIDActive> <DirectedShutdownMode>Shutdown</DirectedShutdownMode> <AdminOnlyChanges>false</AdminOnlyChanges> <Encryption type="AES256"> <EncryptionBinaryKey check="51">qEVxOUtemf5wquOeziX4RKy6+DR54n85owcy4JKxlnc=</EncryptionBinaryKey> </Encryption> </Security> ...

AccessControl

The Access Control tag can take one of three forms:

Encryption

Information on the Encryption tag can be found here.

3.3 DirectorPrefs

The DirectorPrefs tag defines settings used when a system is acting as a director and controlling other systems. These settings are analogous to those found under the "Director Preferences" tab within the application. A description of these settings can be found here.

... <DirectorPrefs> <CursorWrapAround>false</CursorWrapAround> <SetClientSystemsToSkipOnStartup>true</SetClientSystemsToSkipOnStartup> <KeyboardMousePrefs> <UseDirectorSystemMousePrefs>true</UseDirectorSystemMousePrefs> <UseDirectorSystemKeybdPrefs>false</UseDirectorSystemKeybdPrefs> <KeyBdLEDsReflectDirectedSystem>true</KeyBdLEDsReflectDirectedSystem> <CtrlAltDelHotkey> <Key key="LeftCtrl"/> <Key key="LeftAlt"/> <Key key="Insert"/> </CtrlAltDelHotkey> <LockWindowsHotkey> <Key key="LeftCtrl"/> <Key key="LeftWin"/> <Key key="L"/> </LockWindowsHotkey> </KeyboardMousePrefs> <Transition type="Immediate" NoTransitionsInScreenCorners="false" NoTransitionsIfFullScreenAppActive="true"> <TransitionHeldKeys/> <MoveSystemToLeftHotkey> <Key key="LeftCtrl"/> <Key key="LeftAlt"/> <Key key="LeftArrow"/> </MoveSystemToLeftHotkey> <MoveSystemToRightHotkey> <Key key="LeftCtrl"/> <Key key="LeftAlt"/> <Key key="RightArrow"/> </MoveSystemToRightHotkey> <MoveSystemAboveHotkey/> <MoveSystemBelowHotkey/> <CycleToNextSystemHotkey/> <ScreenedgeControl mode="SeparateHotkeys"> <EnableHotkey/> <DisableHotkey/> </ScreenedgeControl> </Transition> <MirrorControl type="KeyboardAndMouse"> <Hotkey/> </MirrorControl> <Advanced> <UseReliableCommsMode>false</UseReliableCommsMode> <SystemResponseWaitTime>2</SystemResponseWaitTime> <CursorToDirectorIdleTimeout>0</CursorToDirectorIdleTimeout> <AutoUpdateSystemsAvailabilityStatus>true</AutoUpdateSystemsAvailabilityStatus> <UseCachedIPAddresses>true</UseCachedIPAddresses> <FrequencyToCheckSystemsAvailable>0</FrequencyToCheckSystemsAvailable> <AllowSynthesisedInput>false</AllowSynthesisedInput> <RescanSystemsWhenWoken>true</RescanSystemsWhenWoken> <WakeOnLanSystemsOnStart>true</WakeOnLanSystemsOnStart> <NetworkSendFrequency>0</NetworkSendFrequency> <RescanSystemsHotkey> <Key key="LeftCtrl"/> <Key key="LeftWin"/> <Key key="R"/> </RescanSystemsHotkey> </Advanced> </DirectorPrefs> ...

The majority of settings are either true/false or numerical. There are a couple of exceptions:

Hotkeys

There are several different hotkeys that can be defined under DirectorPrefs. A hotkey must be one or more Key tags. This defines the combination of keys that must be simulateously depressed to trigger it. Information on setting the Key tag can be found here.

Transition

The Transition tag has a type attribute, which must be one of the following values: When using DoubleTap or Linger, a time attribute can be included. In the case of DoubleTap, this element represents the amount of time the double tap must occur within to be recognised. For Linger, the element is the amount of time the cursor must be left at the edge of the screen to trigger a transition. For example:
<Transition type="DoubleTap" NoTransitionsInScreenCorners="false" time="600">

MirrorControl

The MirrorControl tag has a type attribute, which must be one of the following values:

3.4 Configuration

3.4.1 Systems

The Systems tag holds definitions for all the client systems that can be controlled by this system, and includes the details about the layout of all systems monitors.

For example:
... <Systems> <DirectorMonitorLayout> <Monitor left="18" top="0" right="36" bottom="11"/> </DirectorMonitorLayout> <Client host="bob" port="31234"> <MonitorLayout> <Monitor left="36" top="0" right="54" bottom="11"/> </MonitorLayout> </Client> <Client host="jane" port="31234"> <MonitorLayout> <Monitor left="0" top="11" right="18" bottom="22"/> <Monitor left="0" top="0" right="18" bottom="11"/> </MonitorLayout> </Client> </Systems> ...

Sitting under the Systems tag is a DirectorMonitorLayout tag used to define the number and layout of the director system's monitors, and 0 to many Client tags.

Monitor Layout

The MonitorLayout/DirectorMonitorLayout tag consists of 1 or more Monitor tags. Each Monitor tag has four attributes - top, left, bottom, right to specify the location of that monitor. The monitor unit-of-measurement is roughly 1-inch, though it's better to think of monitor positioning and sizing as relative to each rather than in terms of absolute co-ordinates. Using the example above, there are 3 systems (Director, Bob and Jane). The Director and Bob have one monitor each, and Jane has two.

A valid configuration must meet 2 criteria:

Client

A Client tag consists of a MonitorLayout, an optional Hotkey and an optional Encryption tag.

3.4.2 Bindings

Bindings is an optional tag that is used to define the Director bindings. Sitting directly under it can be 0 to many Binding tags:

... <Bindings> <Binding> <SourceTrigger type="Key" key="VolumeUp"/> <TargetOutput type="Key" key="VolumeUp"/> <Target type="Client">Bob</Target> </Binding> <Binding> <SourceTrigger type="Key" key="VolumeDown"/> <TargetOutput type="Key" key="VolumeDown"/> <Target type="Client">Bob</Target> </Binding> <Binding> <SourceTrigger type="SBButton" /> <TargetOutput type="LMButton" /> <Target type="Director"/> </Binding> </Bindings> ...

Each Binding includes 3 mandatory tags: SourceTrigger, TargetOutput and Target.

SourceTrigger and TargetOutput

The SourceTrigger and TargetOutput tags include a type attribute that defines the input type and must be one of these values: If the type is set to Key, then the tag must also include a key attribute that matches a valid value as defined here.

Target

The Target tag has a type attribute, which must be one of the following values: If the type is set to Client, then the value of the Target tag must be the client system's hostname, as per the example above.

3.4.3 Macros

Macros is an optional tag that is used to define the Director macros. Sitting directly under it can be 0 to many Macro tags:

... <Macros> <Macro> <Description></Description> <Target type="Client">Bob</Target> <Hotkey> <Key key="F12"/> <Key key="LeftCtrl"/> <Key key="LeftAlt"/> </Hotkey> <Steps pause="false"> <Step type="Key" key="LeftWin" state="Down"/> <Step type="Key" key="R"/> <Step type="Key" key="LeftWin" state="Up"/> <Step type="Key" key="C"/> <Step type="Key" key="M"/> <Step type="Key" key="D"/> <Step type="Key" key="Enter"/> </Steps> </Macro> <Macro> <Description>Lock the system screens except for the one with focus</Description> <Target type="AllButCurrent"/> <Hotkey> <Key key="L"/> <Key key="LeftCtrl"/> <Key key="LeftAlt"/> </Hotkey> <Steps pause="false"> <Step type="Lockscreen"/> </Steps> </Macro> </Macros> ...

Each Macro includes 4 mandatory tags: Description, Target, Hotkey and Steps.

Target

The Target tag has a type attribute, which must be one of the following values: If the type is set to Client, then the value of the Target tag must be the client system's hostname, as per the example above.

Hotkey

The hotkey must be one or more Key tags. This defines the combination of keys that must be simulateously depressed to trigger the macro. Information on setting the Key tag can be found here.

Steps

The Steps tag contains 1 or more Step tags. These represent the sequence of actions played by Input Director when the macro is triggered. Each Step tag has a type attribute, which must be one of the following values:

When setting type="Key", there must also be a key attribute included. Valid values for the key attribute are defined here. An optional state attribute can also be included. This can be set either to "Down" or "Up". Without this attribute, Input Director will simulate pressing the specified key down and then simulate releasing it. The state attribute restricts the action to either pressing or releasing the key.

3.4 Key Definitions

Input Director configuration needs to refer to keyboard keys when defining macros, hotkeys and bindings. As such, the attribute key="name of key" is standardised and used in a number of different tags across the configuration.

For example, the hotkey to simulate a ctrl-alt-delete (located under DirectorPrefs) is:
... <CtrlAltDelHotkey> <Key key="Insert"/> <Key key="LeftCtrl"/> <Key key="LeftAlt"/> </CtrlAltDelHotkey> ...

Valid key attribute values

CtrlBrk BckSpce Tab Clear Enter Pause CapsLock Esc SpaceBar PgUp PgDn End
Home LeftArrow UpArrow RightArrow DownArrow Select Print Execute PrintScr Insert Delete Help
0 1 2 3 4 5 6 7 8 9 A B
C D E F G H I J K L M N
O P Q R S T U V W X Y Z
LeftWin RightWin Apps CompSleep Keypad0 Keypad1 Keypad2 Keypad3 Keypad4 Keypad5 Keypad6 Keypad7
Keypad8 Keypad9 Keypad* Keypad+ KeypadSep Keypad- Keypad. Keypad/ F1 F2 F3 F4
F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16
F17 F18 F19 F20 F21 F22 F23 F24 Numlock Scrolllock Keypad= LeftShift
RightShift LeftCtrl RightCtrl LeftAlt RightAlt BrowserBack BrowserForward BrowserRefresh BrowserStop BrowserSearch BrowserFavorites BrowserStart
VolumeMute VolumeDown VolumeUp NextTrack PrevTrack StopMedia PlayPause Mail SelectMedia StartApp1 StartApp2 ;
= , - . / BackQuote [ \ ] Apostrophe BackSlash Process
Attn CrSel ExSel EraseEOF Play Zoom PA1 Clear

These keys represent physical keyboard keys, not characters (hence characters produced by holding down the shift key aren't represented).

3.5 Encryption

The Encryption tag is used when defining client systems under the Systems tag and also as part of Security. It can take one of these forms:

Encryption Type

The type attribute on the Encryption tag can be one of these values:

Plaintext and Binary Keys

The shared secret can be provided either as a binary key (an "EncryptionBinaryKey" tag) or as plaintext (a "plaintextkey" tag). When passwords are keyed into the Input Director application, they are stored and used in a scrambled (hashed) form. As such, an exported configuration file can only include the hashed form of a key and uses the binary format. This format isn't user friendly when supplying a new password as part of a configuration file. For these instances, the plaintext tag can be supplied instead.

shopify
analytics tool