mirror of
https://github.com/tmate-io/tmate.git
synced 2025-07-19 15:15:09 +02:00
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.
This commit is contained in:
13
tmux.h
13
tmux.h
@ -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 *);
|
||||
|
Reference in New Issue
Block a user