diff options
Diffstat (limited to 'qemu-gtk.c')
-rw-r--r-- | qemu-gtk.c | 51 |
1 files changed, 51 insertions, 0 deletions
@@ -9,6 +9,7 @@ #include <gdk/gdk.h> #include <gdk/gdkx.h> +#include <gdk/gdkkeysyms.h> #include <gtk/gtk.h> #include <vte/vte.h> #include <vncdisplay.h> @@ -105,6 +106,34 @@ static void menu_cb_scale_display(GtkToggleAction *action, gpointer userdata) vnc_display_set_scaling(VNC_DISPLAY(win->vnc), active); } +static void menu_cb_grab_mouse(GtkToggleAction *action, gpointer userdata) +{ + struct qemu_window *win = userdata; + gboolean active; + + active = gtk_toggle_action_get_active(action); + vnc_display_set_pointer_grab(VNC_DISPLAY(win->vnc), active); +} + +static void menu_cb_grab_kbd(GtkToggleAction *action, gpointer userdata) +{ + struct qemu_window *win = userdata; + gboolean active; + + active = gtk_toggle_action_get_active(action); + vnc_display_set_keyboard_grab(VNC_DISPLAY(win->vnc), active); +} + +static void menu_cb_send_ctrlaltdel(GtkToggleAction *action, gpointer userdata) +{ + struct qemu_window *win = userdata; + guint keys[] = { GDK_Control_L, GDK_Alt_L, GDK_Delete }; + + vnc_display_send_keys_ex(VNC_DISPLAY(win->vnc), + keys, sizeof (keys) / sizeof (keys[0]), + VNC_DISPLAY_KEY_EVENT_CLICK); +} + static void menu_cb_about(GtkAction *action, gpointer userdata) { static char *comments = "gtk ui for qemu"; @@ -393,6 +422,9 @@ static const GtkActionEntry entries[] = { .name = "ViewMenu", .label = "_View", },{ + .name = "InputMenu", + .label = "_Input", + },{ .name = "VMMenu", .label = "_VM", },{ @@ -407,6 +439,11 @@ static const GtkActionEntry entries[] = { .callback = G_CALLBACK(menu_cb_close), },{ + .name = "SendCtrlAltDel", + .label = "Send Ctrl-Alt-Del", + .callback = G_CALLBACK(menu_cb_send_ctrlaltdel), + + },{ .name = "MonitorStop", .stock_id = GTK_STOCK_MEDIA_PAUSE, .label = "_Pause", @@ -449,6 +486,14 @@ static const GtkToggleActionEntry tentries[] = { .label = "_Fullscreen", .accelerator = "F11", .callback = G_CALLBACK(menu_cb_fullscreen), + },{ + .name = "GrabMouse", + .label = "Enable _mouse grab", + .callback = G_CALLBACK(menu_cb_grab_mouse), + },{ + .name = "GrabKbd", + .label = "Enable _keyboard grab", + .callback = G_CALLBACK(menu_cb_grab_kbd), } }; @@ -462,6 +507,12 @@ static char ui_xml[] = " <menuitem action='ScaleDisplay'/>" " <menuitem action='FullScreen'/>" " </menu>" +" <menu action='InputMenu'>" +" <menuitem action='GrabMouse'/>" +" <menuitem action='GrabKbd'/>" +" <separator/>" +" <menuitem action='SendCtrlAltDel'/>" +" </menu>" " <menu action='VMMenu'>" " <menuitem action='MonitorStop'/>" " <menuitem action='MonitorCont'/>" |