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 of a slave system configuration.

Click here to see an example of a master system configuration.

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="1.0"> <GlobalPrefs> <AdminOnlyChanges>true</AdminOnlyChanges> </GlobalPrefs> </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", "MasterConfiguration" and "SlaveConfiguration". Each of these sections reflect the same configuration settings found on the Input Director user interface (with MasterConfiguration encapsulating the defined slave systems, master preferences, hotkeys and macros).

The following sections describe the three groups of configuration settings.

3.1 GlobalPrefs

The Global Preference settings consists of configuration common across a system regardless of whether it's set as a master system or slave system. 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> <StartupForAllUsers>true</StartupForAllUsers> <StartupMode>Master</StartupMode> <ShareClipboard excludeDefaultShares="true">true</ShareClipboard> <CursorWaterRipple>true</CursorWaterRipple> <CenterCursorOnHotkeySwitch>true</CenterCursorOnHotkeySwitch> <AdminOnlyChanges>false</AdminOnlyChanges> <AllowScreenEdgeTransitions>true</AllowScreenEdgeTransitions> <RememberScreenEdgeTransitionChoice>false</RememberScreenEdgeTransitionChoice> <ListenPort>31234</ListenPort> <PreferredNetwork/> <AutoSwitchRole>false</AutoSwitchRole> <HideWarnings> <NoSlaveResponse>InformAndSkip</NoSlaveResponse> <OlderVersion>false</OlderVersion> <ClipboardPasteError>false</ClipboardPasteError> <SlaveAvailable>false</SlaveAvailable> <SlaveUnavailable>false</SlaveUnavailable> <AutoRoleSwitched>false</AutoRoleSwitched> <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>

NoSlaveResponse

Valid values for the NoSlaveResponse tag are

3.2 MasterConfiguration

3.3.1 Slaves

The Slaves tag holds definitions for all the slave systems that can be controlled by this master, and includes the details about the layout of both master and slave systems monitors.

For example:
... <Slaves> <MasterMonitorLayout> <Monitor col="2" row="1"/> </MasterMonitorLayout> <Slave host="Bob" port="31234"> <MonitorLayout> <Monitor col="3" row="1"/> </MonitorLayout> <Encryption type="AES256"> <EncryptionBinaryKey check="185">bS3r0kmoZs8NGSdCYMcBK1JyWkBIB9yMXvfobQDOjAM=</EncryptionBinaryKey> </Encryption> </Slave> <Slave host="Jane" port="31234" macaddress="80:ad:08:76:0e:56"> <Hotkey> <Key key="F12"/> <Key key="RightCtrl"/> </Hotkey> <MonitorLayout> <Monitor col="1" row="1"/> <Monitor col="1" row="2"/> </MonitorLayout> </Slave> </Slaves> ...

Sitting under the Slaves tag is a MasterMonitorLayout tag used to define the number and layout of the master system's monitors, and 0 to many Slave tags.

Monitor Layout

Input Director uses a grid to represent the physical positions of all systems monitors. Using the example above, there are 3 systems (Master, Bob and Jane). The Master system and Bob have one monitor each, and Jane has two.

A valid configuration must meet 2 criteria:

Using the example above, the monitors are laid out like so:

Columns
1 2 3
Rows 1 Jane Master Bob
2 Jane

Monitor Layout

The MonitorLayout/MasterMonitorLayout tag consists of 1 or more Monitor tags. Each Monitor tag has two attributes - col and row to specify the location of that monitor on the grid.

Slave

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

3.3.2 MasterPrefs

The MasterPrefs tag defines settings used when a system is running in master mode. These settings are analogous to those found under the "Master Preferences" tab within the application. A description of these settings can be found here.

