Loading ui/input-linux.c +54 −49 Original line number Diff line number Diff line Loading @@ -188,53 +188,39 @@ static void input_linux_toggle_grab(InputLinux *il) } } static void input_linux_event_keyboard(void *opaque) static void input_linux_handle_keyboard(InputLinux *il, struct input_event *event) { InputLinux *il = opaque; struct input_event event; int rc; for (;;) { rc = read(il->fd, &event, sizeof(event)); if (rc != sizeof(event)) { if (rc < 0 && errno != EAGAIN) { fprintf(stderr, "%s: read: %s\n", __func__, strerror(errno)); qemu_set_fd_handler(il->fd, NULL, NULL, NULL); close(il->fd); } break; } switch (event.type) { case EV_KEY: if (event.value > 2 || (event.value > 1 && !il->repeat)) { if (event->type == EV_KEY) { if (event->value > 2 || (event->value > 1 && !il->repeat)) { /* * ignore autorepeat + unknown key events * 0 == up, 1 == down, 2 == autorepeat, other == undefined */ continue; return; } if (event.code >= KEY_CNT) { if (event->code >= KEY_CNT) { /* * Should not happen. But better safe than sorry, * and we make Coverity happy too. */ continue; return; } /* keep track of key state */ if (!il->keydown[event.code] && event.value) { il->keydown[event.code] = true; if (!il->keydown[event->code] && event->value) { il->keydown[event->code] = true; il->keycount++; } if (il->keydown[event.code] && !event.value) { il->keydown[event.code] = false; if (il->keydown[event->code] && !event->value) { il->keydown[event->code] = false; il->keycount--; } /* send event to guest when grab is active */ if (il->grab_active) { int qcode = qemu_input_linux_to_qcode(event.code); qemu_input_event_send_key_qcode(NULL, qcode, event.value); int qcode = qemu_input_linux_to_qcode(event->code); qemu_input_event_send_key_qcode(NULL, qcode, event->value); } /* hotkey -> record switch request ... */ Loading @@ -252,8 +238,27 @@ static void input_linux_event_keyboard(void *opaque) il->grab_request = false; input_linux_toggle_grab(il); } } } static void input_linux_event_keyboard(void *opaque) { InputLinux *il = opaque; struct input_event event; int rc; for (;;) { rc = read(il->fd, &event, sizeof(event)); if (rc != sizeof(event)) { if (rc < 0 && errno != EAGAIN) { fprintf(stderr, "%s: read: %s\n", __func__, strerror(errno)); qemu_set_fd_handler(il->fd, NULL, NULL, NULL); close(il->fd); } break; } input_linux_handle_keyboard(il, &event); } } Loading Loading
ui/input-linux.c +54 −49 Original line number Diff line number Diff line Loading @@ -188,53 +188,39 @@ static void input_linux_toggle_grab(InputLinux *il) } } static void input_linux_event_keyboard(void *opaque) static void input_linux_handle_keyboard(InputLinux *il, struct input_event *event) { InputLinux *il = opaque; struct input_event event; int rc; for (;;) { rc = read(il->fd, &event, sizeof(event)); if (rc != sizeof(event)) { if (rc < 0 && errno != EAGAIN) { fprintf(stderr, "%s: read: %s\n", __func__, strerror(errno)); qemu_set_fd_handler(il->fd, NULL, NULL, NULL); close(il->fd); } break; } switch (event.type) { case EV_KEY: if (event.value > 2 || (event.value > 1 && !il->repeat)) { if (event->type == EV_KEY) { if (event->value > 2 || (event->value > 1 && !il->repeat)) { /* * ignore autorepeat + unknown key events * 0 == up, 1 == down, 2 == autorepeat, other == undefined */ continue; return; } if (event.code >= KEY_CNT) { if (event->code >= KEY_CNT) { /* * Should not happen. But better safe than sorry, * and we make Coverity happy too. */ continue; return; } /* keep track of key state */ if (!il->keydown[event.code] && event.value) { il->keydown[event.code] = true; if (!il->keydown[event->code] && event->value) { il->keydown[event->code] = true; il->keycount++; } if (il->keydown[event.code] && !event.value) { il->keydown[event.code] = false; if (il->keydown[event->code] && !event->value) { il->keydown[event->code] = false; il->keycount--; } /* send event to guest when grab is active */ if (il->grab_active) { int qcode = qemu_input_linux_to_qcode(event.code); qemu_input_event_send_key_qcode(NULL, qcode, event.value); int qcode = qemu_input_linux_to_qcode(event->code); qemu_input_event_send_key_qcode(NULL, qcode, event->value); } /* hotkey -> record switch request ... */ Loading @@ -252,8 +238,27 @@ static void input_linux_event_keyboard(void *opaque) il->grab_request = false; input_linux_toggle_grab(il); } } } static void input_linux_event_keyboard(void *opaque) { InputLinux *il = opaque; struct input_event event; int rc; for (;;) { rc = read(il->fd, &event, sizeof(event)); if (rc != sizeof(event)) { if (rc < 0 && errno != EAGAIN) { fprintf(stderr, "%s: read: %s\n", __func__, strerror(errno)); qemu_set_fd_handler(il->fd, NULL, NULL, NULL); close(il->fd); } break; } input_linux_handle_keyboard(il, &event); } } Loading