Made testgamecontroller minimally more useful.
This commit is contained in:
parent
6c4a53f561
commit
e4ef7cba60
1 changed files with 65 additions and 8 deletions
|
@ -40,9 +40,58 @@ DrawRect(SDL_Renderer *r, const int x, const int y, const int w, const int h)
|
||||||
SDL_RenderFillRect(r, &area);
|
SDL_RenderFillRect(r, &area);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
ControllerAxisName(const SDL_CONTROLLER_AXIS axis)
|
||||||
|
{
|
||||||
|
switch (axis)
|
||||||
|
{
|
||||||
|
#define AXIS_CASE(ax) case SDL_CONTROLLER_AXIS_##ax: return #ax
|
||||||
|
AXIS_CASE(INVALID);
|
||||||
|
AXIS_CASE(LEFTX);
|
||||||
|
AXIS_CASE(LEFTY);
|
||||||
|
AXIS_CASE(RIGHTX);
|
||||||
|
AXIS_CASE(RIGHTY);
|
||||||
|
AXIS_CASE(TRIGGERLEFT);
|
||||||
|
AXIS_CASE(TRIGGERRIGHT);
|
||||||
|
#undef AXIS_CASE
|
||||||
|
default: return "???";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
ControllerButtonName(const SDL_CONTROLLER_BUTTON button)
|
||||||
|
{
|
||||||
|
switch (button)
|
||||||
|
{
|
||||||
|
#define BUTTON_CASE(btn) case SDL_CONTROLLER_BUTTON_##btn: return #btn
|
||||||
|
BUTTON_CASE(INVALID);
|
||||||
|
BUTTON_CASE(A);
|
||||||
|
BUTTON_CASE(B);
|
||||||
|
BUTTON_CASE(X);
|
||||||
|
BUTTON_CASE(Y);
|
||||||
|
BUTTON_CASE(BACK);
|
||||||
|
BUTTON_CASE(GUIDE);
|
||||||
|
BUTTON_CASE(START);
|
||||||
|
BUTTON_CASE(LEFTSTICK);
|
||||||
|
BUTTON_CASE(RIGHTSTICK);
|
||||||
|
BUTTON_CASE(LEFTSHOULDER);
|
||||||
|
BUTTON_CASE(RIGHTSHOULDER);
|
||||||
|
BUTTON_CASE(DPAD_UP);
|
||||||
|
BUTTON_CASE(DPAD_DOWN);
|
||||||
|
BUTTON_CASE(DPAD_LEFT);
|
||||||
|
BUTTON_CASE(DPAD_RIGHT);
|
||||||
|
#undef BUTTON_CASE
|
||||||
|
default: return "???";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
WatchGameController(SDL_GameController * gamecontroller)
|
WatchGameController(SDL_GameController * gamecontroller)
|
||||||
{
|
{
|
||||||
|
const char *controllername = gamecontroller ? SDL_GameControllerName(gamecontroller) : "???";
|
||||||
|
const char *basetitle = "Game Controller Test: ";
|
||||||
|
const size_t titlelen = SDL_strlen(basetitle) + SDL_strlen(controllername) + 1;
|
||||||
|
char *title = SDL_malloc(titlelen);
|
||||||
SDL_Window *window = NULL;
|
SDL_Window *window = NULL;
|
||||||
SDL_Renderer *screen = NULL;
|
SDL_Renderer *screen = NULL;
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
|
@ -50,8 +99,12 @@ WatchGameController(SDL_GameController * gamecontroller)
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (title) {
|
||||||
|
SDL_snprintf(title, titlelen, "%s%s", basetitle, controllername);
|
||||||
|
}
|
||||||
|
|
||||||
/* Create a window to display controller axis position */
|
/* Create a window to display controller axis position */
|
||||||
window = SDL_CreateWindow("Game Controller Test", SDL_WINDOWPOS_CENTERED,
|
window = SDL_CreateWindow(title, SDL_WINDOWPOS_CENTERED,
|
||||||
SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH,
|
SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH,
|
||||||
SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
|
SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
|
||||||
if (window == NULL) {
|
if (window == NULL) {
|
||||||
|
@ -84,17 +137,21 @@ WatchGameController(SDL_GameController * gamecontroller)
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
case SDL_CONTROLLERAXISMOTION:
|
case SDL_CONTROLLERAXISMOTION:
|
||||||
printf("Controller %d axis %d value: %d\n",
|
printf("Controller %d axis %d ('%s') value: %d\n",
|
||||||
event.caxis.which,
|
event.caxis.which,
|
||||||
event.caxis.axis, event.caxis.value);
|
event.caxis.axis,
|
||||||
|
ControllerAxisName(event.caxis.axis),
|
||||||
|
event.caxis.value);
|
||||||
break;
|
break;
|
||||||
case SDL_CONTROLLERBUTTONDOWN:
|
case SDL_CONTROLLERBUTTONDOWN:
|
||||||
printf("Controller %d button %d down\n",
|
printf("Controller %d button %d ('%s') down\n",
|
||||||
event.cbutton.which, event.cbutton.button);
|
event.cbutton.which, event.cbutton.button,
|
||||||
|
ControllerButtonName(event.cbutton.button));
|
||||||
break;
|
break;
|
||||||
case SDL_CONTROLLERBUTTONUP:
|
case SDL_CONTROLLERBUTTONUP:
|
||||||
printf("Controller %d button %d up\n",
|
printf("Controller %d button %d ('%s') up\n",
|
||||||
event.cbutton.which, event.cbutton.button);
|
event.cbutton.which, event.cbutton.button,
|
||||||
|
ControllerButtonName(event.cbutton.button));
|
||||||
break;
|
break;
|
||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
if (event.key.keysym.sym != SDLK_ESCAPE) {
|
if (event.key.keysym.sym != SDLK_ESCAPE) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue