diff options
Diffstat (limited to 'vnc.c')
-rw-r--r-- | vnc.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -289,8 +289,11 @@ static gboolean key_cb(GtkWidget *widget, GdkEventKey *event, int keydown; keydown = (8 == event->type); - if (event->hardware_keycode < linux_us_kbd_size) + if (vnc->keysyms) + keysym = event->keyval; + else if (event->hardware_keycode < linux_us_kbd_size) keysym = linux_us_kbd[event->hardware_keycode]; + if (keysym) SendKeyEvent(vnc->client, keysym, keydown ? TRUE : FALSE); else @@ -302,7 +305,8 @@ static gboolean key_cb(GtkWidget *widget, GdkEventKey *event, /* ------------------------------------------------------------------ */ /* public API functions */ -struct vnc_window* vnc_open(char *hostname, int displayno, int standalone) +struct vnc_window* vnc_open(char *hostname, int displayno, + int standalone, int keysyms) { char display[128]; char *argv[] = { "vnc-client", display, NULL }; @@ -315,6 +319,7 @@ struct vnc_window* vnc_open(char *hostname, int displayno, int standalone) goto err; memset(vnc,0,sizeof(*vnc)); vnc->standalone = standalone; + vnc->keysyms = keysyms; /* x11 */ vnc->dpy = gdk_x11_display_get_xdisplay(gdk_display_get_default()); |