summaryrefslogtreecommitdiff
path: root/gdk/x11/gdkdevicemanager-xi2.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2011-02-04 20:58:41 -0500
committerMatthias Clasen <mclasen@redhat.com>2011-02-04 21:11:40 -0500
commit2c352f51a0e5578d300d34211ef20ead6dd793e7 (patch)
treede14bcca45aedc5b5f50a3a78d8b9df45ae1016d /gdk/x11/gdkdevicemanager-xi2.c
parent4960a810828cf4d9d87d26396be173b1125c6a45 (diff)
downloadgtk+-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.c66
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);