diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-11-05 19:29:41 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-11-05 19:29:41 +0000 |
commit | 80e0158112b73029d27452bc08b18079df3f898c (patch) | |
tree | 62d607ca82c9cbb5e73603e050f7510d2d287eaa /tmux.h | |
parent | 05855393f0e9c7c9228da3d6388c6d02a3083ef4 (diff) | |
download | rtmux-80e0158112b73029d27452bc08b18079df3f898c.tar.gz rtmux-80e0158112b73029d27452bc08b18079df3f898c.tar.bz2 rtmux-80e0158112b73029d27452bc08b18079df3f898c.zip |
Switch the tty key tree over to an (unbalanced) ternary tree which allows
partial matches to be done (they wait for further data or a timer to expire,
like a naked escape).
Mouse and xterm-style keys still expect to be atomic.
Diffstat (limited to 'tmux.h')
-rw-r--r-- | tmux.h | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -936,10 +936,13 @@ ARRAY_DECL(sessions, struct session *); /* TTY information. */ struct tty_key { + char ch; int key; - char *string; - RB_ENTRY(tty_key) entry; + struct tty_key *left; + struct tty_key *right; + + struct tty_key *next; }; struct tty_term { @@ -998,9 +1001,7 @@ struct tty { void (*key_callback)(int, struct mouse_event *, void *); void *key_data; struct event key_timer; - - size_t ksize; /* maximum key size */ - RB_HEAD(tty_keys, tty_key) ktree; + struct tty_key *key_tree; }; /* TTY command context and function pointer. */ @@ -1351,8 +1352,6 @@ int tty_term_number(struct tty_term *, enum tty_code_code); int tty_term_flag(struct tty_term *, enum tty_code_code); /* tty-keys.c */ -int tty_keys_cmp(struct tty_key *, struct tty_key *); -RB_PROTOTYPE(tty_keys, tty_key, entry, tty_keys_cmp); void tty_keys_init(struct tty *); void tty_keys_free(struct tty *); int tty_keys_next(struct tty *); |