ACK Christophe On Fri, Nov 23, 2012 at 01:41:08PM +0100, Marc-André Lureau wrote: > To be compatible with RHEVM, VirtViewerFile hotkey format will use the > Spice Controller format. > --- > src/remote-viewer.c | 115 +------------------------------------------------ > src/virt-viewer-util.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ > src/virt-viewer-util.h | 2 + > 3 files changed, 116 insertions(+), 114 deletions(-) > > diff --git a/src/remote-viewer.c b/src/remote-viewer.c > index 55df838..72b1ca8 100644 > --- a/src/remote-viewer.c > +++ b/src/remote-viewer.c > @@ -435,119 +435,6 @@ remote_viewer_get_spice_session(RemoteViewer *self) > return session; > } > > -static gchar * > -ctrl_key_to_gtk_key(const gchar *key) > -{ > - int i; > - > - static const struct { > - const char *ctrl; > - const char *gtk; > - } keys[] = { > - /* FIXME: right alt, right ctrl, right shift, cmds */ > - { "alt", "<Alt>" }, > - { "ralt", "<Alt>" }, > - { "rightalt", "<Alt>" }, > - { "right-alt", "<Alt>" }, > - { "lalt", "<Alt>" }, > - { "leftalt", "<Alt>" }, > - { "left-alt", "<Alt>" }, > - > - { "ctrl", "<Ctrl>" }, > - { "rctrl", "<Ctrl>" }, > - { "rightctrl", "<Ctrl>" }, > - { "right-ctrl", "<Ctrl>" }, > - { "lctrl", "<Ctrl>" }, > - { "leftctrl", "<Ctrl>" }, > - { "left-ctrl", "<Ctrl>" }, > - > - { "shift", "<Shift>" }, > - { "rshift", "<Shift>" }, > - { "rightshift", "<Shift>" }, > - { "right-shift", "<Shift>" }, > - { "lshift", "<Shift>" }, > - { "leftshift", "<Shift>" }, > - { "left-shift", "<Shift>" }, > - > - { "cmd", "<Ctrl>" }, > - { "rcmd", "<Ctrl>" }, > - { "rightcmd", "<Ctrl>" }, > - { "right-cmd", "<Ctrl>" }, > - { "lcmd", "<Ctrl>" }, > - { "leftcmd", "<Ctrl>" }, > - { "left-cmd", "<Ctrl>" }, > - > - { "win", "<Super>" }, > - { "rwin", "<Super>" }, > - { "rightwin", "<Super>" }, > - { "right-win", "<Super>" }, > - { "lwin", "<Super>" }, > - { "leftwin", "<Super>" }, > - { "left-win", "<Super>" }, > - > - { "esc", "Escape" }, > - /* { "escape", "Escape" }, */ > - > - { "ins", "Insert" }, > - /* { "insert", "Insert" }, */ > - > - { "del", "Delete" }, > - /* { "delete", "Delete" }, */ > - > - { "pgup", "Page_Up" }, > - { "pageup", "Page_Up" }, > - { "pgdn", "Page_Down" }, > - { "pagedown", "Page_Down" }, > - > - /* { "home", "home" }, */ > - /* { "end", "end" }, */ > - /* { "space", "space" }, */ > - > - { "enter", "Return" }, > - > - /* { "tab", "tab" }, */ > - /* { "f1", "F1" }, */ > - /* { "f2", "F2" }, */ > - /* { "f3", "F3" }, */ > - /* { "f4", "F4" }, */ > - /* { "f5", "F5" }, */ > - /* { "f6", "F6" }, */ > - /* { "f7", "F7" }, */ > - /* { "f8", "F8" }, */ > - /* { "f9", "F9" }, */ > - /* { "f10", "F10" }, */ > - /* { "f11", "F11" }, */ > - /* { "f12", "F12" } */ > - }; > - > - for (i = 0; i < G_N_ELEMENTS(keys); ++i) { > - if (g_ascii_strcasecmp(keys[i].ctrl, key) == 0) > - return g_strdup(keys[i].gtk); > - } > - > - return g_ascii_strup(key, -1); > -} > - > -static gchar* > -ctrl_key_to_gtk_accelerator(const gchar *key) > -{ > - gchar *accel, **k, **keyv; > - > - keyv = g_strsplit(key, "+", -1); > - g_return_val_if_fail(keyv != NULL, NULL); > - > - for (k = keyv; *k != NULL; k++) { > - gchar *tmp = *k; > - *k = ctrl_key_to_gtk_key(tmp); > - g_free(tmp); > - } > - > - accel = g_strjoinv(NULL, keyv); > - g_strfreev(keyv); > - > - return accel; > -} > - > static void > app_notified(VirtViewerApp *app, > GParamSpec *pspec, > @@ -635,7 +522,7 @@ spice_ctrl_notified(SpiceCtrlController *ctrl, > } > *key = '\0'; > > - gchar *accel = ctrl_key_to_gtk_accelerator(key + 1); > + gchar *accel = spice_hotkey_to_gtk_accelerator(key + 1); > guint accel_key; > GdkModifierType accel_mods; > gtk_accelerator_parse(accel, &accel_key, &accel_mods); > diff --git a/src/virt-viewer-util.c b/src/virt-viewer-util.c > index 81704b9..48a6978 100644 > --- a/src/virt-viewer-util.c > +++ b/src/virt-viewer-util.c > @@ -295,6 +295,119 @@ void virt_viewer_util_init(const char *appname) > g_set_application_name(appname); > } > > +static gchar * > +ctrl_key_to_gtk_key(const gchar *key) > +{ > + int i; > + > + static const struct { > + const char *ctrl; > + const char *gtk; > + } keys[] = { > + /* FIXME: right alt, right ctrl, right shift, cmds */ > + { "alt", "<Alt>" }, > + { "ralt", "<Alt>" }, > + { "rightalt", "<Alt>" }, > + { "right-alt", "<Alt>" }, > + { "lalt", "<Alt>" }, > + { "leftalt", "<Alt>" }, > + { "left-alt", "<Alt>" }, > + > + { "ctrl", "<Ctrl>" }, > + { "rctrl", "<Ctrl>" }, > + { "rightctrl", "<Ctrl>" }, > + { "right-ctrl", "<Ctrl>" }, > + { "lctrl", "<Ctrl>" }, > + { "leftctrl", "<Ctrl>" }, > + { "left-ctrl", "<Ctrl>" }, > + > + { "shift", "<Shift>" }, > + { "rshift", "<Shift>" }, > + { "rightshift", "<Shift>" }, > + { "right-shift", "<Shift>" }, > + { "lshift", "<Shift>" }, > + { "leftshift", "<Shift>" }, > + { "left-shift", "<Shift>" }, > + > + { "cmd", "<Ctrl>" }, > + { "rcmd", "<Ctrl>" }, > + { "rightcmd", "<Ctrl>" }, > + { "right-cmd", "<Ctrl>" }, > + { "lcmd", "<Ctrl>" }, > + { "leftcmd", "<Ctrl>" }, > + { "left-cmd", "<Ctrl>" }, > + > + { "win", "<Super>" }, > + { "rwin", "<Super>" }, > + { "rightwin", "<Super>" }, > + { "right-win", "<Super>" }, > + { "lwin", "<Super>" }, > + { "leftwin", "<Super>" }, > + { "left-win", "<Super>" }, > + > + { "esc", "Escape" }, > + /* { "escape", "Escape" }, */ > + > + { "ins", "Insert" }, > + /* { "insert", "Insert" }, */ > + > + { "del", "Delete" }, > + /* { "delete", "Delete" }, */ > + > + { "pgup", "Page_Up" }, > + { "pageup", "Page_Up" }, > + { "pgdn", "Page_Down" }, > + { "pagedown", "Page_Down" }, > + > + /* { "home", "home" }, */ > + /* { "end", "end" }, */ > + /* { "space", "space" }, */ > + > + { "enter", "Return" }, > + > + /* { "tab", "tab" }, */ > + /* { "f1", "F1" }, */ > + /* { "f2", "F2" }, */ > + /* { "f3", "F3" }, */ > + /* { "f4", "F4" }, */ > + /* { "f5", "F5" }, */ > + /* { "f6", "F6" }, */ > + /* { "f7", "F7" }, */ > + /* { "f8", "F8" }, */ > + /* { "f9", "F9" }, */ > + /* { "f10", "F10" }, */ > + /* { "f11", "F11" }, */ > + /* { "f12", "F12" } */ > + }; > + > + for (i = 0; i < G_N_ELEMENTS(keys); ++i) { > + if (g_ascii_strcasecmp(keys[i].ctrl, key) == 0) > + return g_strdup(keys[i].gtk); > + } > + > + return g_ascii_strup(key, -1); > +} > + > +gchar* > +spice_hotkey_to_gtk_accelerator(const gchar *key) > +{ > + gchar *accel, **k, **keyv; > + > + keyv = g_strsplit(key, "+", -1); > + g_return_val_if_fail(keyv != NULL, NULL); > + > + for (k = keyv; *k != NULL; k++) { > + gchar *tmp = *k; > + *k = ctrl_key_to_gtk_key(tmp); > + g_free(tmp); > + } > + > + accel = g_strjoinv(NULL, keyv); > + g_strfreev(keyv); > + > + return accel; > +} > + > /* > * Local variables: > * c-indent-level: 4 > diff --git a/src/virt-viewer-util.h b/src/virt-viewer-util.h > index 1c29cab..43e3017 100644 > --- a/src/virt-viewer-util.h > +++ b/src/virt-viewer-util.h > @@ -48,6 +48,8 @@ gulong virt_viewer_signal_connect_object(gpointer instance, > gpointer gobject, > GConnectFlags connect_flags); > > +gchar* spice_hotkey_to_gtk_accelerator(const gchar *key); > + > #endif > > /* > -- > 1.7.11.7 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list
Attachment:
pgpTK8eD98YQ6.pgp
Description: PGP signature
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list