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

Diff for /src/usr.bin/tmux/cmd-send-keys.c between version 1.72 and 1.73

version 1.72, 2022/06/07 10:02:19 version 1.73, 2022/12/16 08:13:40
Line 33 
Line 33 
         .name = "send-keys",          .name = "send-keys",
         .alias = "send",          .alias = "send",
   
         .args = { "FHlMN:Rt:X", 0, -1, NULL },          .args = { "c:FHKlMN:Rt:X", 0, -1, NULL },
         .usage = "[-FHlMRX] [-N repeat-count] " CMD_TARGET_PANE_USAGE          .usage = "[-FHKlMRX] [-c target-client] [-N repeat-count] "
                  " key ...",                   CMD_TARGET_PANE_USAGE " key ...",
   
         .target = { 't', CMD_FIND_PANE, 0 },          .target = { 't', CMD_FIND_PANE, 0 },
   
         .flags = CMD_AFTERHOOK,          .flags = CMD_AFTERHOOK|CMD_CLIENT_CFLAG,
         .exec = cmd_send_keys_exec          .exec = cmd_send_keys_exec
 };  };
   
Line 58 
Line 58 
   
 static struct cmdq_item *  static struct cmdq_item *
 cmd_send_keys_inject_key(struct cmdq_item *item, struct cmdq_item *after,  cmd_send_keys_inject_key(struct cmdq_item *item, struct cmdq_item *after,
     key_code key)      struct args *args, key_code key)
 {  {
         struct cmd_find_state           *target = cmdq_get_target(item);          struct cmd_find_state           *target = cmdq_get_target(item);
         struct client                   *tc = cmdq_get_target_client(item);          struct client                   *tc = cmdq_get_target_client(item);
Line 66 
Line 66 
         struct winlink                  *wl = target->wl;          struct winlink                  *wl = target->wl;
         struct window_pane              *wp = target->wp;          struct window_pane              *wp = target->wp;
         struct window_mode_entry        *wme;          struct window_mode_entry        *wme;
         struct key_table                *table;          struct key_table                *table = NULL;
         struct key_binding              *bd;          struct key_binding              *bd;
           struct key_event                *event;
   
           if (args_has(args, 'K')) {
                   event = xmalloc(sizeof *event);
                   event->key = key;
                   memset(&event->m, 0, sizeof event->m);
                   if (server_client_handle_key(tc, event) == 0)
                           free(event);
                   return (item);
           }
   
         wme = TAILQ_FIRST(&wp->modes);          wme = TAILQ_FIRST(&wp->modes);
         if (wme == NULL || wme->mode->key_table == NULL) {          if (wme == NULL || wme->mode->key_table == NULL) {
                 if (window_pane_key(wp, tc, s, wl, key, NULL) != 0)                  if (window_pane_key(wp, tc, s, wl, key, NULL) != 0)
Line 102 
Line 112 
                 n = strtol(s, &endptr, 16);                  n = strtol(s, &endptr, 16);
                 if (*s =='\0' || n < 0 || n > 0xff || *endptr != '\0')                  if (*s =='\0' || n < 0 || n > 0xff || *endptr != '\0')
                         return (item);                          return (item);
                 return (cmd_send_keys_inject_key(item, after, KEYC_LITERAL|n));                  return (cmd_send_keys_inject_key(item, after, args,
                       KEYC_LITERAL|n));
         }          }
   
         literal = args_has(args, 'l');          literal = args_has(args, 'l');
         if (!literal) {          if (!literal) {
                 key = key_string_lookup_string(s);                  key = key_string_lookup_string(s);
                 if (key != KEYC_NONE && key != KEYC_UNKNOWN) {                  if (key != KEYC_NONE && key != KEYC_UNKNOWN) {
                         after = cmd_send_keys_inject_key(item, after, key);                          after = cmd_send_keys_inject_key(item, after, args,
                               key);
                         if (after != NULL)                          if (after != NULL)
                                 return (after);                                  return (after);
                 }                  }
Line 125 
Line 137 
                                         continue;                                          continue;
                                 key = uc;                                  key = uc;
                         }                          }
                         after = cmd_send_keys_inject_key(item, after, key);                          after = cmd_send_keys_inject_key(item, after, args,
                               key);
                 }                  }
                 free(ud);                  free(ud);
         }          }
Line 193 
Line 206 
                         key = options_get_number(s->options, "prefix2");                          key = options_get_number(s->options, "prefix2");
                 else                  else
                         key = options_get_number(s->options, "prefix");                          key = options_get_number(s->options, "prefix");
                 cmd_send_keys_inject_key(item, item, key);                  cmd_send_keys_inject_key(item, item, args, key);
                 return (CMD_RETURN_NORMAL);                  return (CMD_RETURN_NORMAL);
         }          }
   
Line 207 
Line 220 
                 if (args_has(args, 'N') || args_has(args, 'R'))                  if (args_has(args, 'N') || args_has(args, 'R'))
                         return (CMD_RETURN_NORMAL);                          return (CMD_RETURN_NORMAL);
                 for (; np != 0; np--)                  for (; np != 0; np--)
                         cmd_send_keys_inject_key(item, NULL, event->key);                          cmd_send_keys_inject_key(item, NULL, args, event->key);
                 return (CMD_RETURN_NORMAL);                  return (CMD_RETURN_NORMAL);
         }          }
   

Legend:
Removed from v.1.72  
changed lines
  Added in v.1.73