int VControl_DumpGesture (char *buf, int n, VCONTROL_GESTURE *g) { switch (g->type) { case VCONTROL_KEY: return snprintf (buf, n, "key %s", VControl_code2name (g->gesture.key)); case VCONTROL_JOYAXIS: return snprintf (buf, n, "joystick %d axis %d %s", g->gesture.axis.port, g->gesture.axis.index, (g->gesture.axis.polarity > 0) ? "positive" : "negative"); case VCONTROL_JOYBUTTON: return snprintf (buf, n, "joystick %d button %d", g->gesture.button.port, g->gesture.button.index); case VCONTROL_JOYHAT: return snprintf (buf, n, "joystick %d hat %d %s", g->gesture.hat.port, g->gesture.hat.index, (g->gesture.hat.dir == SDL_HAT_UP) ? "up" : ((g->gesture.hat.dir == SDL_HAT_DOWN) ? "down" : ((g->gesture.hat.dir == SDL_HAT_LEFT) ? "left" : "right"))); default: buf[0] = '\0'; return 0; } }
void InterrogateInputState (int templat, int control, int index, char *buffer, int maxlen) { VCONTROL_GESTURE *g = CONTROL_PTR(templat, control, index); if (templat >= num_templ || control >= num_flight || index >= MAX_FLIGHT_ALTERNATES) { log_add (log_Warning, "InterrogateInputState(): invalid control index"); buffer[0] = 0; return; } switch (g->type) { case VCONTROL_KEY: snprintf (buffer, maxlen, "%s", VControl_code2name (g->gesture.key)); buffer[maxlen-1] = 0; break; case VCONTROL_JOYBUTTON: snprintf (buffer, maxlen, "[J%d B%d]", g->gesture.button.port, g->gesture.button.index + 1); buffer[maxlen-1] = 0; break; case VCONTROL_JOYAXIS: snprintf (buffer, maxlen, "[J%d A%d %c]", g->gesture.axis.port, g->gesture.axis.index, g->gesture.axis.polarity > 0 ? '+' : '-'); break; case VCONTROL_JOYHAT: snprintf (buffer, maxlen, "[J%d H%d %d]", g->gesture.hat.port, g->gesture.hat.index, g->gesture.hat.dir); break; default: /* Something we don't handle yet */ buffer[0] = 0; break; } return; }