char *start = words[i];
char *end = strchr (words[i], '>');
char *match;
- gunichar codepoint;
+ guint keyval;
if (words[i][0] == '\0')
continue;
if (is_codepoint (match))
{
- codepoint = (gunichar) g_ascii_strtoll (match + 1, NULL, 16);
- sequence[n] = codepoint;
+ keyval = gdk_unicode_to_keyval ((gunichar) g_ascii_strtoll (match + 1, NULL, 16));
+ if (keyval > 0xffff)
+ g_warning ("Can't handle >16bit keyvals");
+
+ sequence[n] = (guint16) keyval;
sequence[n + 1] = 0;
}
else
{
- codepoint = (gunichar) gdk_keyval_from_name (match);
- sequence[n] = codepoint;
+ keyval = gdk_keyval_from_name (match);
+ if (keyval > 0xffff)
+ g_warning ("Can't handle >16bit keyvals");
+
+ sequence[n] = (guint16) keyval;
sequence[n + 1] = 0;
}
- if (codepoint == GDK_KEY_VoidSymbol)
+ if (keyval == GDK_KEY_VoidSymbol)
g_warning ("Could not get code point of keysym %s", match);
g_free (match);
n++;