Class InputActionsJSONKeys
The member names used by Unity's input action asset format, and the order in which Unity emits them.
Inherited Members
Namespace: Scylla.Input
Assembly: ScyllaInput.dll
Syntax
public static class InputActionsJSONKeys
Remarks
Order matters. Unity derives it from the field declaration order of the private serialization structs in the Input System package, and reproducing it is what allows a newly authored asset to be byte-identical to one Unity would have written. An asset parsed from disk keeps whatever order it arrived in, so these arrays are consulted only when building nodes from scratch.
One ordering is genuinely surprising and worth stating plainly: a binding lists
interactions before processors, while an action lists
processors before interactions. The two are reversed with respect to
each other. Nothing enforces this at compile time and getting it wrong produces a
file that is valid, loads correctly, and differs from Unity's output.
Fields
ACTION
Owning action name. Bindings reference their action by name, not by GUID.
Declaration
public const string ACTION = "action"
Field Value
| Type | Description |
|---|---|
| string |
ACTIONS
The action array on a map.
Declaration
public const string ACTIONS = "actions"
Field Value
| Type | Description |
|---|---|
| string |
ACTION_ORDER
Member order Unity emits for an action.
Declaration
public static readonly string[] ACTION_ORDER
Field Value
| Type | Description |
|---|---|
| string[] |
BINDINGS
The binding array on a map. Bindings are stored on the map, not the action.
Declaration
public const string BINDINGS = "bindings"
Field Value
| Type | Description |
|---|---|
| string |
BINDING_GROUP
The binding group a control scheme owns. Often, but not always, equal to its name.
Declaration
public const string BINDING_GROUP = "bindingGroup"
Field Value
| Type | Description |
|---|---|
| string |
BINDING_ORDER
Member order Unity emits for a binding. Note INTERACTIONS precedes PROCESSORS here, the reverse of ACTION_ORDER.
Declaration
public static readonly string[] BINDING_ORDER
Field Value
| Type | Description |
|---|---|
| string[] |
CONTROL_SCHEMES
The control scheme array.
Declaration
public const string CONTROL_SCHEMES = "controlSchemes"
Field Value
| Type | Description |
|---|---|
| string |
CONTROL_SCHEME_ORDER
Member order Unity emits for a control scheme.
Declaration
public static readonly string[] CONTROL_SCHEME_ORDER
Field Value
| Type | Description |
|---|---|
| string[] |
DEVICES
The device requirement array on a control scheme.
Declaration
public const string DEVICES = "devices"
Field Value
| Type | Description |
|---|---|
| string |
DEVICE_ORDER
Member order Unity emits for a control scheme device requirement.
Declaration
public static readonly string[] DEVICE_ORDER
Field Value
| Type | Description |
|---|---|
| string[] |
DEVICE_PATH
Device layout path, for example <Gamepad>.
Declaration
public const string DEVICE_PATH = "devicePath"
Field Value
| Type | Description |
|---|---|
| string |
EXPECTED_CONTROL_TYPE
Expected control layout, for example Vector2.
Declaration
public const string EXPECTED_CONTROL_TYPE = "expectedControlType"
Field Value
| Type | Description |
|---|---|
| string |
GROUPS
Semicolon-separated binding group names, matching control scheme binding groups.
Declaration
public const string GROUPS = "groups"
Field Value
| Type | Description |
|---|---|
| string |
ID
Stable GUID. Present on maps, actions and bindings, but not control schemes.
Declaration
public const string ID = "id"
Field Value
| Type | Description |
|---|---|
| string |
INITIAL_STATE_CHECK
Whether the action performs an initial state check when enabled.
Declaration
public const string INITIAL_STATE_CHECK = "initialStateCheck"
Field Value
| Type | Description |
|---|---|
| string |
INTERACTIONS
Semicolon-separated interaction list.
Declaration
public const string INTERACTIONS = "interactions"
Field Value
| Type | Description |
|---|---|
| string |
IS_COMPOSITE
Whether this binding is a composite head.
Declaration
public const string IS_COMPOSITE = "isComposite"
Field Value
| Type | Description |
|---|---|
| string |
IS_OPTIONAL
Whether the device requirement is optional.
Declaration
public const string IS_OPTIONAL = "isOptional"
Field Value
| Type | Description |
|---|---|
| string |
IS_OR
Whether the device requirement is OR-ed with the preceding one.
Declaration
public const string IS_OR = "isOR"
Field Value
| Type | Description |
|---|---|
| string |
IS_PART_OF_COMPOSITE
Whether this binding is a part of the preceding composite head.
Declaration
public const string IS_PART_OF_COMPOSITE = "isPartOfComposite"
Field Value
| Type | Description |
|---|---|
| string |
MAPS
The action map array.
Declaration
public const string MAPS = "maps"
Field Value
| Type | Description |
|---|---|
| string |
MAP_ORDER
Member order Unity emits for an action map.
Declaration
public static readonly string[] MAP_ORDER
Field Value
| Type | Description |
|---|---|
| string[] |
NAME
Element name. Present on maps, actions, bindings and control schemes.
Declaration
public const string NAME = "name"
Field Value
| Type | Description |
|---|---|
| string |
PATH
Control path, for example <Keyboard>/w, or a composite type name.
Declaration
public const string PATH = "path"
Field Value
| Type | Description |
|---|---|
| string |
PROCESSORS
Semicolon-separated processor list.
Declaration
public const string PROCESSORS = "processors"
Field Value
| Type | Description |
|---|---|
| string |
ROOT_ORDER
Member order Unity emits for the root object.
Declaration
public static readonly string[] ROOT_ORDER
Field Value
| Type | Description |
|---|---|
| string[] |
TYPE
Action type: Button, Value or PassThrough.
Declaration
public const string TYPE = "type"
Field Value
| Type | Description |
|---|---|
| string |
VERSION
Format version. The only numeric member anywhere in the format.
Declaration
public const string VERSION = "version"
Field Value
| Type | Description |
|---|---|
| string |
Methods
SetBoolOrdered(InputJSONNode, string[], string, bool)
Sets a boolean member at its schema position.
Declaration
public static void SetBoolOrdered(InputJSONNode node, string[] order, string key, bool value)
Parameters
| Type | Name | Description |
|---|---|---|
| InputJSONNode | node | The object node to write into. |
| string[] | order | The schema order. |
| string | key | The member name. |
| bool | value | The value. |
SetMemberOrdered(InputJSONNode, string[], string, InputJSONNode)
Sets a member, placing it at its schema position when it was not already present.
Declaration
public static void SetMemberOrdered(InputJSONNode node, string[] order, string key, InputJSONNode value)
Parameters
| Type | Name | Description |
|---|---|---|
| InputJSONNode | node | The object node to write into. |
| string[] | order | The schema order, for example ACTION_ORDER. |
| string | key | The member name. |
| InputJSONNode | value | The member value. |
Remarks
InputJSONNode.SetMember appends when the key is absent, which is correct for
a node type that knows nothing about this format. It is wrong for an asset: setting
expectedControlType on a hand-edited action that happens to lack it would put
the member after initialStateCheck, producing a file that loads correctly and
differs from Unity's output for no reason the reader can see.
The insertion point is the first existing member that the order array ranks after the new one. Members the array does not know about, which only appear in hand-authored files, rank last and are therefore inserted before rather than reordered. Nothing here moves a member that already exists: an asset parsed from disk keeps whatever order it arrived in, and quietly normalizing that would turn one edit into a whole-file diff.
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | Thrown when the node, the order, the key or the value is |
SetStringOrdered(InputJSONNode, string[], string, string)
Sets a string member at its schema position.
Declaration
public static void SetStringOrdered(InputJSONNode node, string[] order, string key, string value)
Parameters
| Type | Name | Description |
|---|---|---|
| InputJSONNode | node | The object node to write into. |
| string[] | order | The schema order. |
| string | key | The member name. |
| string | value | The value. |