IndieGame/client/Packages/com.unity.inputsystem@1.7.0/InputSystem/Plugins/Linux/LinuxSupport.cs

147 lines
3.1 KiB
C#
Raw Normal View History

2024-10-11 10:12:15 +08:00
#if UNITY_EDITOR || UNITY_STANDALONE_LINUX
using System;
namespace UnityEngine.InputSystem.Linux
{
// These structures are not explicitly assigned, but they are filled in via JSON serialization coming from matching structs in native.
#pragma warning disable 0649
internal enum JoystickFeatureType
{
Invalid = 0,
Axis,
Ball,
Button,
Hat,
Max
}
internal enum SDLAxisUsage
{
Unknown = 0,
X,
Y,
Z,
RotateX,
RotateY,
RotateZ,
Throttle,
Rudder,
Wheel,
Gas,
Brake,
Hat0X,
Hat0Y,
Hat1X,
Hat1Y,
Hat2X,
Hat2Y,
Hat3X,
Hat3Y,
Count
}
internal enum SDLButtonUsage
{
Unknown = 0,
Trigger,
Thumb,
Thumb2,
Top,
Top2,
Pinkie,
Base,
Base2,
Base3,
Base4,
Base5,
Base6,
Dead,
A,
B,
X,
Y,
Z,
TriggerLeft,
TriggerRight,
TriggerLeft2,
TriggerRight2,
Select,
Start,
Mode,
ThumbLeft,
ThumbRight,
Count
}
// JSON must match JoystickFeatureDefinition in native.
[Serializable]
internal struct SDLFeatureDescriptor
{
public JoystickFeatureType featureType;
public int usageHint;
public int featureSize;
public int offset;
public int bit;
public int min;
public int max;
}
[Serializable]
internal class SDLDeviceDescriptor
{
public SDLFeatureDescriptor[] controls;
internal string ToJson()
{
return JsonUtility.ToJson(this);
}
internal static SDLDeviceDescriptor FromJson(string json)
{
return JsonUtility.FromJson<SDLDeviceDescriptor>(json);
}
}
#pragma warning restore 0649
/// <summary>
/// A small helper class to aid in initializing and registering SDL devices and layout builders.
/// </summary>
#if UNITY_DISABLE_DEFAULT_INPUT_PLUGIN_INITIALIZATION
public
#else
internal
#endif
static class LinuxSupport
{
/// <summary>
/// The current interface code sent with devices to identify as Linux SDL devices.
/// </summary>
internal const string kInterfaceName = "Linux";
public static string GetAxisNameFromUsage(SDLAxisUsage usage)
{
return Enum.GetName(typeof(SDLAxisUsage), usage);
}
public static string GetButtonNameFromUsage(SDLButtonUsage usage)
{
return Enum.GetName(typeof(SDLButtonUsage), usage);
}
/// <summary>
/// Registers all initial templates and the generalized layout builder with the InputSystem.
/// </summary>
public static void Initialize()
{
InputSystem.onFindLayoutForDevice += SDLLayoutBuilder.OnFindLayoutForDevice;
}
}
}
#endif // UNITY_EDITOR || UNITY_STANDALONE_LINUX