@Jason Melancon Your implementation of UnityAxis compresses the axes into the range [1, 32767] rather than [0, 32767]. This is fine for joysticks, but when you're doing HOTAS or trying to use the slider on a T16000m to control throttle, this means KSP never gets a throttle value of 0 and never actually shuts off the engines. The resulting thrust is tiny but nonzero, which disallows time-warp and messes up finicky maneuvers. The following implementation of UnityAxis corrects this issue:
short UnityAxis (short TARGETAxis) {
/* Move the value entirely into the positive domain */
int intermediate = TARGETAxis;
intermediate = intermediate + 0x8000;
/* And then divide by two and truncate */
return intermediate / 2;
}
Thanks for the code spelunking that was necessary to address this problem!