Synchronize clipboard on Ctrl+v
Pressing Ctrl+v on the device will typically paste the clipboard content. Before sending the key event, synchronize the computer clipboard to the device clipboard to allow seamless copy-paste.
This commit is contained in:
parent
d4ca85d6a8
commit
7683be8159
1 changed files with 12 additions and 4 deletions
|
@ -326,13 +326,15 @@ input_manager_process_key(struct input_manager *im,
|
||||||
|
|
||||||
struct controller *controller = im->controller;
|
struct controller *controller = im->controller;
|
||||||
|
|
||||||
|
SDL_Keycode keycode = event->keysym.sym;
|
||||||
|
bool down = event->type == SDL_KEYDOWN;
|
||||||
|
bool ctrl = event->keysym.mod & KMOD_CTRL;
|
||||||
|
bool shift = event->keysym.mod & KMOD_SHIFT;
|
||||||
|
bool repeat = event->repeat;
|
||||||
|
|
||||||
// The shortcut modifier is pressed
|
// The shortcut modifier is pressed
|
||||||
if (smod) {
|
if (smod) {
|
||||||
SDL_Keycode keycode = event->keysym.sym;
|
|
||||||
bool down = event->type == SDL_KEYDOWN;
|
|
||||||
int action = down ? ACTION_DOWN : ACTION_UP;
|
int action = down ? ACTION_DOWN : ACTION_UP;
|
||||||
bool repeat = event->repeat;
|
|
||||||
bool shift = event->keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT);
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case SDLK_h:
|
case SDLK_h:
|
||||||
if (control && !shift && !repeat) {
|
if (control && !shift && !repeat) {
|
||||||
|
@ -457,6 +459,12 @@ input_manager_process_key(struct input_manager *im,
|
||||||
im->repeat = 0;
|
im->repeat = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctrl && !shift && keycode == SDLK_v && down && !repeat) {
|
||||||
|
// Synchronize the computer clipboard to the device clipboard before
|
||||||
|
// sending Ctrl+v, to allow seamless copy-paste.
|
||||||
|
set_device_clipboard(controller, false);
|
||||||
|
}
|
||||||
|
|
||||||
struct control_msg msg;
|
struct control_msg msg;
|
||||||
if (convert_input_key(event, &msg, im->prefer_text, im->repeat)) {
|
if (convert_input_key(event, &msg, im->prefer_text, im->repeat)) {
|
||||||
if (!controller_push_msg(controller, &msg)) {
|
if (!controller_push_msg(controller, &msg)) {
|
||||||
|
|
Loading…
Reference in a new issue