This allows us to send keysyms directly into the guest.

Index: new/spice-common/spice-protocol/spice/vd_agent.h
===================================================================
--- new.orig/spice-common/spice-protocol/spice/vd_agent.h	2013-07-17 17:33:52.000000000 +0200
+++ new/spice-common/spice-protocol/spice/vd_agent.h	2013-10-14 09:49:57.000000000 +0200
@@ -73,6 +73,7 @@
     VD_AGENT_FILE_XFER_STATUS,
     VD_AGENT_FILE_XFER_DATA,
     VD_AGENT_CLIENT_DISCONNECTED,
+    VD_AGENT_KEYSYM_MESSAGE,
     VD_AGENT_END_MESSAGE,
 };
 
@@ -147,6 +148,14 @@
     uint8_t display_id;
 } VDAgentMouseState;
 
+#define VD_AGENT_KEYSYM_FLAG_DOWN (1 << 0)
+#define VD_AGENT_KEYSYM_FLAG_UP (1 << 1)
+
+typedef struct SPICE_ATTR_PACKED VDAgentKeySym {
+    uint32_t keysym;
+    uint32_t flags;
+} VDAgentKeySym;
+
 typedef struct SPICE_ATTR_PACKED VDAgentReply {
     uint32_t type;
     uint32_t error;
@@ -209,6 +218,7 @@
     VD_AGENT_CAP_SPARSE_MONITORS_CONFIG,
     VD_AGENT_CAP_GUEST_LINEEND_LF,
     VD_AGENT_CAP_GUEST_LINEEND_CRLF,
+    VD_AGENT_CAP_KEYSYM,
     VD_AGENT_END_CAP,
 };
 

