Response Curve in DevCfg appllied incorrectly
Posted: Thu Jul 12, 2018 7:44
Gladiator Pro MKII with MCG
Firmware v1.94B
VKBDevCfg 0.87.0.5
So one problem let to the discovery of another. My left thumbstick scrapes the edge of the circle (not the mostly-square box) at the top right and bottom left positions. This means it doesn't quite get 100% of each axis at those positions. A deadzone of about 15% solves that. Looking at the stick it is only about 0.5mm left of center, which would explain how it travels further to the right before hitting the square stop giving it a greater "tilt" and causing contact on the circular edge. That is a really tight tolerance, so I can't see that being fixed, at least not by me unless I want to sand off some of the cap. Anyway, not a big deal, I can live with that.
This however led to another problem. Using a response curve (in VKB software), the corners get REALLY screwed up. The problem is, the response curve correction should be the LAST thing applied to the axis value, but instead it is the first.
This is an example of what I believe is happening...
With no curve:
- Physical axis value = 90%
- 90% is given to the Logical axis
- Deadzone is 10% so full range = 0% to 90%
- 0.90/0.90=100%
- Logical axis value sent to Windows/Game = 100%
- All is well
With a curve applied:
- Physical axis value = 90%
- Response Curve is applied and determines that 90%=80% corrected
- 80% is given to the Logical axis
- Deadzone is 10% so full range = 0% to 90%
- 0.80/0.90=88.8%
- Logical axis value sent to Windows/Game = 88.8%
- Lost 11.2% of axis travel
What SHOULD happen with a curve:
- Physical axis value = 90%
- 90% is given to the Logical axis
- Deadzone is 10% so full range = 0% to 90%
- 0.90/0.90=100%
- Response Curve is applied and determines that 100%=100% corrected
- Logical axis value sent to Windows/Game = 100%
- Get full axis range as intended
So basically, the deadzone and response curves are in the wrong place. The deadzone should be applied on the Physical axis, and the response curve should be applied to the Logical axis. Or if both are on the Logical, deadzone should be performed before the curve.
Firmware v1.94B
VKBDevCfg 0.87.0.5
So one problem let to the discovery of another. My left thumbstick scrapes the edge of the circle (not the mostly-square box) at the top right and bottom left positions. This means it doesn't quite get 100% of each axis at those positions. A deadzone of about 15% solves that. Looking at the stick it is only about 0.5mm left of center, which would explain how it travels further to the right before hitting the square stop giving it a greater "tilt" and causing contact on the circular edge. That is a really tight tolerance, so I can't see that being fixed, at least not by me unless I want to sand off some of the cap. Anyway, not a big deal, I can live with that.
This however led to another problem. Using a response curve (in VKB software), the corners get REALLY screwed up. The problem is, the response curve correction should be the LAST thing applied to the axis value, but instead it is the first.
This is an example of what I believe is happening...
With no curve:
- Physical axis value = 90%
- 90% is given to the Logical axis
- Deadzone is 10% so full range = 0% to 90%
- 0.90/0.90=100%
- Logical axis value sent to Windows/Game = 100%
- All is well
With a curve applied:
- Physical axis value = 90%
- Response Curve is applied and determines that 90%=80% corrected
- 80% is given to the Logical axis
- Deadzone is 10% so full range = 0% to 90%
- 0.80/0.90=88.8%
- Logical axis value sent to Windows/Game = 88.8%
- Lost 11.2% of axis travel
What SHOULD happen with a curve:
- Physical axis value = 90%
- 90% is given to the Logical axis
- Deadzone is 10% so full range = 0% to 90%
- 0.90/0.90=100%
- Response Curve is applied and determines that 100%=100% corrected
- Logical axis value sent to Windows/Game = 100%
- Get full axis range as intended
So basically, the deadzone and response curves are in the wrong place. The deadzone should be applied on the Physical axis, and the response curve should be applied to the Logical axis. Or if both are on the Logical, deadzone should be performed before the curve.