diff options
Diffstat (limited to 'events.c')
-rw-r--r-- | events.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -144,3 +144,21 @@ send_event(int type, const gchar *details, const gchar *custom_event) { } g_free(p_val); } + +/* Transform gdk key events to our own events */ +void +key_to_event(guint keyval, gint mode) { + char byte[2]; + + /* check for Latin-1 characters (1:1 mapping) */ + if ((keyval > 0x0020 && keyval <= 0x007e) || + (keyval >= 0x00a0 && keyval <= 0x00ff)) { + sprintf(byte, "%c", keyval); + send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, + byte, NULL); + } + else + send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, + gdk_keyval_name(keyval), NULL); + +} |