diff options
author | Matthias Clasen <mclasen@redhat.com> | 2011-02-04 20:58:41 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2011-02-04 21:11:40 -0500 |
commit | 2c352f51a0e5578d300d34211ef20ead6dd793e7 (patch) | |
tree | de14bcca45aedc5b5f50a3a78d8b9df45ae1016d /gdk/x11/gdkdevicemanager-xi2.c | |
parent | 4960a810828cf4d9d87d26396be173b1125c6a45 (diff) | |
download | gtk+-2c352f51a0e5578d300d34211ef20ead6dd793e7.tar.gz |
Share code to fill GdkEventKey.string
This code was duplicated between the core and XI2 device manager
implementations.
Diffstat (limited to 'gdk/x11/gdkdevicemanager-xi2.c')
-rw-r--r-- | gdk/x11/gdkdevicemanager-xi2.c | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index 48bb94726a..33cd1ae27f 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -709,70 +709,6 @@ set_user_time (GdkEvent *event) } static void -translate_keyboard_string (GdkEventKey *event) -{ - gunichar c = 0; - gchar buf[7]; - - /* Fill in event->string crudely, since various programs - * depend on it. - */ - event->string = NULL; - - if (event->keyval != GDK_KEY_VoidSymbol) - c = gdk_keyval_to_unicode (event->keyval); - - if (c) - { - gsize bytes_written; - gint len; - - /* Apply the control key - Taken from Xlib - */ - if (event->state & GDK_CONTROL_MASK) - { - if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; - else if (c == '2') - { - event->string = g_memdup ("\0\0", 2); - event->length = 1; - buf[0] = '\0'; - return; - } - else if (c >= '3' && c <= '7') c -= ('3' - '\033'); - else if (c == '8') c = '\177'; - else if (c == '/') c = '_' & 0x1F; - } - - len = g_unichar_to_utf8 (c, buf); - buf[len] = '\0'; - - event->string = g_locale_from_utf8 (buf, len, - NULL, &bytes_written, - NULL); - if (event->string) - event->length = bytes_written; - } - else if (event->keyval == GDK_KEY_Escape) - { - event->length = 1; - event->string = g_strdup ("\033"); - } - else if (event->keyval == GDK_KEY_Return || - event->keyval == GDK_KEY_KP_Enter) - { - event->length = 1; - event->string = g_strdup ("\r"); - } - - if (!event->string) - { - event->length = 0; - event->string = g_strdup (""); - } -} - -static void generate_focus_event (GdkWindow *window, GdkDevice *device, GdkDevice *source_device, @@ -1108,7 +1044,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, _gdk_x11_keymap_add_virt_mods (keymap, &state); event->key.state |= state; - translate_keyboard_string ((GdkEventKey *) event); + _gdk_x11_event_translate_keyboard_string (&event->key); if (ev->evtype == XI_KeyPress) set_user_time (event); |