[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.131 and 1.132

version 1.131, 2020/05/16 15:41:54 version 1.132, 2020/05/16 16:30:59
Line 69 
Line 69 
          * put the terminal into keypad_xmit mode. Translation of numbers           * put the terminal into keypad_xmit mode. Translation of numbers
          * mode/applications mode is done in input-keys.c.           * mode/applications mode is done in input-keys.c.
          */           */
         { "\033Oo", KEYC_KP_SLASH },          { "\033Oo", KEYC_KP_SLASH|KEYC_KEYPAD },
         { "\033Oj", KEYC_KP_STAR },          { "\033Oj", KEYC_KP_STAR|KEYC_KEYPAD },
         { "\033Om", KEYC_KP_MINUS },          { "\033Om", KEYC_KP_MINUS|KEYC_KEYPAD },
         { "\033Ow", KEYC_KP_SEVEN },          { "\033Ow", KEYC_KP_SEVEN|KEYC_KEYPAD },
         { "\033Ox", KEYC_KP_EIGHT },          { "\033Ox", KEYC_KP_EIGHT|KEYC_KEYPAD },
         { "\033Oy", KEYC_KP_NINE },          { "\033Oy", KEYC_KP_NINE|KEYC_KEYPAD },
         { "\033Ok", KEYC_KP_PLUS },          { "\033Ok", KEYC_KP_PLUS|KEYC_KEYPAD },
         { "\033Ot", KEYC_KP_FOUR },          { "\033Ot", KEYC_KP_FOUR|KEYC_KEYPAD },
         { "\033Ou", KEYC_KP_FIVE },          { "\033Ou", KEYC_KP_FIVE|KEYC_KEYPAD },
         { "\033Ov", KEYC_KP_SIX },          { "\033Ov", KEYC_KP_SIX|KEYC_KEYPAD },
         { "\033Oq", KEYC_KP_ONE },          { "\033Oq", KEYC_KP_ONE|KEYC_KEYPAD },
         { "\033Or", KEYC_KP_TWO },          { "\033Or", KEYC_KP_TWO|KEYC_KEYPAD },
         { "\033Os", KEYC_KP_THREE },          { "\033Os", KEYC_KP_THREE|KEYC_KEYPAD },
         { "\033OM", KEYC_KP_ENTER },          { "\033OM", KEYC_KP_ENTER|KEYC_KEYPAD },
         { "\033Op", KEYC_KP_ZERO },          { "\033Op", KEYC_KP_ZERO|KEYC_KEYPAD },
         { "\033On", KEYC_KP_PERIOD },          { "\033On", KEYC_KP_PERIOD|KEYC_KEYPAD },
   
         /* Arrow keys. */          /* Arrow keys. */
         { "\033OA", KEYC_UP },          { "\033OA", KEYC_UP|KEYC_CURSOR },
         { "\033OB", KEYC_DOWN },          { "\033OB", KEYC_DOWN|KEYC_CURSOR },
         { "\033OC", KEYC_RIGHT },          { "\033OC", KEYC_RIGHT|KEYC_CURSOR },
         { "\033OD", KEYC_LEFT },          { "\033OD", KEYC_LEFT|KEYC_CURSOR },
   
         { "\033[A", KEYC_UP },          { "\033[A", KEYC_UP|KEYC_CURSOR },
         { "\033[B", KEYC_DOWN },          { "\033[B", KEYC_DOWN|KEYC_CURSOR },
         { "\033[C", KEYC_RIGHT },          { "\033[C", KEYC_RIGHT|KEYC_CURSOR },
         { "\033[D", KEYC_LEFT },          { "\033[D", KEYC_LEFT|KEYC_CURSOR },
   
         /* Other (xterm) "cursor" keys. */          /* Other (xterm) "cursor" keys. */
         { "\033OH", KEYC_HOME },          { "\033OH", KEYC_HOME },
Line 182 
Line 182 
         { "\033[201~", KEYC_PASTE_END },          { "\033[201~", KEYC_PASTE_END },
 };  };
   
   /* Default xterm keys. */
   struct tty_default_key_xterm {
           const char      *template;
           key_code         key;
   };
   static const struct tty_default_key_xterm tty_default_xterm_keys[] = {
           { "\033[1;_P", KEYC_F1 },
           { "\033O1;_P", KEYC_F1 },
           { "\033O_P", KEYC_F1 },
           { "\033[1;_Q", KEYC_F2 },
           { "\033O1;_Q", KEYC_F2 },
           { "\033O_Q", KEYC_F2 },
           { "\033[1;_R", KEYC_F3 },
           { "\033O1;_R", KEYC_F3 },
           { "\033O_R", KEYC_F3 },
           { "\033[1;_S", KEYC_F4 },
           { "\033O1;_S", KEYC_F4 },
           { "\033O_S", KEYC_F4 },
           { "\033[15;_~", KEYC_F5 },
           { "\033[17;_~", KEYC_F6 },
           { "\033[18;_~", KEYC_F7 },
           { "\033[19;_~", KEYC_F8 },
           { "\033[20;_~", KEYC_F9 },
           { "\033[21;_~", KEYC_F10 },
           { "\033[23;_~", KEYC_F11 },
           { "\033[24;_~", KEYC_F12 },
           { "\033[1;_A", KEYC_UP },
           { "\033[1;_B", KEYC_DOWN },
           { "\033[1;_C", KEYC_RIGHT },
           { "\033[1;_D", KEYC_LEFT },
           { "\033[1;_H", KEYC_HOME },
           { "\033[1;_F", KEYC_END },
           { "\033[5;_~", KEYC_PPAGE },
           { "\033[6;_~", KEYC_NPAGE },
           { "\033[2;_~", KEYC_IC },
           { "\033[3;_~", KEYC_DC },
   };
   static const key_code tty_default_xterm_modifiers[] = {
           0,
           0,
           KEYC_SHIFT|KEYC_XTERM,
           KEYC_ESCAPE|KEYC_XTERM,
           KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM,
           KEYC_CTRL|KEYC_XTERM,
           KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM,
           KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM,
           KEYC_SHIFT|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM
   };
   
 /*  /*
  * Default terminfo(5) keys. Any keys that have builtin modifiers   * Default terminfo(5) keys. Any keys that have builtin modifiers (that is,
  * (that is, where the key itself contains the modifiers) has the   * where the key itself contains the modifiers) has the KEYC_XTERM flag set so
  * KEYC_XTERM flag set so a leading escape is not treated as meta (and   * a leading escape is not treated as meta (and probably removed).
  * probably removed).  
  */   */
 struct tty_default_key_code {  struct tty_default_key_code {
         enum tty_code_code      code;          enum tty_code_code      code;
Line 272 
Line 320 
         { TTYC_KCBT, KEYC_BTAB },          { TTYC_KCBT, KEYC_BTAB },
   
         /* Arrow keys from terminfo. */          /* Arrow keys from terminfo. */
         { TTYC_KCUU1, KEYC_UP },          { TTYC_KCUU1, KEYC_UP|KEYC_CURSOR },
         { TTYC_KCUD1, KEYC_DOWN },          { TTYC_KCUD1, KEYC_DOWN|KEYC_CURSOR },
         { TTYC_KCUB1, KEYC_LEFT },          { TTYC_KCUB1, KEYC_LEFT|KEYC_CURSOR },
         { TTYC_KCUF1, KEYC_RIGHT },          { TTYC_KCUF1, KEYC_RIGHT|KEYC_CURSOR },
   
         /* Key and modifier capabilities. */          /* Key and modifier capabilities. */
         { TTYC_KDC2, KEYC_DC|KEYC_SHIFT|KEYC_XTERM },          { TTYC_KDC2, KEYC_DC|KEYC_SHIFT|KEYC_XTERM },
Line 403 
Line 451 
 tty_keys_build(struct tty *tty)  tty_keys_build(struct tty *tty)
 {  {
         const struct tty_default_key_raw        *tdkr;          const struct tty_default_key_raw        *tdkr;
           const struct tty_default_key_xterm      *tdkx;
         const struct tty_default_key_code       *tdkc;          const struct tty_default_key_code       *tdkc;
         u_int                                    i;          u_int                                    i, j;
         const char                              *s;          const char                              *s;
         struct options_entry                    *o;          struct options_entry                    *o;
         struct options_array_item               *a;          struct options_array_item               *a;
         union options_value                     *ov;          union options_value                     *ov;
           char                                     copy[16];
           key_code                                 key;
   
         if (tty->key_tree != NULL)          if (tty->key_tree != NULL)
                 tty_keys_free(tty);                  tty_keys_free(tty);
         tty->key_tree = NULL;          tty->key_tree = NULL;
   
           for (i = 0; i < nitems(tty_default_xterm_keys); i++) {
                   tdkx = &tty_default_xterm_keys[i];
                   for (j = 2; j < nitems(tty_default_xterm_modifiers); j++) {
                           strlcpy(copy, tdkx->template, sizeof copy);
                           copy[strcspn(copy, "_")] = '0' + j;
   
                           key = tdkx->key|tty_default_xterm_modifiers[j];
                           tty_keys_add(tty, copy, key);
                   }
           }
         for (i = 0; i < nitems(tty_default_raw_keys); i++) {          for (i = 0; i < nitems(tty_default_raw_keys); i++) {
                 tdkr = &tty_default_raw_keys[i];                  tdkr = &tty_default_raw_keys[i];
   
Line 516 
Line 577 
         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 533 
Line 593 
                 *key = tk->key;                  *key = tk->key;
                 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);

Legend:
Removed from v.1.131  
changed lines
  Added in v.1.132