aboutsummaryrefslogtreecommitdiffstats
path: root/src/window-xlib.c
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-23 19:10:44 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-23 19:21:54 -0400
commit219bed8179b62db44b3a55e445733dcd9feed785 (patch)
tree9f11a5102fbbc1b23604ce86be5d9cc3c6d5c597 /src/window-xlib.c
parentb50c050613d488d507d6d4c8ff4b865db476d384 (diff)
downloadrunes-219bed8179b62db44b3a55e445733dcd9feed785.tar.gz
runes-219bed8179b62db44b3a55e445733dcd9feed785.zip
refactor
Diffstat (limited to 'src/window-xlib.c')
-rw-r--r--src/window-xlib.c63
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(