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

Diff for /src/usr.bin/tmux/input-keys.c between version 1.1 and 1.2

version 1.1, 2009/06/01 22:58:49 version 1.2, 2009/07/21 17:57:29
Line 66 
Line 66 
         { KEYC_BTAB,   "\033[Z",   INPUTKEY_CTRL },          { KEYC_BTAB,   "\033[Z",   INPUTKEY_CTRL },
   
         /* Arrow keys. Cursor versions must come first. */          /* Arrow keys. Cursor versions must come first. */
         { KEYC_ADDCTL(KEYC_UP),    "\033Oa", 0 },          { KEYC_UP | KEYC_CTRL,     "\033Oa", 0 },
         { KEYC_ADDCTL(KEYC_DOWN),  "\033Ob", 0 },          { KEYC_DOWN | KEYC_CTRL,   "\033Ob", 0 },
         { KEYC_ADDCTL(KEYC_RIGHT), "\033Oc", 0 },          { KEYC_RIGHT | KEYC_CTRL,  "\033Oc", 0 },
         { KEYC_ADDCTL(KEYC_LEFT),  "\033Od", 0 },          { KEYC_LEFT | KEYC_CTRL,   "\033Od", 0 },
   
         { KEYC_ADDSFT(KEYC_UP),    "\033[a", 0 },          { KEYC_UP | KEYC_SHIFT,    "\033[a", 0 },
         { KEYC_ADDSFT(KEYC_DOWN),  "\033[b", 0 },          { KEYC_DOWN | KEYC_SHIFT,  "\033[b", 0 },
         { KEYC_ADDSFT(KEYC_RIGHT), "\033[c", 0 },          { KEYC_RIGHT | KEYC_SHIFT, "\033[c", 0 },
         { KEYC_ADDSFT(KEYC_LEFT),  "\033[d", 0 },          { KEYC_LEFT | KEYC_SHIFT,  "\033[d", 0 },
   
         { KEYC_UP,     "\033OA",   INPUTKEY_CURSOR },          { KEYC_UP,     "\033OA",   INPUTKEY_CURSOR },
         { KEYC_DOWN,   "\033OB",   INPUTKEY_CURSOR },          { KEYC_DOWN,   "\033OB",   INPUTKEY_CURSOR },
         { KEYC_RIGHT,  "\033OC",   INPUTKEY_CURSOR },          { KEYC_RIGHT,  "\033OC",   INPUTKEY_CURSOR },
Line 133 
Line 133 
   
         log_debug2("writing key 0x%x", key);          log_debug2("writing key 0x%x", key);
   
         if (key != KEYC_NONE && KEYC_REMOVEESC(key) < KEYC_OFFSET) {          if (key != KEYC_NONE && (key & ~KEYC_ESCAPE) < 0x100) {
                 if (KEYC_ISESC(key))                  if (key & KEYC_ESCAPE)
                         buffer_write8(wp->out, '\033');                          buffer_write8(wp->out, '\033');
                 buffer_write8(wp->out, (uint8_t) KEYC_REMOVEESC(key));                  buffer_write8(wp->out, (uint8_t) (key & ~KEYC_ESCAPE));
                 return;                  return;
         }          }
   
Line 150 
Line 150 
                     !(wp->screen->mode & MODE_KCURSOR))                      !(wp->screen->mode & MODE_KCURSOR))
                         continue;                          continue;
   
                 if (KEYC_ISESC(key) && KEYC_ADDESC(ike->key) == key)                  if ((key & KEYC_ESCAPE) && (ike->key | KEYC_ESCAPE) == key)
                         break;                          break;
                 if (KEYC_ISSFT(key) && KEYC_ADDSFT(ike->key) == key)                  if ((key & KEYC_SHIFT) && (ike->key | KEYC_SHIFT) == key)
                         break;                          break;
                 if (KEYC_ISCTL(key) && KEYC_ADDCTL(ike->key) == key) {                  if ((key & KEYC_CTRL) && (ike->key | KEYC_CTRL) == key) {
                         if (ike->flags & INPUTKEY_CTRL)                          if (ike->flags & INPUTKEY_CTRL)
                                 break;                                  break;
                 }                  }
Line 176 
Line 176 
         xterm_keys = options_get_number(&wp->window->options, "xterm-keys");          xterm_keys = options_get_number(&wp->window->options, "xterm-keys");
         if (xterm_keys && ike->flags & INPUTKEY_XTERM) {          if (xterm_keys && ike->flags & INPUTKEY_XTERM) {
                 ch = '\0';                  ch = '\0';
                 if (KEYC_ISSFT(key) && KEYC_ISESC(key) && KEYC_ISCTL(key))                  if (key & (KEYC_SHIFT|KEYC_ESCAPE|KEYC_CTRL))
                         ch = '8';                          ch = '8';
                 else if (KEYC_ISESC(key) && KEYC_ISCTL(key))                  else if (key & (KEYC_ESCAPE|KEYC_CTRL))
                         ch = '7';                          ch = '7';
                 else if (KEYC_ISSFT(key) && KEYC_ISCTL(key))                  else if (key & (KEYC_SHIFT|KEYC_CTRL))
                         ch = '6';                          ch = '6';
                 else if (KEYC_ISCTL(key))                  else if (key & KEYC_CTRL)
                         ch = '5';                          ch = '5';
                 else if (KEYC_ISSFT(key) && KEYC_ISESC(key))                  else if (key & (KEYC_SHIFT|KEYC_ESCAPE))
                         ch = '4';                          ch = '4';
                 else if (KEYC_ISESC(key))                  else if (key & KEYC_ESCAPE)
                         ch = '3';                          ch = '3';
                 else if (KEYC_ISSFT(key))                  else if (key & KEYC_SHIFT)
                         ch = '2';                          ch = '2';
                 if (ch != '\0') {                  if (ch != '\0') {
                         buffer_write(wp->out, ike->data, dlen - 1);                          buffer_write(wp->out, ike->data, dlen - 1);
Line 204 
Line 204 
          * Not in xterm mode. Prefix a \033 for escape, and set bit 5 of the           * Not in xterm mode. Prefix a \033 for escape, and set bit 5 of the
          * last byte for ctrl.           * last byte for ctrl.
          */           */
         if (KEYC_ISESC(key))          if (key & KEYC_ESCAPE)
                 buffer_write8(wp->out, '\033');                  buffer_write8(wp->out, '\033');
         if (KEYC_ISCTL(key) && ike->flags & INPUTKEY_CTRL) {          if (key & KEYC_CTRL && ike->flags & INPUTKEY_CTRL) {
                 buffer_write(wp->out, ike->data, dlen - 1);                  buffer_write(wp->out, ike->data, dlen - 1);
                 buffer_write8(wp->out, ike->data[dlen - 1] ^ 0x20);                  buffer_write8(wp->out, ike->data[dlen - 1] ^ 0x20);
                 return;                  return;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2