Documentation
Control Bindings

Bindings FAQ

How can I detect whether keyboard or controller input was used on bindings?

There is a LastInputType property on both PlayerActionSet and PlayerAction which you can query for this purpose. It returns one of the BindingSourceType enum:

if (actions.LastInputType == BindingSourceType.KeyBindingSource)
{
	ShowKeyboardControls();
}
else
if (actions.LastInputType == BindingSourceType.DeviceBindingSource)
{
	ShowControllerControls();
}

Additionally PlayerActionSet and PlayerAction also have an event callback you can use if you only want to be notified when it changes:

public event Action<BindingSourceType> OnLastInputTypeChanged;

How can I get to the actual keys on a keyboard binding?

foreach (var binding in action.Bindings)
{
	var keyBindingSource = binding as KeyBindingSource;
	if (keyBindingSource != null)
	{
		var keyCombo = keyBindingSource.Control;
		for (var keyIndex = 0; keyIndex < keyCombo.IncludeCount; keyIndex++)
		{
			var key = keyCombo.GetInclude( keyIndex ); // returns enum Key
			var keyName = InputManager.KeyboardProvider.GetNameForKey( key );
			Debug.Log( keyName );
		}
	}
}