Can't Normalize Diagonal Movement with Analog Input?

I recently switched the input actions mode from “Digital Normalized” to “Analog” so I could get more nuanced/sensitive input for my games controls. I like that it allows for a more dynamic range of movement and speed based on the movement of the stick. But since this input isn’t normalized, I’m now having issues with diagonal movement being too fast. Is there a workaround here that will allow me to effectively normalize diagonal movement speed without losing the other advantages of analog input? see code below

void FixedUpdate()
            Velocity = ActiveRB.velocity.magnitude;

            ActiveRB.AddForce(Activemovement * ActivemoveSpeed, ForceMode2D.Impulse);
//using "Activemovement.normalized" fixes the overly fast diagonal movement but kills the sensitivity of the control stick in allowing the player to change the speed of the rigidbody2d


The simplest adaptation for this is to check the magnitude of input and clamp it to a maximum length of 1.

if(analogInput.sqrMagnitude > 1.0f)

In general, this isn’t a bad solution as-is. However, it’s worth noting that the conversion process would potentially result in an uneven circle when the magnitude is greater than 1. A potential alternative can be found here (after a simple conversion from their Javascript example), in which the entire square of input is adapted to a circle.

Vector2 ai = analogInput;
analogInput.x *= Mathf.Sqrt(1f - (ai.y * ai.y / 2f));
analogInput.y *= Mathf.Sqrt(1f - (ai.x * ai.x / 2f));

There is value in noting, however, that all analog sticks aren’t the same quality.

I’ve used many (basically non-“name-brand” and I hate brand loyalty) controllers with especially crummy analog sticks (e.g. take a lot of pressure to move away from center (easy to overshoot), don’t register input (x>0) until 20% pressed, cap out (x=1) at 35% pressed, etc.).

I’ve also used plenty of controllers with good analog sticks (GameCube, XBox (various eras), Playstation (various eras), but generally only applicable to name-brand controllers). To note, even one that works well in all general-use cases may still be imperfect at extremes. I’ve used a controller with a great analog stick(s), except that the upper right corner would fall to a magnitude of ~1.03 (out of a max of ~1.414, or sqrt(2) ) when circling counter-clockwise.

Furthermore, a perfectly-calibrated controller would conceptually provide input capping out at a magnitude of 1 all the way around its physical range.

What I’m getting at, really, is that despite the second example being the more accurate conversion for a square input region, the first (while also being cheaper to calculate) is still probably the more appropriate choice in general terms.