The branch, master has been updated via 8df3ec612a8c496fc2c975b8241f4e95faef5715 (commit) from 4c91c153cb087e1256578da1e53f002edefc9958 (commit)
- Log ----------------------------------------------------------------- commit 8df3ec612a8c496fc2c975b8241f4e95faef5715 Author: Nicholas Marriott <nicholas.marri...@gmail.com> Commit: Nicholas Marriott <nicholas.marri...@gmail.com> In terminals with XT, turn on modifyOtherKeys=1 with the escape sequence and handle the most common set. Pass them through if xterm-keys is on. --- key-string.c | 11 ++++++----- tty.c | 5 ++++- xterm-keys.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/key-string.c b/key-string.c index df17739..797eedd 100644 --- a/key-string.c +++ b/key-string.c @@ -136,9 +136,10 @@ key_string_get_modifiers(const char **string) int key_string_lookup_string(const char *string) { - int key, modifiers; - u_short u; - int size; + static const char *other = "!#()+,-.0123456789:;<=>?'\r\t"; + int key, modifiers; + u_short u; + int size; /* Is this a hexadecimal value? */ if (string[0] == '0' && string[1] == 'x') { @@ -170,7 +171,7 @@ key_string_lookup_string(const char *string) } /* Convert the standard control keys. */ - if (key < KEYC_BASE && (modifiers & KEYC_CTRL)) { + if (key < KEYC_BASE && (modifiers & KEYC_CTRL) && !strchr(other, key)) { if (key >= 97 && key <= 122) key -= 96; else if (key >= 64 && key <= 95) @@ -193,7 +194,7 @@ key_string_lookup_key(int key) { static char out[24]; char tmp[8]; - u_int i; + u_int i; *out = '\0'; diff --git a/tty.c b/tty.c index 892960f..cc83434 100644 --- a/tty.c +++ b/tty.c @@ -223,7 +223,7 @@ tty_start_tty(struct tty *tty) tty_puts(tty, "\033[?1000l"); if (tty_term_has(tty->term, TTYC_XT)) - tty_puts(tty, "\033[c"); + tty_puts(tty, "\033[c\033[>4;1m"); tty->cx = UINT_MAX; tty->cy = UINT_MAX; @@ -285,6 +285,9 @@ tty_stop_tty(struct tty *tty) if (tty_term_has(tty->term, TTYC_KMOUS)) tty_raw(tty, "\033[?1000l"); + if (tty_term_has(tty->term, TTYC_XT)) + tty_puts(tty, "\033[>4m"); + tty_raw(tty, tty_term_string(tty->term, TTYC_RMCUP)); setblocking(tty->fd, 1); diff --git a/xterm-keys.c b/xterm-keys.c index f09072c..8c88587 100644 --- a/xterm-keys.c +++ b/xterm-keys.c @@ -87,6 +87,34 @@ const struct xterm_keys_entry xterm_keys_table[] = { { KEYC_NPAGE, "\033[6;_~" }, { KEYC_IC, "\033[2;_~" }, { KEYC_DC, "\033[3;_~" }, + + { '!', "\033[27;_;33~" }, + { '#', "\033[27;_;35~" }, + { '(', "\033[27;_;40~" }, + { ')', "\033[27;_;41~" }, + { '+', "\033[27;_;43~" }, + { ',', "\033[27;_;44~" }, + { '-', "\033[27;_;45~" }, + { '.', "\033[27;_;46~" }, + { '0', "\033[27;_;48~" }, + { '1', "\033[27;_;49~" }, + { '2', "\033[27;_;50~" }, + { '3', "\033[27;_;51~" }, + { '4', "\033[27;_;52~" }, + { '5', "\033[27;_;53~" }, + { '6', "\033[27;_;54~" }, + { '7', "\033[27;_;55~" }, + { '8', "\033[27;_;56~" }, + { '9', "\033[27;_;57~" }, + { ':', "\033[27;_;58~" }, + { ';', "\033[27;_;59~" }, + { '<', "\033[27;_;60~" }, + { '=', "\033[27;_;61~" }, + { '>', "\033[27;_;62~" }, + { '?', "\033[27;_;63~" }, + { '\'', "\033[27;_;39~" }, + { '\r', "\033[27;_;13~" }, + { '\t', "\033[27;_;9~" }, }; /* ----------------------------------------------------------------------- Summary of changes: key-string.c | 11 ++++++----- tty.c | 5 ++++- xterm-keys.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 6 deletions(-) hooks/post-receive -- tmux ------------------------------------------------------------------------------ The Go Parallel Website, sponsored by Intel - in partnership with Geeknet, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials, tech docs, whitepapers, evaluation guides, and opinion stories. Check out the most recent posts - join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ tmux-cvs mailing list tmux-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-cvs