After 7 years waiting, more then 2000 feedback votes, its good that something happen, but this 1man 1month work you expose is barely enough or simple if someone check public roadmap such important thing "In-progress, timelines long or uncertain”. Although you said, Unity will,I feel so much reluctance about changes, need to be done in C++ side, especially EXPOSING LOW LEVEL TO C# API, make input system developer as myself to solution to marshall OS C++ in C#. For example to achieve capture of device connect and disconnect, you already, at least on high level, have covered in proposed API. (btw you can simulate with Input.GetJoystickNames() until you don’t have 2 devices with same name) Two main points. 1)As Customer I need to remap and/or set InputManager.asset settings like sensitivity or gravity, and SAVE!. As far I can see proposed API can runtime remap but can’t save it. What you have in mind? PlayerPrefs? 2)As Developer I want to connect device, create profile and map to actions by MOVING, CLICKING(long,double…)or combine Have current system have plans to support COMBOS and EDITOR MODE device mapping?, instead of huge 10 screens popup to map keyboard key. I like ActionMapInput generator so you have intellisense in code, but it is boilerplate if you expect to use Code (CSharp): if(ActionMapInput.isHeld) //do something , ActionMapInput.isHeldUnityEvent so I can in editor subscribe handler to do something. EDITOR SUBSCRIPTION TO ACTIONS BASED ON UNITY EVENTS! Device profiles defently shouldn’t be HARDCODED but ASSETS with just data not creating device instances (new GamePad()) use PID It would be good as to have Code (CSharp): public class AnimationCurveControl : InputControl , which no matter actual input is discreet or analog will calculate some value according to curve. You need to track also connected device “PORT”, so if user change the device port not need to reassign. I hope the below code won’t be HardCoded so for example I won’t include (mouse in mobile dev target) Code (CSharp): go.AddComponent<JoystickInputToEvents>(); go.AddComponent<MouseInputToEvents>(); go.AddComponent<KeyboardInputToEvents>(); go.AddComponent<TouchInputToEvents>(); go.AddComponent<ExecuteAllEvents>(); I would be able to support any device ur C++ won’t support, but just adding go.AddComponent<WiiInputToEvents>(); and the rest would work. Put the code on GITHUB we can track changes and progress.