diff options
author | Rob <rob.manea@gmail.com> | 2010-02-19 12:44:37 +0100 |
---|---|---|
committer | Brendan Taylor <whateley@gmail.com> | 2011-04-18 20:23:42 -0600 |
commit | 60b4e20512df7b29e19aa3bb17532fd177928d4d (patch) | |
tree | eb60e1b33cab3713b1090a0b164fb97166b829ca /src/events.c | |
parent | 4b106c13eb642f865c4bed2bc149c703e3fe7534 (diff) |
added MOD_PRESS/RELEASE events that denote X modifier keys
Diffstat (limited to 'src/events.c')
-rw-r--r-- | src/events.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/events.c b/src/events.c index 45b2ef1..013bd85 100644 --- a/src/events.c +++ b/src/events.c @@ -23,6 +23,8 @@ const char *event_table[LAST_EVENT] = { "REQUEST_STARTING" , "KEY_PRESS" , "KEY_RELEASE" , + "MOD_PRESS" , + "MOD_RELEASE" , "COMMAND_EXECUTED" , "LINK_HOVER" , "TITLE_CHANGED" , @@ -202,13 +204,12 @@ send_event(int type, const gchar *custom_event, ...) { /* Transform gdk key events to our own events */ void -key_to_event(guint keyval, guint state, gint mode) { +key_to_event(guint keyval, guint state, guint is_modifier, gint mode) { gchar ucs[7]; gint ulen; gchar *keyname; guint32 ukval = gdk_keyval_to_unicode(keyval); GString *modifiers = g_string_new(""); - gchar *details; /* check modifier state*/ if(state & GDK_MODIFIER_MASK) { @@ -256,13 +257,15 @@ key_to_event(guint keyval, guint state, gint mode) { } /* send keysym for non-printable chars */ else if((keyname = gdk_keyval_name(keyval))){ - send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, NULL, - TYPE_STR, modifiers->str, TYPE_NAME, keyname , NULL); + if(is_modifier) + send_event(mode == GDK_KEY_PRESS ? MOD_PRESS : MOD_RELEASE, NULL, + TYPE_STR, modifiers->str, TYPE_NAME, keyname , NULL); + else + send_event(mode == GDK_KEY_PRESS ? KEY_PRESS : KEY_RELEASE, NULL, + TYPE_STR, modifiers->str, TYPE_NAME, keyname , NULL); } g_string_free(modifiers, TRUE); - g_free(details); - } /* vi: set et ts=4: */ |