mirror of https://github.com/inolen/redream.git
fix scaling of trigger inputs broken by recent sdl host update
This commit is contained in:
parent
94a42ec0c2
commit
0c1c3b6cb7
|
@ -43,23 +43,30 @@ static int controller_input(struct maple_device *dev, int button,
|
||||||
int16_t value) {
|
int16_t value) {
|
||||||
struct controller *ctrl = (struct controller *)dev;
|
struct controller *ctrl = (struct controller *)dev;
|
||||||
|
|
||||||
/* scale incoming int16_t -> uint8_t */
|
|
||||||
uint8_t scaled = ((int32_t)value - INT16_MIN) >> 8;
|
|
||||||
|
|
||||||
if (button <= CONT_DPAD2_RIGHT) {
|
if (button <= CONT_DPAD2_RIGHT) {
|
||||||
if (value > 0) {
|
if (value > 0) {
|
||||||
ctrl->cnd.buttons &= ~(1 << button);
|
ctrl->cnd.buttons &= ~(1 << button);
|
||||||
} else {
|
} else {
|
||||||
ctrl->cnd.buttons |= (1 << button);
|
ctrl->cnd.buttons |= (1 << button);
|
||||||
}
|
}
|
||||||
} else if (button == CONT_JOYX) {
|
} else if (button == CONT_JOYX || button == CONT_JOYX) {
|
||||||
ctrl->cnd.joyx = scaled;
|
/* scale value from [INT16_MIN, INT16_MAX] to [0, UINT8_MAX] */
|
||||||
} else if (button == CONT_JOYY) {
|
uint8_t scaled = ((int32_t)value - INT16_MIN) >> 8;
|
||||||
ctrl->cnd.joyy = scaled;
|
|
||||||
} else if (button == CONT_LTRIG) {
|
if (button == CONT_JOYX) {
|
||||||
ctrl->cnd.ltrig = scaled;
|
ctrl->cnd.joyx = scaled;
|
||||||
} else if (button == CONT_RTRIG) {
|
} else {
|
||||||
ctrl->cnd.rtrig = scaled;
|
ctrl->cnd.joyy = scaled;
|
||||||
|
}
|
||||||
|
} else if (button == CONT_LTRIG || button == CONT_RTRIG) {
|
||||||
|
/* scale value from [0, INT16_MAX] to [0, UINT8_MAX] */
|
||||||
|
uint8_t scaled = (int32_t)value >> 7;
|
||||||
|
|
||||||
|
if (button == CONT_LTRIG) {
|
||||||
|
ctrl->cnd.ltrig = scaled;
|
||||||
|
} else {
|
||||||
|
ctrl->cnd.rtrig = scaled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
or KEY_UP constant, and for analog inputs is in the range of INT16_MIN to
|
or KEY_UP constant, and for analog inputs is in the range of INT16_MIN to
|
||||||
INT16_MAX */
|
INT16_MAX */
|
||||||
#define KEY_DOWN INT16_MAX
|
#define KEY_DOWN INT16_MAX
|
||||||
#define KEY_UP INT16_MIN
|
#define KEY_UP 0
|
||||||
|
|
||||||
enum keycode {
|
enum keycode {
|
||||||
K_UNKNOWN,
|
K_UNKNOWN,
|
||||||
|
|
Loading…
Reference in New Issue