From 6b97bf7a4eaa34ebde4ac7250f660da5bab8164d Mon Sep 17 00:00:00 2001 From: "Zephaniah E. Hull" Date: Wed, 6 Jun 2007 05:00:29 -0400 Subject: Handle default remapping around existing button targets better. --- src/evdev_btn.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/evdev_btn.c b/src/evdev_btn.c index 90f33b4..c03f879 100644 --- a/src/evdev_btn.c +++ b/src/evdev_btn.c @@ -362,7 +362,7 @@ EvdevBtnNew1(InputInfoRec *pInfo) evdevStateRec *state = &pEvdev->state; evdevBtnRec *btn = state->btn; char option[128], value[128]; - int i, b, j; + int i, b, j, target; if (!btn) return !Success; @@ -375,24 +375,32 @@ EvdevBtnNew1(InputInfoRec *pInfo) btn->real_buttons++; snprintf(option, sizeof(option), "Button%sMapTo", button_names[i]); + if (b >= BTN_DIGI && b < BTN_WHEEL) - snprintf (value, sizeof (value), "null"); + target = -1; else if (b == BTN_RIGHT) - snprintf (value, sizeof (value), "Button 3"); + target = 3; else if (b == BTN_MIDDLE) - snprintf (value, sizeof (value), "Button 2"); + target = 2; else if (b >= BTN_MOUSE && b < BTN_JOYSTICK) - snprintf (value, sizeof (value), "Button %d", 1 + i - (BTN_MOUSE - BTN_MISC)); + target = 1 + i - (BTN_MOUSE - BTN_MISC); else if (b >= BTN_MISC && b < BTN_MOUSE) - snprintf (value, sizeof (value), "Button %d", 1 + i + (BTN_MOUSE - BTN_MISC)); - else if (btn->b_flags[i] & EV_BTN_B_PRESENT) { - for (j = i; j < BTN_MAX; j++) + target = 1 + i + (BTN_MOUSE - BTN_MISC); + else + target = 1 + i; + + if (btn->b_flags[target] & EV_BTN_B_PRESENT) { + for (j = target; j < BTN_MAX; j++) if (!(btn->b_flags[j] & EV_BTN_B_PRESENT)) { - snprintf (value, sizeof (value), "Button %d", j + 1); + target = j; break; } - } else - snprintf (value, sizeof (value), "Button %d", i + 1); + } + + if (target > 0) + snprintf (value, sizeof (value), "Button %d", target); + else + snprintf (value, sizeof (value), "null"); EvdevParseMapOption (pInfo, option, value, &btn->b_map_data[i], &btn->b_map[i]); } -- cgit v1.2.1