aboutsummaryrefslogtreecommitdiffhomepage
path: root/events.c
diff options
context:
space:
mode:
authorGravatar Rob <rob.manea@gmail.com>2009-11-14 18:44:02 +0100
committerGravatar Rob <rob.manea@gmail.com>2009-11-14 18:44:02 +0100
commitfa120578db5fa99dd03167b440ab0eb9b06defe9 (patch)
treedf2d1891ef8524fc27f05722237663eed1d5b6cb /events.c
parentb7629a9a2afa1b5305eb456ccae365112df94c3c (diff)
convert KEY_PRESS/RELEASE to utf8
Diffstat (limited to 'events.c')
-rw-r--r--events.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/events.c b/events.c
index d123082..0fc9f5d 100644
--- a/events.c
+++ b/events.c
@@ -181,13 +181,17 @@ send_event(int type, const gchar *details, const gchar *custom_event) {
void
key_to_event(guint keyval, gint mode) {
char byte[2] = {0, 0};
+ gchar *utf_conv = NULL;
/* check for Latin-1 characters (1:1 mapping) */
if ((keyval > 0x0020 && keyval <= 0x007e) ||
(keyval >= 0x0080 && keyval <= 0x00ff)) {
- sprintf(byte, "%c", keyval);
- send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE,
- byte, NULL);
+ byte[0] = (char) keyval;
+
+ /* convert to utf-8 */
+ utf_conv = g_convert(byte, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
+
+ send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, utf_conv ? utf_conv : byte, NULL);
}
else
send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE,