From 2c352f51a0e5578d300d34211ef20ead6dd793e7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 4 Feb 2011 20:58:41 -0500 Subject: Share code to fill GdkEventKey.string This code was duplicated between the core and XI2 device manager implementations. --- gdk/x11/gdkdevicemanager-xi2.c | 66 +----------------------------------------- 1 file changed, 1 insertion(+), 65 deletions(-) (limited to 'gdk/x11/gdkdevicemanager-xi2.c') 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 @@ -708,70 +708,6 @@ set_user_time (GdkEvent *event) gdk_x11_window_set_user_time (window, time); } -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, @@ -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); -- cgit v1.2.1