[BACK]Return to tty-keys.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/tty-keys.c between version 1.96 and 1.97

version 1.96, 2017/04/18 21:41:42 version 1.97, 2017/05/07 21:25:59
Line 257 
Line 257 
         { TTYC_KCUB1, KEYC_LEFT },          { TTYC_KCUB1, KEYC_LEFT },
         { TTYC_KCUF1, KEYC_RIGHT },          { TTYC_KCUF1, KEYC_RIGHT },
   
         /* Key and modifier capabilities. */          /*
         { TTYC_KDC2, KEYC_DC|KEYC_SHIFT },           * Key and modifier capabilities. We set the xterm flag to mark that
         { TTYC_KDC3, KEYC_DC|KEYC_ESCAPE },           * any leading escape means an escape key press and not the modifier.
         { TTYC_KDC4, KEYC_DC|KEYC_SHIFT|KEYC_ESCAPE },           */
         { TTYC_KDC5, KEYC_DC|KEYC_CTRL },          { TTYC_KDC2, KEYC_DC|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KDC6, KEYC_DC|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KDC3, KEYC_DC|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KDC7, KEYC_DC|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KDC4, KEYC_DC|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KDN2, KEYC_DOWN|KEYC_SHIFT },          { TTYC_KDC5, KEYC_DC|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KDN3, KEYC_DOWN|KEYC_ESCAPE },          { TTYC_KDC6, KEYC_DC|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KDN4, KEYC_DOWN|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KDC7, KEYC_DC|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KDN5, KEYC_DOWN|KEYC_CTRL },          { TTYC_KDN2, KEYC_DOWN|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KDN6, KEYC_DOWN|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KDN3, KEYC_DOWN|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KDN7, KEYC_DOWN|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KDN4, KEYC_DOWN|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KEND2, KEYC_END|KEYC_SHIFT },          { TTYC_KDN5, KEYC_DOWN|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KEND3, KEYC_END|KEYC_ESCAPE },          { TTYC_KDN6, KEYC_DOWN|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KEND4, KEYC_END|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KDN7, KEYC_DOWN|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KEND5, KEYC_END|KEYC_CTRL },          { TTYC_KEND2, KEYC_END|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KEND6, KEYC_END|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KEND3, KEYC_END|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KEND7, KEYC_END|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KEND4, KEYC_END|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KHOM2, KEYC_HOME|KEYC_SHIFT },          { TTYC_KEND5, KEYC_END|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KHOM3, KEYC_HOME|KEYC_ESCAPE },          { TTYC_KEND6, KEYC_END|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KHOM4, KEYC_HOME|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KEND7, KEYC_END|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KHOM5, KEYC_HOME|KEYC_CTRL },          { TTYC_KHOM2, KEYC_HOME|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KHOM6, KEYC_HOME|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KHOM3, KEYC_HOME|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KHOM7, KEYC_HOME|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KHOM4, KEYC_HOME|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KIC2, KEYC_IC|KEYC_SHIFT },          { TTYC_KHOM5, KEYC_HOME|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KIC3, KEYC_IC|KEYC_ESCAPE },          { TTYC_KHOM6, KEYC_HOME|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KIC4, KEYC_IC|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KHOM7, KEYC_HOME|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KIC5, KEYC_IC|KEYC_CTRL },          { TTYC_KIC2, KEYC_IC|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KIC6, KEYC_IC|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KIC3, KEYC_IC|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KIC7, KEYC_IC|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KIC4, KEYC_IC|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KLFT2, KEYC_LEFT|KEYC_SHIFT },          { TTYC_KIC5, KEYC_IC|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KLFT3, KEYC_LEFT|KEYC_ESCAPE },          { TTYC_KIC6, KEYC_IC|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KLFT4, KEYC_LEFT|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KIC7, KEYC_IC|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KLFT5, KEYC_LEFT|KEYC_CTRL },          { TTYC_KLFT2, KEYC_LEFT|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KLFT6, KEYC_LEFT|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KLFT3, KEYC_LEFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KLFT7, KEYC_LEFT|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KLFT4, KEYC_LEFT|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KNXT2, KEYC_NPAGE|KEYC_SHIFT },          { TTYC_KLFT5, KEYC_LEFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KNXT3, KEYC_NPAGE|KEYC_ESCAPE },          { TTYC_KLFT6, KEYC_LEFT|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KNXT4, KEYC_NPAGE|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KLFT7, KEYC_LEFT|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KNXT5, KEYC_NPAGE|KEYC_CTRL },          { TTYC_KNXT2, KEYC_NPAGE|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KNXT6, KEYC_NPAGE|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KNXT3, KEYC_NPAGE|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KNXT7, KEYC_NPAGE|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KNXT4, KEYC_NPAGE|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KPRV2, KEYC_PPAGE|KEYC_SHIFT },          { TTYC_KNXT5, KEYC_NPAGE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KPRV3, KEYC_PPAGE|KEYC_ESCAPE },          { TTYC_KNXT6, KEYC_NPAGE|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KPRV4, KEYC_PPAGE|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KNXT7, KEYC_NPAGE|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KPRV5, KEYC_PPAGE|KEYC_CTRL },          { TTYC_KPRV2, KEYC_PPAGE|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KPRV6, KEYC_PPAGE|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KPRV3, KEYC_PPAGE|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KPRV7, KEYC_PPAGE|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KPRV4, KEYC_PPAGE|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KRIT2, KEYC_RIGHT|KEYC_SHIFT },          { TTYC_KPRV5, KEYC_PPAGE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KRIT3, KEYC_RIGHT|KEYC_ESCAPE },          { TTYC_KPRV6, KEYC_PPAGE|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KRIT4, KEYC_RIGHT|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KPRV7, KEYC_PPAGE|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KRIT5, KEYC_RIGHT|KEYC_CTRL },          { TTYC_KRIT2, KEYC_RIGHT|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KRIT6, KEYC_RIGHT|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KRIT3, KEYC_RIGHT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KRIT7, KEYC_RIGHT|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KRIT4, KEYC_RIGHT|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KUP2, KEYC_UP|KEYC_SHIFT },          { TTYC_KRIT5, KEYC_RIGHT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KUP3, KEYC_UP|KEYC_ESCAPE },          { TTYC_KRIT6, KEYC_RIGHT|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KUP4, KEYC_UP|KEYC_SHIFT|KEYC_ESCAPE },          { TTYC_KRIT7, KEYC_RIGHT|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
         { TTYC_KUP5, KEYC_UP|KEYC_CTRL },          { TTYC_KUP2, KEYC_UP|KEYC_SHIFT|KEYC_XTERM },
         { TTYC_KUP6, KEYC_UP|KEYC_SHIFT|KEYC_CTRL },          { TTYC_KUP3, KEYC_UP|KEYC_ESCAPE|KEYC_XTERM },
         { TTYC_KUP7, KEYC_UP|KEYC_ESCAPE|KEYC_CTRL },          { TTYC_KUP4, KEYC_UP|KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM },
           { TTYC_KUP5, KEYC_UP|KEYC_CTRL|KEYC_XTERM },
           { TTYC_KUP6, KEYC_UP|KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM },
           { TTYC_KUP7, KEYC_UP|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM },
 };  };
   
 /* Add key to tree. */  /* Add key to tree. */
