diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-04-23 19:10:44 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-04-23 19:21:54 -0400 |
commit | 219bed8179b62db44b3a55e445733dcd9feed785 (patch) | |
tree | 9f11a5102fbbc1b23604ce86be5d9cc3c6d5c597 | |
parent | b50c050613d488d507d6d4c8ff4b865db476d384 (diff) | |
download | runes-219bed8179b62db44b3a55e445733dcd9feed785.tar.gz runes-219bed8179b62db44b3a55e445733dcd9feed785.zip |
refactor
-rw-r--r-- | src/window-xlib.c | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/src/window-xlib.c b/src/window-xlib.c index b19e9d1..0b4b58b 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -90,6 +90,8 @@ static void runes_window_backend_draw_cursor(RunesTerm *t); static void runes_window_backend_set_urgent(RunesTerm *t); static void runes_window_backend_clear_urgent(RunesTerm *t); static void runes_window_backend_handle_key_event(RunesTerm *t, XKeyEvent *e); +static struct function_key *runes_window_backend_find_key_sequence( + RunesTerm *t, KeySym sym); static void runes_window_backend_handle_button_event( RunesTerm *t, XButtonEvent *e); static void runes_window_backend_handle_expose_event( @@ -563,49 +565,50 @@ static void runes_window_backend_handle_key_event(RunesTerm *t, XKeyEvent *e) case XLookupKeySym: { struct function_key *key; - if (t->application_keypad) { - if (t->application_cursor) { - key = &application_cursor_keys[0]; - while (key->sym != XK_VoidSymbol) { - if (key->sym == sym) { - break; - } - key++; - } - if (key->sym != XK_VoidSymbol) { - runes_pty_backend_write(t, key->str, key->len); - break; - } - } - key = &application_keypad_keys[0]; + key = runes_window_backend_find_key_sequence(t, sym); + if (key->sym != XK_VoidSymbol) { + runes_pty_backend_write(t, key->str, key->len); + } + break; + } + default: + break; + } + free(buf); +} + +static struct function_key *runes_window_backend_find_key_sequence( + RunesTerm *t, KeySym sym) +{ + struct function_key *key; + + if (t->application_keypad) { + if (t->application_cursor) { + key = &application_cursor_keys[0]; while (key->sym != XK_VoidSymbol) { if (key->sym == sym) { - break; + return key; } key++; } - if (key->sym != XK_VoidSymbol) { - runes_pty_backend_write(t, key->str, key->len); - break; - } } - key = &keys[0]; + key = &application_keypad_keys[0]; while (key->sym != XK_VoidSymbol) { if (key->sym == sym) { - break; + return key; } key++; } - if (key->sym != XK_VoidSymbol) { - runes_pty_backend_write(t, key->str, key->len); - break; - } - break; } - default: - break; + key = &keys[0]; + while (key->sym != XK_VoidSymbol) { + if (key->sym == sym) { + return key; + } + key++; } - free(buf); + + return key; } static void runes_window_backend_handle_button_event( |