static mrb_value mrb_sdl2_clipboard_set_text(mrb_state *mrb, mrb_value self) { mrb_value text; mrb_get_args(mrb, "S", &text); SDL_SetClipboardText(RSTRING_PTR(text)); return text; }
// When (if?) we decide to put text into the clipboard... bool put_scrap(char *src) { if (SDL_SetClipboardText(src)) { debug(LOG_ERROR, "Could not put clipboard text because : %s", SDL_GetError()); return false; } return true; }
int PDC_setclipboard(const char *contents, long length) { PDC_LOG(("PDC_setclipboard() - called\n")); if (SDL_SetClipboardText(contents) != 0) return PDC_CLIP_ACCESS_ERROR; return PDC_CLIP_SUCCESS; }
int PDC_clearclipboard(void) { PDC_LOG(("PDC_clearclipboard() - called\n")); if (SDL_HasClipboardText() == SDL_TRUE) { SDL_SetClipboardText(NULL); } return PDC_CLIP_SUCCESS; }
bool TextBox::copySelection() { if (mSelectionPos > -1) { Screen *sc = dynamic_cast<Screen *>(this->window()->parent()); int begin = mCursorPos; int end = mSelectionPos; if (begin > end) std::swap(begin, end); SDL_SetClipboardText(mValueTemp.substr(begin, end).c_str()); return true; } return false; }
//texto por teclado bool textinput(std::string *inputText, bool renderText, SDL_Event e) { if( e.type == SDL_KEYDOWN ) { //permite introducir texto SDL_StartTextInput(); //Handle backspace if( e.key.keysym.sym == SDLK_BACKSPACE && inputText->length() > 0 ) { //lop off character inputText->pop_back(); renderText = true; } //Handle copy else if( e.key.keysym.sym == SDLK_c && SDL_GetModState() & KMOD_CTRL ) { SDL_SetClipboardText( inputText->c_str() ); } //Handle paste //esta comentado porq me da un error /*else if( e.key.keysym.sym == SDLK_v && SDL_GetModState() & KMOD_CTRL ) { inputText = SDL_GetClipboardText(); renderText = true; }*/ } //Special text input event else if( e.type == SDL_TEXTINPUT ) { //Not copy or pasting if( !( ( e.text.text[ 0 ] == 'c' || e.text.text[ 0 ] == 'C' ) && ( e.text.text[ 0 ] == 'v' || e.text.text[ 0 ] == 'V' ) && SDL_GetModState() & KMOD_CTRL ) ) { //Append character inputText->append(e.text.text); renderText = true; } } //devuelve si hay que renderizar el texto return renderText; //cierra la comunicacion con el telclado SDL_StopTextInput(); }
/* * Gets Coordinates from the screen already translated to * Screen Buffer Positions, Now we pull the position and throw the * Text data into the Clipboard. */ void ScreenBuffer::bufferToClipboard(int startx, int starty, int numChar, int numRows) { std::string textBuffer = ""; int startPosition = (starty * characters_per_line) + startx; int endPosition = startPosition + numChar; // Loop the Number of Rows to Grab for(int ot = 0; ot < numRows; ot++) { // Grab each line per Row. for(int it = startPosition; it < endPosition; it++) { try { if(screenBuffer[it].characterSequence != "") { textBuffer += screenBuffer[it].characterSequence; } else { textBuffer += " "; } } catch(std::exception &e) { std::cout << "Exception bufferToClipboard: " << e.what() << std::endl; } } // Add Newline at the end of each row. textBuffer += "\r\n"; // Reset start/end position to next Row. startPosition += characters_per_line; endPosition += characters_per_line; } // Copy Resulting text to the Clipboard. SDL_SetClipboardText(textBuffer.c_str()); }
/** * \brief Check call to SDL_SetClipboardText * \sa * http://wiki.libsdl.org/moin.cgi/SDL_SetClipboardText */ int clipboard_testSetClipboardText(void *arg) { char *textRef = SDLTest_RandomAsciiString(); char *text = SDL_strdup(textRef); int result; result = SDL_SetClipboardText((const char *)text); SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded"); SDLTest_AssertCheck( result == 0, "Validate SDL_SetClipboardText result, expected 0, got %i", result); SDLTest_AssertCheck( SDL_strcmp(textRef, text) == 0, "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'", textRef, text); /* Cleanup */ if (textRef) SDL_free(textRef); if (text) SDL_free(text); return TEST_COMPLETED; }
static void clipboard_set(const char *text) {SDL_SetClipboardText(text);}
/** * \brief End-to-end test of SDL_xyzClipboardText functions * \sa * http://wiki.libsdl.org/moin.cgi/SDL_HasClipboardText * http://wiki.libsdl.org/moin.cgi/SDL_GetClipboardText * http://wiki.libsdl.org/moin.cgi/SDL_SetClipboardText */ int clipboard_testClipboardTextFunctions(void *arg) { char *textRef = SDLTest_RandomAsciiString(); char *text = SDL_strdup(textRef); SDL_bool boolResult; int intResult; char *charResult; /* Clear clipboard text state */ boolResult = SDL_HasClipboardText(); SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); if (boolResult == SDL_TRUE) { intResult = SDL_SetClipboardText((const char *)NULL); SDLTest_AssertPass("Call to SDL_SetClipboardText(NULL) succeeded"); SDLTest_AssertCheck( intResult == 0, "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i", intResult); charResult = SDL_GetClipboardText(); SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); boolResult = SDL_HasClipboardText(); SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); SDLTest_AssertCheck( boolResult == SDL_FALSE, "Verify SDL_HasClipboardText returned SDL_FALSE, got %s", (boolResult) ? "SDL_TRUE" : "SDL_FALSE"); } /* Empty clipboard */ charResult = SDL_GetClipboardText(); SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); SDLTest_AssertCheck( charResult != NULL, "Verify SDL_GetClipboardText did not return NULL"); SDLTest_AssertCheck( SDL_strlen(charResult) == 0, "Verify SDL_GetClipboardText returned string with length 0, got length %i", SDL_strlen(charResult)); intResult = SDL_SetClipboardText((const char *)text); SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded"); SDLTest_AssertCheck( intResult == 0, "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i", intResult); SDLTest_AssertCheck( SDL_strcmp(textRef, text) == 0, "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'", textRef, text); boolResult = SDL_HasClipboardText(); SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded"); SDLTest_AssertCheck( boolResult == SDL_TRUE, "Verify SDL_HasClipboardText returned SDL_TRUE, got %s", (boolResult) ? "SDL_TRUE" : "SDL_FALSE"); charResult = SDL_GetClipboardText(); SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded"); SDLTest_AssertCheck( SDL_strcmp(textRef, charResult) == 0, "Verify SDL_GetClipboardText returned correct string, expected '%s', got '%s'", textRef, charResult); /* Cleanup */ if (textRef) SDL_free(textRef); if (text) SDL_free(text); if (charResult) SDL_free(charResult); return TEST_COMPLETED; }
static SDL_bool WatchJoystick(SDL_Joystick * joystick) { SDL_Window *window = NULL; SDL_Renderer *screen = NULL; SDL_Texture *background, *button, *axis, *marker; const char *name = NULL; SDL_bool retval = SDL_FALSE; SDL_bool done = SDL_FALSE, next=SDL_FALSE; SDL_Event event; SDL_Rect dst; int s, _s; Uint8 alpha=200, alpha_step = -1; Uint32 alpha_ticks; char mapping[4096], temp[4096]; MappingStep *step; MappingStep steps[] = { {342, 132, 0.0, MARKER_BUTTON, "x", -1, -1, -1, -1, ""}, {387, 167, 0.0, MARKER_BUTTON, "a", -1, -1, -1, -1, ""}, {431, 132, 0.0, MARKER_BUTTON, "b", -1, -1, -1, -1, ""}, {389, 101, 0.0, MARKER_BUTTON, "y", -1, -1, -1, -1, ""}, {174, 132, 0.0, MARKER_BUTTON, "back", -1, -1, -1, -1, ""}, {233, 132, 0.0, MARKER_BUTTON, "guide", -1, -1, -1, -1, ""}, {289, 132, 0.0, MARKER_BUTTON, "start", -1, -1, -1, -1, ""}, {116, 217, 0.0, MARKER_BUTTON, "dpleft", -1, -1, -1, -1, ""}, {154, 249, 0.0, MARKER_BUTTON, "dpdown", -1, -1, -1, -1, ""}, {186, 217, 0.0, MARKER_BUTTON, "dpright", -1, -1, -1, -1, ""}, {154, 188, 0.0, MARKER_BUTTON, "dpup", -1, -1, -1, -1, ""}, {77, 40, 0.0, MARKER_BUTTON, "leftshoulder", -1, -1, -1, -1, ""}, {91, 0, 0.0, MARKER_BUTTON, "lefttrigger", -1, -1, -1, -1, ""}, {396, 36, 0.0, MARKER_BUTTON, "rightshoulder", -1, -1, -1, -1, ""}, {375, 0, 0.0, MARKER_BUTTON, "righttrigger", -1, -1, -1, -1, ""}, {75, 154, 0.0, MARKER_BUTTON, "leftstick", -1, -1, -1, -1, ""}, {305, 230, 0.0, MARKER_BUTTON, "rightstick", -1, -1, -1, -1, ""}, {75, 154, 0.0, MARKER_AXIS, "leftx", -1, -1, -1, -1, ""}, {75, 154, 90.0, MARKER_AXIS, "lefty", -1, -1, -1, -1, ""}, {305, 230, 0.0, MARKER_AXIS, "rightx", -1, -1, -1, -1, ""}, {305, 230, 90.0, MARKER_AXIS, "righty", -1, -1, -1, -1, ""}, }; /* Create a window to display joystick axis position */ window = SDL_CreateWindow("Game Controller Map", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 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, -1, 0); if (screen == NULL) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create renderer: %s\n", SDL_GetError()); SDL_DestroyWindow(window); return SDL_FALSE; } background = LoadTexture(screen, "controllermap.bmp", SDL_FALSE); button = LoadTexture(screen, "button.bmp", SDL_TRUE); axis = LoadTexture(screen, "axis.bmp", SDL_TRUE); SDL_RaiseWindow(window); /* scale for platforms that don't give you the window size you asked for. */ SDL_RenderSetLogicalSize(screen, SCREEN_WIDTH, SCREEN_HEIGHT); /* Print info about the joystick we are watching */ name = SDL_JoystickName(joystick); SDL_Log("Watching joystick %d: (%s)\n", SDL_JoystickInstanceID(joystick), name ? name : "Unknown Joystick"); SDL_Log("Joystick has %d axes, %d hats, %d balls, and %d buttons\n", SDL_JoystickNumAxes(joystick), SDL_JoystickNumHats(joystick), SDL_JoystickNumBalls(joystick), SDL_JoystickNumButtons(joystick)); SDL_Log("\n\n\ ====================================================================================\n\ Press the buttons on your controller when indicated\n\ (Your controller may look different than the picture)\n\ If you want to correct a mistake, press backspace or the back button on your device\n\ To skip a button, press SPACE or click/touch the screen\n\ To exit, press ESC\n\ ====================================================================================\n"); /* Initialize mapping with GUID and name */ SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick), temp, SDL_arraysize(temp)); SDL_snprintf(mapping, SDL_arraysize(mapping), "%s,%s,platform:%s,", temp, name ? name : "Unknown Joystick", SDL_GetPlatform()); /* Loop, getting joystick events! */ for(s=0; s<SDL_arraysize(steps) && !done;) { /* blank screen, set up for drawing this frame. */ step = &steps[s]; SDL_strlcpy(step->mapping, mapping, SDL_arraysize(step->mapping)); step->axis = -1; step->button = -1; step->hat = -1; step->hat_value = -1; SDL_SetClipboardText("TESTING TESTING 123"); switch(step->marker) { case MARKER_AXIS: marker = axis; break; case MARKER_BUTTON: marker = button; break; default: break; } dst.x = step->x; dst.y = step->y; SDL_QueryTexture(marker, NULL, NULL, &dst.w, &dst.h); next=SDL_FALSE; SDL_SetRenderDrawColor(screen, 0xFF, 0xFF, 0xFF, SDL_ALPHA_OPAQUE); while (!done && !next) { if (SDL_GetTicks() - alpha_ticks > 5) { alpha_ticks = SDL_GetTicks(); alpha += alpha_step; if (alpha == 255) { alpha_step = -1; } if (alpha < 128) { alpha_step = 1; } } SDL_RenderClear(screen); SDL_RenderCopy(screen, background, NULL, NULL); SDL_SetTextureAlphaMod(marker, alpha); SDL_SetTextureColorMod(marker, 10, 255, 21); SDL_RenderCopyEx(screen, marker, NULL, &dst, step->angle, NULL, 0); SDL_RenderPresent(screen); if (SDL_PollEvent(&event)) { switch (event.type) { case SDL_JOYAXISMOTION: if (event.jaxis.value > 20000 || event.jaxis.value < -20000) { for (_s = 0; _s < s; _s++) { if (steps[_s].axis == event.jaxis.axis) { break; } } if (_s == s) { step->axis = event.jaxis.axis; SDL_strlcat(mapping, step->field, SDL_arraysize(mapping)); SDL_snprintf(temp, SDL_arraysize(temp), ":a%u,", event.jaxis.axis); SDL_strlcat(mapping, temp, SDL_arraysize(mapping)); s++; next=SDL_TRUE; } } break; case SDL_JOYHATMOTION: if (event.jhat.value == SDL_HAT_CENTERED) { break; /* ignore centering, we're probably just coming back to the center from the previous item we set. */ } for (_s = 0; _s < s; _s++) { if (steps[_s].hat == event.jhat.hat && steps[_s].hat_value == event.jhat.value) { break; } } if (_s == s) { step->hat = event.jhat.hat; step->hat_value = event.jhat.value; SDL_strlcat(mapping, step->field, SDL_arraysize(mapping)); SDL_snprintf(temp, SDL_arraysize(temp), ":h%u.%u,", event.jhat.hat, event.jhat.value ); SDL_strlcat(mapping, temp, SDL_arraysize(mapping)); s++; next=SDL_TRUE; } break; case SDL_JOYBALLMOTION: break; case SDL_JOYBUTTONUP: for (_s = 0; _s < s; _s++) { if (steps[_s].button == event.jbutton.button) { break; } } if (_s == s) { step->button = event.jbutton.button; SDL_strlcat(mapping, step->field, SDL_arraysize(mapping)); SDL_snprintf(temp, SDL_arraysize(temp), ":b%u,", event.jbutton.button); SDL_strlcat(mapping, temp, SDL_arraysize(mapping)); s++; next=SDL_TRUE; } break; case SDL_FINGERDOWN: case SDL_MOUSEBUTTONDOWN: /* Skip this step */ s++; next=SDL_TRUE; break; case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_BACKSPACE || event.key.keysym.sym == SDLK_AC_BACK) { /* Undo! */ if (s > 0) { SDL_strlcpy(mapping, step->mapping, SDL_arraysize(step->mapping)); s--; next = SDL_TRUE; } break; } if (event.key.keysym.sym == SDLK_SPACE) { /* Skip this step */ s++; next=SDL_TRUE; break; } if ((event.key.keysym.sym != SDLK_ESCAPE)) { break; } /* Fall through to signal quit */ case SDL_QUIT: done = SDL_TRUE; break; default: break; } } } } if (s == SDL_arraysize(steps) ) { SDL_Log("Mapping:\n\n%s\n\n", mapping); /* Print to stdout as well so the user can cat the output somewhere */ printf("%s\n", mapping); } while(SDL_PollEvent(&event)) {}; SDL_DestroyRenderer(screen); SDL_DestroyWindow(window); return retval; }
void system_setClipboardText(const char* text) { moduleData.clipboardText = text; SDL_SetClipboardText(text); }
static void ImGui_ImplSdlGL3_SetClipboardText(const char* text) { SDL_SetClipboardText(text); }
void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) { int i; static SDL_MouseMotionEvent lastEvent; if (state->verbose & VERBOSE_EVENT) { SDLTest_PrintEvent(event); } switch (event->type) { case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_CLOSE: { SDL_Window *window = SDL_GetWindowFromID(event->window.windowID); if (window) { SDL_DestroyWindow(window); } } break; } break; case SDL_KEYDOWN: switch (event->key.keysym.sym) { /* Add hotkeys here */ case SDLK_PRINTSCREEN: { SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { for (i = 0; i < state->num_windows; ++i) { if (window == state->windows[i]) { SDLTest_ScreenShot(state->renderers[i]); } } } } break; case SDLK_EQUALS: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-+ double the size of the window */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { int w, h; SDL_GetWindowSize(window, &w, &h); SDL_SetWindowSize(window, w*2, h*2); } } break; case SDLK_MINUS: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-- half the size of the window */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { int w, h; SDL_GetWindowSize(window, &w, &h); SDL_SetWindowSize(window, w/2, h/2); } } break; case SDLK_c: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-C copy awesome text! */ SDL_SetClipboardText("SDL rocks!\nYou know it!"); printf("Copied text to clipboard\n"); } if (event->key.keysym.mod & KMOD_ALT) { /* Alt-C toggle a render clip rectangle */ for (i = 0; i < state->num_windows; ++i) { int w, h; if (state->renderers[i]) { SDL_Rect clip; SDL_GetWindowSize(state->windows[i], &w, &h); SDL_RenderGetClipRect(state->renderers[i], &clip); if (SDL_RectEmpty(&clip)) { clip.x = w/4; clip.y = h/4; clip.w = w/2; clip.h = h/2; SDL_RenderSetClipRect(state->renderers[i], &clip); } else { SDL_RenderSetClipRect(state->renderers[i], NULL); } } } } break; case SDLK_v: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-V paste awesome text! */ char *text = SDL_GetClipboardText(); if (*text) { printf("Clipboard: %s\n", text); } else { printf("Clipboard is empty\n"); } SDL_free(text); } break; case SDLK_g: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-G toggle grab */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { SDL_SetWindowGrab(window, !SDL_GetWindowGrab(window) ? SDL_TRUE : SDL_FALSE); } } break; case SDLK_m: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-M maximize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { Uint32 flags = SDL_GetWindowFlags(window); if (flags & SDL_WINDOW_MAXIMIZED) { SDL_RestoreWindow(window); } else { SDL_MaximizeWindow(window); } } } break; case SDLK_r: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-R toggle mouse relative mode */ SDL_SetRelativeMouseMode(!SDL_GetRelativeMouseMode() ? SDL_TRUE : SDL_FALSE); } break; case SDLK_z: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-Z minimize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { SDL_MinimizeWindow(window); } } break; case SDLK_RETURN: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-Enter toggle fullscreen */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { Uint32 flags = SDL_GetWindowFlags(window); if (flags & SDL_WINDOW_FULLSCREEN) { SDL_SetWindowFullscreen(window, SDL_FALSE); } else { SDL_SetWindowFullscreen(window, SDL_TRUE); } } } else if (event->key.keysym.mod & KMOD_ALT) { /* Alt-Enter toggle fullscreen desktop */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { Uint32 flags = SDL_GetWindowFlags(window); if (flags & SDL_WINDOW_FULLSCREEN) { SDL_SetWindowFullscreen(window, SDL_FALSE); } else { SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP); } } } break; case SDLK_b: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-B toggle window border */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { const Uint32 flags = SDL_GetWindowFlags(window); const SDL_bool b = ((flags & SDL_WINDOW_BORDERLESS) != 0) ? SDL_TRUE : SDL_FALSE; SDL_SetWindowBordered(window, b); } } break; case SDLK_0: if (event->key.keysym.mod & KMOD_CTRL) { SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Test Message", "You're awesome!", window); } break; case SDLK_1: if (event->key.keysym.mod & KMOD_CTRL) { FullscreenTo(0, event->key.windowID); } break; case SDLK_2: if (event->key.keysym.mod & KMOD_CTRL) { FullscreenTo(1, event->key.windowID); } break; case SDLK_ESCAPE: *done = 1; break; case SDLK_SPACE: { char message[256]; SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); SDL_snprintf(message, sizeof(message), "(%i, %i), rel (%i, %i)\n", lastEvent.x, lastEvent.y, lastEvent.xrel, lastEvent.yrel); SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Last mouse position", message, window); break; } default: break; } break; case SDL_QUIT: *done = 1; break; case SDL_MOUSEMOTION: lastEvent = event->motion; break; } }
void WindowSDL::setClipboardText(const std::string & text) { const auto result = SDL_SetClipboardText(text.c_str()); if(result != 0) { WARN(std::string("SDL_SetClipboardText failed: ") + SDL_GetError()); } }
void EnterNameState::HandleEvents() { // If completely faded in if(mAlphaVal == 255) { if(game->GetEvent().type == SDL_KEYDOWN) { // Handle backspace if(game->GetEvent().key.keysym.sym == SDLK_BACKSPACE &&mInputText.length() > 0) { mInputText.pop_back(); mUpdateText = true; } // Handle copy (ctrl + c) else if(game->GetEvent().key.keysym.sym == SDLK_c && SDL_GetModState() & KMOD_CTRL) { mInputText = SDL_SetClipboardText(mInputText.c_str()); } // Handle paste (ctrl + v) else if(game->GetEvent().key.keysym.sym == SDLK_v && SDL_GetModState() & KMOD_CTRL) { mInputText = SDL_GetClipboardText(); mUpdateText = true; } // If the enter key was pressed if(game->GetEvent().key.keysym.sym == SDLK_RETURN) { // Load highscore list ofstream out("Data/highscores.hsf", ios::app); // Write the output line out << mInputText << " " << InGameState::GetInstance()->GetFinalScore() << endl; // Close the file out.close(); // Change the state game->ChangeState(StartMenuState::GetInstance()); } } else if(game->GetEvent().type == SDL_TEXTINPUT) { // Not copying or pasting if(!((game->GetEvent().text.text[0] == 'c' || game->GetEvent().text.text[0] == 'C') && (game->GetEvent().text.text[0] == 'v' || game->GetEvent().text.text[0] == 'V') && SDL_GetModState() & KMOD_CTRL)) { // Only upper case and lowercase letters allowed (no spaces, numbers, or punctuation) if(isupper(game->GetEvent().text.text[0]) || islower(game->GetEvent().text.text[0])) { mInputText += game->GetEvent().text.text; // Limit to 20 characters if(mInputText.size() > 20) { mInputText.pop_back(); } mUpdateText = true; } } } } }
void copy_to_clipboard(const std::string& text, const bool) { SDL_SetClipboardText(text.c_str()); }
void cClipboardSDL::SetText( const std::string& Text ) { SDL_SetClipboardText( Text.c_str() ); }
virtual void set_text(const std::string& aText) { SDL_SetClipboardText(aText.c_str()); }
void CavePacker::update (uint32_t deltaTime) { _map.autoStart(); if (!_map.isActive() || deltaTime == 0) return; if (!_serviceProvider->getNetwork().isServer()) { _map.resetCurrentMap(); return; } if (_map.isPause()) return; _map.update(deltaTime); const bool isDone = _map.isDone(); if (isDone && !_map.isRestartInitialized()) { const uint32_t moves = _map.getMoves(); const uint32_t pushes = _map.getPushes(); const uint8_t stars = getStars(); _campaignManager->getAutoActiveCampaign(); if (!_campaignManager->updateMapValues(_map.getName(), moves, pushes, stars, true)) error(LOG_SERVER, "Could not save the values for the map"); if (stars == 3) { const int n = SDL_arraysize(fullStarsAchievements); for (int i = 0; i < n; ++i) { fullStarsAchievements[i]->unlock(); } } if (_map.getPlayers().size() == 1) { const Player* player = _map.getPlayers()[0]; const std::string& solution = player->getSolution(); info(LOG_SERVER, "solution: " + solution); SDL_SetClipboardText(solution.c_str()); #if 0 FilePtr solutionFilePtr = FS.getFile(_map.getName() + ".sol"); if (!solutionFilePtr->exists()) { FS.writeFile(solutionFilePtr->getName(), reinterpret_cast<const uint8_t*>(solution.c_str()), solution.size(), true); } #endif if (!_map.isAutoSolve()) { const std::string solutionId = "solution" + _map.getName(); System.track(solutionId, solution); const int n = SDL_arraysize(puzzleAchievements); for (int i = 0; i < n; ++i) { puzzleAchievements[i]->unlock(); } } else { System.track("autosolve", _map.getName()); } if (!_campaignManager->addAdditionMapData(_map.getName(), solution)) error(LOG_SERVER, "Could not save the solution for the map"); } else { info(LOG_SERVER, "no solution in multiplayer games"); } System.track("mapstate", String::format("finished: %s with %i moves and %i pushes - got %i stars", _map.getName().c_str(), moves, pushes, stars)); _map.abortAutoSolve(); const FinishedMapMessage msg(_map.getName(), moves, pushes, stars); _serviceProvider->getNetwork().sendToAllClients(msg); } else if (!isDone && _map.isFailed()) { debug(LOG_SERVER, "map failed"); const uint32_t delay = 1000; _map.restart(delay); } }
/* * Sys_SetClipboardData */ bool Sys_SetClipboardData( const char *data ) { return SDL_SetClipboardText( data ); }
void CommonEvent(CommonState * state, SDL_Event * event, int *done) { int i; if (state->verbose & VERBOSE_EVENT) { PrintEvent(event); } switch (event->type) { case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_CLOSE: { SDL_Window *window = SDL_GetWindowFromID(event->window.windowID); if (window) { SDL_DestroyWindow(window); } } break; } break; case SDL_KEYDOWN: switch (event->key.keysym.sym) { /* Add hotkeys here */ case SDLK_PRINTSCREEN: { SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { for (i = 0; i < state->num_windows; ++i) { if (window == state->windows[i]) { ScreenShot(state->renderers[i]); } } } } break; case SDLK_c: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-C copy awesome text! */ SDL_SetClipboardText("SDL rocks!\nYou know it!"); printf("Copied text to clipboard\n"); } break; case SDLK_v: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-V paste awesome text! */ char *text = SDL_GetClipboardText(); if (*text) { printf("Clipboard: %s\n", text); } else { printf("Clipboard is empty\n"); } SDL_free(text); } break; case SDLK_g: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-G toggle grab */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { SDL_SetWindowGrab(window, !SDL_GetWindowGrab(window)); } } break; case SDLK_m: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-M maximize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { Uint32 flags = SDL_GetWindowFlags(window); if (flags & SDL_WINDOW_MAXIMIZED) { SDL_RestoreWindow(window); } else { SDL_MaximizeWindow(window); } } } break; case SDLK_r: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-R toggle mouse relative mode */ SDL_SetRelativeMouseMode(!SDL_GetRelativeMouseMode()); } break; case SDLK_z: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-Z minimize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { SDL_MinimizeWindow(window); } } break; case SDLK_RETURN: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-Enter toggle fullscreen */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { Uint32 flags = SDL_GetWindowFlags(window); if (flags & SDL_WINDOW_FULLSCREEN) { SDL_SetWindowFullscreen(window, SDL_FALSE); } else { SDL_SetWindowFullscreen(window, SDL_TRUE); } } } break; case SDLK_ESCAPE: *done = 1; break; default: break; } break; case SDL_QUIT: *done = 1; break; } }
void System::setClipboardText(const std::string &text) const { SDL_SetClipboardText(text.c_str()); }
void Platform::set_clipboard_data(const ClipboardData &data) { if (data.text.empty()) return; SDL_SetClipboardText(data.text.c_str()); }
int main( int argc, char* args[] ) { //Start up SDL and create window if( !init() ) { printf( "Failed to initialize!\n" ); } else { //Load media if( !loadMedia() ) { printf( "Failed to load media!\n" ); } else { //Main loop flag bool quit = false; //Event handler SDL_Event e; //Set text color as black SDL_Color textColor = { 0, 0, 0, 0xFF }; //The current input text. std::string inputText = "Some Text"; gInputTextTexture.loadFromRenderedText( inputText.c_str(), textColor ); //Enable text input SDL_StartTextInput(); //While application is running while( !quit ) { //The rerender text flag bool renderText = false; //Handle events on queue while( SDL_PollEvent( &e ) != 0 ) { //User requests quit if( e.type == SDL_QUIT ) { quit = true; } //Special key input else if( e.type == SDL_KEYDOWN ) { //Handle backspace if( e.key.keysym.sym == SDLK_BACKSPACE && inputText.length() > 0 ) { //lop off character inputText.pop_back(); renderText = true; } //Handle copy else if( e.key.keysym.sym == SDLK_c && SDL_GetModState() & KMOD_CTRL ) { SDL_SetClipboardText( inputText.c_str() ); } //Handle paste else if( e.key.keysym.sym == SDLK_v && SDL_GetModState() & KMOD_CTRL ) { inputText = SDL_GetClipboardText(); renderText = true; } } //Special text input event else if( e.type == SDL_TEXTINPUT ) { //Not copy or pasting if( !( ( e.text.text[ 0 ] == 'c' || e.text.text[ 0 ] == 'C' ) && ( e.text.text[ 0 ] == 'v' || e.text.text[ 0 ] == 'V' ) && SDL_GetModState() & KMOD_CTRL ) ) { //Append character inputText += e.text.text; renderText = true; } } } //Rerender text if needed if( renderText ) { //Text is not empty if( inputText != "" ) { //Render new text gInputTextTexture.loadFromRenderedText( inputText.c_str(), textColor ); } //Text is empty else { //Render space texture gInputTextTexture.loadFromRenderedText( " ", textColor ); } } //Clear screen SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF ); SDL_RenderClear( gRenderer ); //Render text textures gPromptTextTexture.render( ( SCREEN_WIDTH - gPromptTextTexture.getWidth() ) / 2, 0 ); gInputTextTexture.render( ( SCREEN_WIDTH - gInputTextTexture.getWidth() ) / 2, gPromptTextTexture.getHeight() ); //Update screen SDL_RenderPresent( gRenderer ); } //Disable text input SDL_StopTextInput(); } } //Free resources and close SDL close(); return 0; }
bool DecafSDL::run(const std::string &gamePath) { auto shouldQuit = false; // Setup some basic window stuff auto window = mGraphicsDriver->getWindow(); setWindowIcon(window); if (config::display::mode == config::display::Fullscreen) { SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP); } // Setup OpenGL graphics driver auto graphicsDriver = mGraphicsDriver->getDecafDriver(); decaf::setGraphicsDriver(graphicsDriver); auto debugUiRenderer = mGraphicsDriver->getDecafDebugUiRenderer(); decaf::setDebugUiRenderer(debugUiRenderer); // Set input provider decaf::setInputDriver(this); decaf::addEventListener(this); openInputDevices(); // Set sound driver decaf::setSoundDriver(mSoundDriver); decaf::setClipboardTextCallbacks( [](void *context) -> const char * { return SDL_GetClipboardText(); }, [](void *context, const char *text) { SDL_SetClipboardText(text); }); // Initialise emulator if (!decaf::initialise(gamePath)) { return false; } // Start emulator decaf::start(); while (!shouldQuit && !decaf::hasExited()) { if (mVpad0Controller) { SDL_GameControllerUpdate(); } SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_WINDOWEVENT: if (event.window.event == SDL_WINDOWEVENT_CLOSE) { shouldQuit = true; } break; case SDL_MOUSEBUTTONDOWN: decaf::injectMouseButtonInput(translateMouseButton(event.button.button), decaf::input::MouseAction::Press); break; case SDL_MOUSEBUTTONUP: decaf::injectMouseButtonInput(translateMouseButton(event.button.button), decaf::input::MouseAction::Release); break; case SDL_MOUSEWHEEL: decaf::injectScrollInput(static_cast<float>(event.wheel.x), static_cast<float>(event.wheel.y)); break; case SDL_MOUSEMOTION: decaf::injectMousePos(static_cast<float>(event.motion.x), static_cast<float>(event.motion.y)); break; case SDL_KEYDOWN: decaf::injectKeyInput(translateKeyCode(event.key.keysym), decaf::input::KeyboardAction::Press); break; case SDL_KEYUP: if (event.key.keysym.sym == SDLK_TAB) { mToggleDRC = !mToggleDRC; } if (event.key.keysym.sym == SDLK_ESCAPE) { shouldQuit = true; } decaf::injectKeyInput(translateKeyCode(event.key.keysym), decaf::input::KeyboardAction::Release); break; case SDL_TEXTINPUT: decaf::injectTextInput(event.text.text); break; case SDL_QUIT: shouldQuit = true; break; } } Viewport tvViewport, drcViewport; calculateScreenViewports(tvViewport, drcViewport); mGraphicsDriver->renderFrame(tvViewport, drcViewport); } // Shut down decaf decaf::shutdown(); // Shut down graphics mGraphicsDriver->shutdown(); return true; }
void TextField::handleKeyboard(const SDL_Event& keyEvent) { if (editable_) { switch (keyEvent.type) { case SDL_TEXTINPUT: // Update only if the glyph is avaiable. if (font_.getTtfFont() != 0 && 0 == TTF_SizeUTF8(font_.getTtfFont(), keyEvent.text.text, 0, 0)) { // A Utf8 string as input. inputFormatter_.update(keyEvent.text.text); text_.setText(inputFormatter_.getText()); markerChanged_ = true; } break; case SDL_KEYDOWN: // Reset marker animation. markerDeltaTime_ = 0; switch (keyEvent.key.keysym.sym) { case SDLK_v: // Paste from clipboard! if ((keyEvent.key.keysym.mod & KMOD_CTRL) && SDL_HasClipboardText()) { char* text = SDL_GetClipboardText(); inputFormatter_.update(SDL_GetClipboardText()); text_.setText(inputFormatter_.getText()); markerChanged_ = true; SDL_free(text); } break; case SDLK_c: // Copy from textfield! if (keyEvent.key.keysym.mod & KMOD_CTRL) { SDL_SetClipboardText(inputFormatter_.getText().c_str()); } break; case SDLK_x: // Cut from textfield! if (keyEvent.key.keysym.mod & KMOD_CTRL) { SDL_SetClipboardText(inputFormatter_.getText().c_str()); inputFormatter_.clear(); text_.setText(inputFormatter_.getText()); markerChanged_ = true; } break; case SDLK_HOME: inputFormatter_.update(InputFormatter::INPUT_MOVE_MARKER_HOME); markerChanged_ = true; break; case SDLK_END: inputFormatter_.update(InputFormatter::INPUT_MOVE_MARKER_END); markerChanged_ = true; break; case SDLK_LEFT: inputFormatter_.update(InputFormatter::INPUT_MOVE_MARKER_LEFT); markerChanged_ = true; break; case SDLK_RIGHT: inputFormatter_.update(InputFormatter::INPUT_MOVE_MARKER_RIGHT); markerChanged_ = true; break; case SDLK_BACKSPACE: inputFormatter_.update(InputFormatter::INPUT_ERASE_LEFT); text_.setText(inputFormatter_.getText()); markerChanged_ = true; break; case SDLK_DELETE: inputFormatter_.update(InputFormatter::INPUT_ERASE_RIGHT); text_.setText(inputFormatter_.getText()); markerChanged_ = true; break; case SDLK_RETURN: // Fall through! case SDLK_KP_ENTER: doAction(); break; } break; } if (markerChanged_) { markerChanged_ = false; int index = inputFormatter_.getMarkerPosition(); std::string leftText = getText().substr(0, index); int w, h; if (font_.getTtfFont()) { TTF_SizeUTF8(font_.getTtfFont(), leftText.c_str(), &w, &h); // One pixel to the right of the last character. } markerWidth_ = (float) w + 1; } } }
void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) { int i; if (state->verbose & VERBOSE_EVENT) { SDLTest_PrintEvent(event); } switch (event->type) { case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_SIZE_CHANGED: { SDL_Window *window = SDL_GetWindowFromID(event->window.windowID); if (window) { for (i = 0; i < state->num_windows; ++i) { if (window == state->windows[i] && (state->window_flags & SDL_WINDOW_RESIZABLE)) { SDL_Rect viewport; viewport.x = 0; viewport.y = 0; SDL_GetWindowSize(window, &viewport.w, &viewport.h); SDL_RenderSetViewport(state->renderers[i], &viewport); } } } } break; case SDL_WINDOWEVENT_CLOSE: { SDL_Window *window = SDL_GetWindowFromID(event->window.windowID); if (window) { SDL_DestroyWindow(window); } } break; } break; case SDL_KEYDOWN: switch (event->key.keysym.sym) { /* Add hotkeys here */ case SDLK_PRINTSCREEN: { SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { for (i = 0; i < state->num_windows; ++i) { if (window == state->windows[i]) { SDLTest_ScreenShot(state->renderers[i]); } } } } break; case SDLK_EQUALS: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrt-+ double the size of the window */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { int w, h; SDL_GetWindowSize(window, &w, &h); SDL_SetWindowSize(window, w*2, h*2); } } break; case SDLK_MINUS: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrt-- double the size of the window */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { int w, h; SDL_GetWindowSize(window, &w, &h); SDL_SetWindowSize(window, w/2, h/2); } } break; case SDLK_c: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-C copy awesome text! */ SDL_SetClipboardText("SDL rocks!\nYou know it!"); printf("Copied text to clipboard\n"); } break; case SDLK_v: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-V paste awesome text! */ char *text = SDL_GetClipboardText(); if (*text) { printf("Clipboard: %s\n", text); } else { printf("Clipboard is empty\n"); } SDL_free(text); } break; case SDLK_g: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-G toggle grab */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { SDL_SetWindowGrab(window, !SDL_GetWindowGrab(window)); } } break; case SDLK_m: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-M maximize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { Uint32 flags = SDL_GetWindowFlags(window); if (flags & SDL_WINDOW_MAXIMIZED) { SDL_RestoreWindow(window); } else { SDL_MaximizeWindow(window); } } } break; case SDLK_r: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-R toggle mouse relative mode */ SDL_SetRelativeMouseMode(!SDL_GetRelativeMouseMode()); } break; case SDLK_z: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-Z minimize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { SDL_MinimizeWindow(window); } } break; case SDLK_RETURN: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-Enter toggle fullscreen */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { Uint32 flags = SDL_GetWindowFlags(window); if (flags & SDL_WINDOW_FULLSCREEN) { SDL_SetWindowFullscreen(window, SDL_FALSE); } else { SDL_SetWindowFullscreen(window, SDL_TRUE); } } } break; case SDLK_b: if (event->key.keysym.mod & KMOD_CTRL) { /* Ctrl-B toggle window border */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { const Uint32 flags = SDL_GetWindowFlags(window); const SDL_bool b = ((flags & SDL_WINDOW_BORDERLESS) != 0); SDL_SetWindowBordered(window, b); } } break; case SDLK_1: if (event->key.keysym.mod & KMOD_CTRL) { SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Test Message", "You're awesome!", window); } break; case SDLK_ESCAPE: *done = 1; break; default: break; } break; case SDL_QUIT: *done = 1; break; } }
void Clipboard::SetText (const char* text) { SDL_SetClipboardText (text); }
/* ================ Sys_SetClipboardData write screenshot into clipboard ================ */ void Sys_SetClipboardData( const byte *buffer, size_t size ) { #ifdef XASH_SDL SDL_SetClipboardText(buffer); #endif }