Line 476 
Line 479 
         enum utf8_state          more;          enum utf8_state          more;
         u_int                    i;          u_int                    i;
         wchar_t                  wc;          wchar_t                  wc;
           int                      n;
   
         log_debug("%s: next key is %zu (%.*s) (expired=%d)", c->name, len,          log_debug("%s: next key is %zu (%.*s) (expired=%d)", c->name, len,
             (int)len, buf, expired);              (int)len, buf, expired);
Line 493 
Line 497 
                 return (0);                  return (0);
         }          }
   
           /* Is this an an xterm(1) key? */
           n = xterm_keys_find(buf, len, size, key);
           if (n == 0)
                   return (0);
           if (n == 1 && !expired)
                   return (1);
   
         /* Is this valid UTF-8? */          /* Is this valid UTF-8? */
         more = utf8_open(&ud, (u_char)*buf);          more = utf8_open(&ud, (u_char)*buf);
         if (more == UTF8_MORE) {          if (more == UTF8_MORE) {
Line 573 
Line 584 
                 /* Look for a key without the escape. */                  /* Look for a key without the escape. */
                 n = tty_keys_next1(tty, buf + 1, len - 1, &key, &size, expired);                  n = tty_keys_next1(tty, buf + 1, len - 1, &key, &size, expired);
                 if (n == 0) {   /* found */                  if (n == 0) {   /* found */
                           if (key & KEYC_XTERM) {
                                   /*
                                    * We want the escape key as well as the xterm
                                    * key, because the xterm sequence implicitly
                                    * includes the escape (so if we see
                                    * \033\033[1;3D we know it is an Escape
                                    * followed by M-Left, not just M-Left).
                                    */
                                   key = '\033';
                                   size = 1;
                                   goto complete_key;
                           }
                         key |= KEYC_ESCAPE;                          key |= KEYC_ESCAPE;
                         size++;                          size++;
                         goto complete_key;                          goto complete_key;
Line 586 
Line 609 
         if (n == 0)     /* found */          if (n == 0)     /* found */
                 goto complete_key;                  goto complete_key;
         if (n == 1)          if (n == 1)
                 goto partial_key;  
   
         /* Is this an an xterm(1) key? */  
         n = xterm_keys_find(buf, len, &size, &key);  
         if (n == 0)  
                 goto complete_key;  
         if (n == 1 && !expired)  
                 goto partial_key;                  goto partial_key;
   
         /*          /*

Legend:
Removed from v.1.96  
changed lines
  Added in v.1.97