123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- #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
|