... <MasterPrefs> <CursorWrapAround>false</CursorWrapAround> <SetSlavesToSkipOnStartup>true</SetSlavesToSkipOnStartup> <KeyboardMousePrefs> <UseMasterSystemMousePrefs>true</UseMasterSystemMousePrefs> <UseMasterSystemKeybdPrefs>false</UseMasterSystemKeybdPrefs> <KeyBdLEDsReflectDirectedSystem>true</KeyBdLEDsReflectDirectedSystem> <CtrlAltDelHotkey> <Key key="Insert"/> <Key key="LeftCtrl"/> <Key key="LeftAlt"/> </CtrlAltDelHotkey> <LockWindowsHotkey> <Key key="L"/> <Key key="LeftWin"/> <Key key="LeftCtrl"/> </LockWindowsHotkey> </KeyboardMousePrefs> <Transition type="Immediate" NoTransitionsInScreenCorners="false"> <TransitionHeldKeys/> <MoveSystemToLeftHotkey/> <MoveSystemToRightHotkey/> <MoveSystemAboveHotkey/> <MoveSystemBelowHotkey/> <CycleToNextSystemHotkey/> <ScreenedgeControl mode="Toggle"> <ToggleHotkey> <Key key="D"/> <Key key="LeftShift"/> <Key key="LeftCtrl"/> </ToggleHotkey> </ScreenedgeControl> </Transition> <MirrorControl type="KeyboardAndMouse"> <Hotkey> <Key key="M"/> <Key key="LeftWin"/> <Key key="LeftCtrl"/> </Hotkey> </MirrorControl> <Advanced> <UseReliableCommsMode>false</UseReliableCommsMode> <SlaveResponseWaitTime>2</SlaveResponseWaitTime> <CursorToMasterIdleTimeout>0</CursorToMasterIdleTimeout> <AutoUpdateSlaveAvailabilityStatus>true</AutoUpdateSlaveAvailabilityStatus> <UseSlaveCachedIPAddresses>true</UseSlaveCachedIPAddresses> <FrequencyToCheckSlavesAvailable>0</FrequencyToCheckSlavesAvailable> <LogitechKeyboardCompatMode>false</LogitechKeyboardCompatMode> <RescanSlavesWhenWoken>true</RescanSlavesWhenWoken> <WakeOnLanSlavesOnStart>true</WakeOnLanSlavesOnStart> <RescanSlavesHotkey/> </Advanced> </MasterPrefs> ...

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 MasterPrefs. 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.3.3 Keybindings

Keybindings is an optional tag that is used to define the Master system's keybindings. Sitting directly under it can be 0 to many KeyBinding tags:

... <KeyBindings> <KeyBinding> <SourceKey key="VolumeUp"/> <TargetKey key="VolumeUp"/> <Target type="Slave">Bob</Target> </KeyBinding> <KeyBinding> <SourceKey key="VolumeDown"/> <TargetKey key="VolumeDown"/> <Target type="Slave">Bob</Target> </KeyBinding> <KeyBinding> <SourceKey key="RightAlt"/> <TargetKey key="RightAlt"/> <Target type="Master"/> </KeyBinding> </KeyBindings> ...

Each KeyBinding includes 3 mandatory tags: SourceKey, TargetKey and Target.

SourceKey and TargetKey

The SourceKey and TargetKey tags must 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 the Slave, then the value of the Target tag must be the slave system's hostname, as per the example above.

3.3.4 Macros

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

... <Macros> <Macro> <Description></Description> <Target type="Slave">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 the Slave, then the value of the Target tag must be the slave 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.3 SlaveConfiguration

The Slave Configuration section covers settings used when a system is running in slave mode. The settings are analogues to those found under the "Slave Configuration" tab within the application. A description of these settings can be found here.

... <SlaveConfiguration> <MasterAccessControl type="AuthorisedComputers"> <HostnameOrIP>somehostname</HostnameOrIP> <HostnameOrIP>10.0.0.11</HostnameOrIP> </MasterAccessControl> <SynchroniseLockWithMaster>false</SynchroniseLockWithMaster> <KeepSystemAwakeWhilstIDActive>true</KeepSystemAwakeWhilstIDActive> <MasterDirectedShutdownMode>DoNothing</MasterDirectedShutdownMode> <HideCursor>true</HideCursor> <Encryption type="AES192"> <EncryptionBinaryKey check="103">n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=</EncryptionBinaryKey> </Encryption> </SlaveConfiguration> ...

MasterAccessControl

The Master Access Control tag can take one of three forms:

Encryption

Information on the Encryption tag can be found here.

3.4 Key Definitions

Input Director configuration needs to refer to keyboard keys when defining macros, hotkeys and keybindings. 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 MasterPrefs, which is part of MasterConfiguration) 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 slave systems under the MasterConfiguration tag and also as part of the SlaveConfiguration. It can take one of three 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