From d2d26c7b1ef3799dc82268a5c777d5bc1ce313c3 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 11 Jul 2023 13:36:48 -0700 Subject: [PATCH] testgamepad replaces testjoystick --- VisualC/SDL.sln | 2 - .../tests/testjoystick/testjoystick.vcxproj | 204 ---------- test/CMakeLists.txt | 1 - test/README | 1 - test/testjoystick.c | 352 ------------------ 5 files changed, 560 deletions(-) delete mode 100644 VisualC/tests/testjoystick/testjoystick.vcxproj delete mode 100644 test/testjoystick.c diff --git a/VisualC/SDL.sln b/VisualC/SDL.sln index bd5dffa72b..5c6580cec1 100644 --- a/VisualC/SDL.sln +++ b/VisualC/SDL.sln @@ -18,8 +18,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "tests\testfile\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgl", "tests\testgl\testgl.vcxproj", "{8B5CFB38-CCBA-40A8-AD7A-89C57B070884}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testjoystick\testjoystick.vcxproj", "{55812185-D13C-4022-9C81-32E0F4A08304}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testoverlay", "tests\testoverlay\testoverlay.vcxproj", "{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplatform", "tests\testplatform\testplatform.vcxproj", "{26932B24-EFC6-4E3A-B277-ED653DA37968}" diff --git a/VisualC/tests/testjoystick/testjoystick.vcxproj b/VisualC/tests/testjoystick/testjoystick.vcxproj deleted file mode 100644 index d35450f42d..0000000000 --- a/VisualC/tests/testjoystick/testjoystick.vcxproj +++ /dev/null @@ -1,204 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {55812185-D13C-4022-9C81-32E0F4A08304} - testjoystick - 10.0 - - - - Application - $(DefaultPlatformToolset) - - - Application - $(DefaultPlatformToolset) - - - Application - $(DefaultPlatformToolset) - - - Application - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Release/testjoystick.tlb - - - $(SolutionDir)/../include;%(AdditionalIncludeDirectories) - %(AdditionalUsingDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Windows - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\Release/testjoystick.tlb - - - $(SolutionDir)/../include;%(AdditionalIncludeDirectories) - %(AdditionalUsingDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - Windows - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\Debug/testjoystick.tlb - - - Disabled - $(SolutionDir)/../include;%(AdditionalIncludeDirectories) - %(AdditionalUsingDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - OldStyle - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - Windows - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - .\Debug/testjoystick.tlb - - - Disabled - $(SolutionDir)/../include;%(AdditionalIncludeDirectories) - %(AdditionalUsingDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - OldStyle - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - Windows - - - - - {81ce8daf-ebb2-4761-8e45-b71abcca8c68} - false - false - true - - - {da956fd3-e143-46f2-9fe5-c77bebc56b1a} - false - false - true - - - - - - - - - \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cd5cf591eb..5d90349365 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -224,7 +224,6 @@ add_sdl_test_executable(testrumble SOURCES testrumble.c) add_sdl_test_executable(testthread NONINTERACTIVE NONINTERACTIVE_TIMEOUT 40 SOURCES testthread.c) add_sdl_test_executable(testiconv NEEDS_RESOURCES TESTUTILS SOURCES testiconv.c) add_sdl_test_executable(testime NEEDS_RESOURCES TESTUTILS SOURCES testime.c) -add_sdl_test_executable(testjoystick SOURCES testjoystick.c) add_sdl_test_executable(testkeys SOURCES testkeys.c) add_sdl_test_executable(testloadso SOURCES testloadso.c) add_sdl_test_executable(testlocale NONINTERACTIVE SOURCES testlocale.c) diff --git a/test/README b/test/README index c4d7cccfa0..914c114304 100644 --- a/test/README +++ b/test/README @@ -10,7 +10,6 @@ These are test programs for the SDL library: testfile Tests RWops layer testgl A very simple example of using OpenGL with SDL testiconv Tests international string conversion - testjoystick List joysticks and watch joystick events testkeys List the available keyboard keys testloadso Tests the loadable library layer testlocale Test Locale API diff --git a/test/testjoystick.c b/test/testjoystick.c deleted file mode 100644 index 0e77ef6c56..0000000000 --- a/test/testjoystick.c +++ /dev/null @@ -1,352 +0,0 @@ -/* - Copyright (C) 1997-2023 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely. -*/ - -/* Simple program to test the SDL joystick routines */ - -#include - -#include -#include -#include - -#ifdef __EMSCRIPTEN__ -#include -#endif - -#ifdef __IOS__ -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 480 -#else -#define SCREEN_WIDTH 640 -#define SCREEN_HEIGHT 480 -#endif - -static SDL_Window *window = NULL; -static SDL_Renderer *screen = NULL; -static SDL_Joystick *joystick = NULL; - -static void -PrintJoystick(SDL_Joystick *joy) -{ - const char *type; - char guid[64]; - - SDL_assert(SDL_GetJoystickFromInstanceID(SDL_GetJoystickInstanceID(joy)) == joy); - SDL_GetJoystickGUIDString(SDL_GetJoystickGUID(joy), guid, sizeof(guid)); - switch (SDL_GetJoystickType(joy)) { - case SDL_JOYSTICK_TYPE_GAMEPAD: - type = "Game Controller"; - break; - case SDL_JOYSTICK_TYPE_WHEEL: - type = "Wheel"; - break; - case SDL_JOYSTICK_TYPE_ARCADE_STICK: - type = "Arcade Stick"; - break; - case SDL_JOYSTICK_TYPE_FLIGHT_STICK: - type = "Flight Stick"; - break; - case SDL_JOYSTICK_TYPE_DANCE_PAD: - type = "Dance Pad"; - break; - case SDL_JOYSTICK_TYPE_GUITAR: - type = "Guitar"; - break; - case SDL_JOYSTICK_TYPE_DRUM_KIT: - type = "Drum Kit"; - break; - case SDL_JOYSTICK_TYPE_ARCADE_PAD: - type = "Arcade Pad"; - break; - case SDL_JOYSTICK_TYPE_THROTTLE: - type = "Throttle"; - break; - default: - type = "Unknown"; - break; - } - SDL_Log("Joystick\n"); - SDL_Log(" name: %s\n", SDL_GetJoystickName(joy)); - SDL_Log(" type: %s\n", type); - SDL_Log(" LED: %s\n", SDL_JoystickHasLED(joy) ? "yes" : "no"); - SDL_Log(" rumble: %s\n", SDL_JoystickHasRumble(joy) ? "yes" : "no"); - SDL_Log("trigger rumble: %s\n", SDL_JoystickHasRumbleTriggers(joy) ? "yes" : "no"); - SDL_Log(" axes: %d\n", SDL_GetNumJoystickAxes(joy)); - SDL_Log(" hats: %d\n", SDL_GetNumJoystickHats(joy)); - SDL_Log(" buttons: %d\n", SDL_GetNumJoystickButtons(joy)); - SDL_Log(" instance id: %" SDL_PRIu32 "\n", SDL_GetJoystickInstanceID(joy)); - SDL_Log(" guid: %s\n", guid); - SDL_Log(" VID/PID: 0x%.4x/0x%.4x\n", SDL_GetJoystickVendor(joy), SDL_GetJoystickProduct(joy)); -} - -static void -DrawRect(SDL_Renderer *r, const int x, const int y, const int w, const int h) -{ - SDL_FRect area; - area.x = (float)x; - area.y = (float)y; - area.w = (float)w; - area.h = (float)h; - SDL_RenderFillRect(r, &area); -} - -static void loop(void *arg) -{ - SDL_Event event; - int i; - SDL_bool *done = (SDL_bool*)arg; - - /* blank screen, set up for drawing this frame. */ - SDL_SetRenderDrawColor(screen, 0x0, 0x0, 0x0, SDL_ALPHA_OPAQUE); - SDL_RenderClear(screen); - - while (SDL_PollEvent(&event)) { - switch (event.type) { - - case SDL_EVENT_JOYSTICK_ADDED: - SDL_Log("Joystick device %" SDL_PRIu32 " added.\n", event.jdevice.which); - if (joystick == NULL) { - joystick = SDL_OpenJoystick(event.jdevice.which); - if (joystick) { - PrintJoystick(joystick); - } else { - SDL_Log("Couldn't open joystick: %s\n", SDL_GetError()); - } - } - break; - - case SDL_EVENT_JOYSTICK_REMOVED: - SDL_Log("Joystick device %" SDL_PRIu32 " removed.\n", event.jdevice.which); - if (event.jdevice.which == SDL_GetJoystickInstanceID(joystick)) { - SDL_JoystickID *joysticks; - - SDL_CloseJoystick(joystick); - joystick = NULL; - - joysticks = SDL_GetJoysticks(NULL); - if (joysticks) { - if (joysticks[0]) { - joystick = SDL_OpenJoystick(joysticks[0]); - if (joystick) { - PrintJoystick(joystick); - } else { - SDL_Log("Couldn't open joystick: %s\n", SDL_GetError()); - } - } - SDL_free(joysticks); - } - } - break; - - case SDL_EVENT_JOYSTICK_AXIS_MOTION: - SDL_Log("Joystick %" SDL_PRIu32 " axis %d value: %d\n", - event.jaxis.which, - event.jaxis.axis, event.jaxis.value); - break; - case SDL_EVENT_JOYSTICK_HAT_MOTION: - SDL_Log("Joystick %" SDL_PRIu32 " hat %d value:", - event.jhat.which, event.jhat.hat); - if (event.jhat.value == SDL_HAT_CENTERED) { - SDL_Log(" centered"); - } - if (event.jhat.value & SDL_HAT_UP) { - SDL_Log(" up"); - } - if (event.jhat.value & SDL_HAT_RIGHT) { - SDL_Log(" right"); - } - if (event.jhat.value & SDL_HAT_DOWN) { - SDL_Log(" down"); - } - if (event.jhat.value & SDL_HAT_LEFT) { - SDL_Log(" left"); - } - SDL_Log("\n"); - break; - case SDL_EVENT_JOYSTICK_BUTTON_DOWN: - SDL_Log("Joystick %" SDL_PRIu32 " button %d down\n", - event.jbutton.which, event.jbutton.button); - /* First button triggers a 0.5 second full strength rumble */ - if (event.jbutton.button == 0) { - SDL_RumbleJoystick(joystick, 0xFFFF, 0xFFFF, 500); - } - break; - case SDL_EVENT_JOYSTICK_BUTTON_UP: - SDL_Log("Joystick %" SDL_PRIu32 " button %d up\n", - event.jbutton.which, event.jbutton.button); - break; - case SDL_EVENT_KEY_DOWN: - /* Press the L key to lag for 3 seconds, to see what happens - when SDL doesn't service the event loop quickly. */ - if (event.key.keysym.sym == SDLK_l) { - SDL_Log("Lagging for 3 seconds...\n"); - SDL_Delay(3000); - break; - } - - if ((event.key.keysym.sym != SDLK_ESCAPE) && - (event.key.keysym.sym != SDLK_AC_BACK)) { - break; - } - SDL_FALLTHROUGH; - case SDL_EVENT_FINGER_DOWN: - case SDL_EVENT_MOUSE_BUTTON_DOWN: - case SDL_EVENT_QUIT: - *done = SDL_TRUE; - break; - default: - break; - } - } - - if (joystick) { - const int BUTTONS_PER_LINE = ((SCREEN_WIDTH - 4) / 34); - int x, y; - - /* Update visual joystick state */ - SDL_SetRenderDrawColor(screen, 0x00, 0xFF, 0x00, SDL_ALPHA_OPAQUE); - y = SCREEN_HEIGHT - ((((SDL_GetNumJoystickButtons(joystick) + (BUTTONS_PER_LINE - 1)) / BUTTONS_PER_LINE) + 1) * 34); - for (i = 0; i < SDL_GetNumJoystickButtons(joystick); ++i) { - if ((i % BUTTONS_PER_LINE) == 0) { - y += 34; - } - if (SDL_GetJoystickButton(joystick, i) == SDL_PRESSED) { - x = 2 + (i % BUTTONS_PER_LINE) * 34; - DrawRect(screen, x, y, 32, 32); - } - } - - SDL_SetRenderDrawColor(screen, 0xFF, 0x00, 0x00, SDL_ALPHA_OPAQUE); - for (i = 0; i < SDL_GetNumJoystickAxes(joystick); ++i) { - /* Draw the X/Y axis */ - x = (((int)SDL_GetJoystickAxis(joystick, i)) + 32768); - x *= SCREEN_WIDTH; - x /= 65535; - if (x < 0) { - x = 0; - } else if (x > (SCREEN_WIDTH - 16)) { - x = SCREEN_WIDTH - 16; - } - ++i; - if (i < SDL_GetNumJoystickAxes(joystick)) { - y = (((int)SDL_GetJoystickAxis(joystick, i)) + 32768); - } else { - y = 32768; - } - y *= SCREEN_HEIGHT; - y /= 65535; - if (y < 0) { - y = 0; - } else if (y > (SCREEN_HEIGHT - 16)) { - y = SCREEN_HEIGHT - 16; - } - - DrawRect(screen, x, y, 16, 16); - } - - SDL_SetRenderDrawColor(screen, 0x00, 0x00, 0xFF, SDL_ALPHA_OPAQUE); - for (i = 0; i < SDL_GetNumJoystickHats(joystick); ++i) { - /* Derive the new position */ - const Uint8 hat_pos = SDL_GetJoystickHat(joystick, i); - x = SCREEN_WIDTH / 2; - y = SCREEN_HEIGHT / 2; - - if (hat_pos & SDL_HAT_UP) { - y = 0; - } else if (hat_pos & SDL_HAT_DOWN) { - y = SCREEN_HEIGHT - 8; - } - - if (hat_pos & SDL_HAT_LEFT) { - x = 0; - } else if (hat_pos & SDL_HAT_RIGHT) { - x = SCREEN_WIDTH - 8; - } - - DrawRect(screen, x, y, 8, 8); - } - } - - SDL_Delay(16); - SDL_RenderPresent(screen); - -#ifdef __EMSCRIPTEN__ - if (*done == SDL_TRUE) { - emscripten_cancel_main_loop(); - } -#endif -} - -int main(int argc, char *argv[]) -{ - SDL_bool done; - SDLTest_CommonState *state; - - /* Initialize test framework */ - state = SDLTest_CommonCreateState(argv, 0); - if (state == NULL) { - return 1; - } - - SDL_SetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, "0"); - - /* Enable standard application logging */ - SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); - - /* Parse commandline */ - if (!SDLTest_CommonDefaultArgs(state, argc, argv)) { - return 1; - } - - /* Initialize SDL (Note: video is required to start event loop) */ - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError()); - exit(1); - } - - /* Create a window to display joystick axis position */ - window = SDL_CreateWindow("Joystick Test", SCREEN_WIDTH, SCREEN_HEIGHT, 0); - if (window == NULL) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create window: %s\n", SDL_GetError()); - return SDL_FALSE; - } - - screen = SDL_CreateRenderer(window, NULL, 0); - if (screen == NULL) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create renderer: %s\n", SDL_GetError()); - SDL_DestroyWindow(window); - return SDL_FALSE; - } - - SDL_SetRenderDrawColor(screen, 0x00, 0x00, 0x00, SDL_ALPHA_OPAQUE); - SDL_RenderClear(screen); - SDL_RenderPresent(screen); - - done = SDL_FALSE; - - /* Loop, getting joystick events! */ -#ifdef __EMSCRIPTEN__ - emscripten_set_main_loop_arg(loop, &done, 0, 1); -#else - while (!done) { - loop(&done); - } -#endif - - SDL_DestroyRenderer(screen); - SDL_DestroyWindow(window); - - SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); - SDLTest_CommonDestroyState(state); - - return 0; -}