From 560d8b013569877f67445449935d98507eb868b0 Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Wed, 15 Aug 2012 21:59:01 +0300 Subject: inputs: handle SPICE_MSGC_INPUTS_KEY_SCANCODE Handle SPICE_MSGC_INPUTS_KEY_SCANCODE message, allowing arbitrary keyboard scancode sequence. --- server/inputs_channel.c | 10 ++++++++++ spice-common | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/server/inputs_channel.c b/server/inputs_channel.c index acfbcff3..ada5a423 100644 --- a/server/inputs_channel.c +++ b/server/inputs_channel.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "common/marshaller.h" #include "common/messages.h" @@ -327,6 +328,14 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui } break; } + case SPICE_MSGC_INPUTS_KEY_SCANCODE: { + uint32_t i; + uint8_t *code = (uint8_t *)buf; + for (i = 0; i < size; i++) { + kbd_push_scan(keyboard, code[i]); + } + break; + } case SPICE_MSGC_INPUTS_MOUSE_MOTION: { SpiceMsgcMouseMotion *mouse_motion = (SpiceMsgcMouseMotion *)buf; @@ -618,6 +627,7 @@ void inputs_init(void) client_cbs.migrate = inputs_migrate; red_channel_register_client_cbs(&g_inputs_channel->base, &client_cbs); + red_channel_set_cap(&g_inputs_channel->base, SPICE_INPUTS_CAP_KEY_SCANCODE); reds_register_channel(&g_inputs_channel->base); if (!(key_modifiers_timer = core->timer_add(key_modifiers_sender, NULL))) { diff --git a/spice-common b/spice-common index 2c55c9d0..86e286ba 160000 --- a/spice-common +++ b/spice-common @@ -1 +1 @@ -Subproject commit 2c55c9d0c6a5752a16f5e22667196b461c85d4c8 +Subproject commit 86e286ba2003c206e700fd70ec67c1cf4ac8d8a6 -- cgit