Sorry for the inconveniences caused but my last email was weirdly constructed and not properly viewable in the mailing list archive, so here's the contents again:
[+tmux-users] On 2014-04-29 17:51 +0000, daemianmack wrote: > Yes, reverting that commit [c52548f6fd311e4df3076ba4cc6f6ab8849557ac] > fixes the problem for me. Although I still can't test it but I think I know what happens. That commit contained this change: diff --git a/xterm-keys.c b/xterm-keys.c index 9b5a0a2..0e20165 100644 --- a/xterm-keys.c +++ b/xterm-keys.c @@ -131,7 +131,9 @@ xterm_keys_match(const char *template, const char *buf, size_t len) pos = 0; do { - if (*template != '_' && buf[pos] != *template) + if (*template == '_' && buf[pos] >= '1' && buf[pos] <= '8') + continue; + if (buf[pos] != *template) return (-1); } while (*++template != '\0' && ++pos != len); You can see that we care only about values between 1 and 8. But it seems that in iTerm2 you generate[1] a value with 9 and sometimes even with 10 if you press more modifiers[2]. You can take a look at "Solution 2" in [1] as an interim solution. But before that, could you please verify that things start to work if you replace that '8' above with a '9'? Nick, I think this is a bug in tmux and is troublesome for iTerm2 users. Would something along these lines work? Daemian, could you test this as well (even things like M-S-up)? Thanks! diff --git a/xterm-keys.c b/xterm-keys.c index af3f1e7..489b64a 100644 --- a/xterm-keys.c +++ b/xterm-keys.c @@ -18,6 +18,7 @@ #include <sys/types.h> +#include <ctype.h> #include <string.h> #include "tmux.h" @@ -131,10 +132,16 @@ xterm_keys_match(const char *template, const char *buf, size_t len) pos = 0; do { - if (*template == '_' && buf[pos] >= '1' && buf[pos] <= '8') - continue; - if (buf[pos] != *template) + if (*template == '_') { + if (!isdigit(buf[pos])) + return -1; + // Handle multidigit sequences like '\e[1;10A' for + // M-S-up in iTerm2. + while (pos+1 != len && isdigit(buf[pos+1])) + pos += 1; + } else if (buf[pos] != *template) { return (-1); + } } while (*++template != '\0' && ++pos != len); if (*template != '\0') /* partial */ [1] http://stackoverflow.com/questions/10867199 [2] http://webframp.com/blog/2013/02/22/fixing-emacs-bindings-on-the-in-iterm2/ -- Balazs ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available. Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users