version 1.51, 2019/11/07 07:11:25 |
version 1.52, 2020/01/13 07:51:54 |
|
|
cmd_send_keys_inject_key(struct client *c, struct cmd_find_state *fs, |
cmd_send_keys_inject_key(struct client *c, struct cmd_find_state *fs, |
struct cmdq_item *item, key_code key) |
struct cmdq_item *item, key_code key) |
{ |
{ |
|
struct session *s = fs->s; |
|
struct winlink *wl = fs->wl; |
|
struct window_pane *wp = fs->wp; |
struct window_mode_entry *wme; |
struct window_mode_entry *wme; |
struct key_table *table; |
struct key_table *table; |
struct key_binding *bd; |
struct key_binding *bd; |
|
|
if (wme == NULL || wme->mode->key_table == NULL) { |
if (wme == NULL || wme->mode->key_table == NULL) { |
if (options_get_number(fs->wp->window->options, "xterm-keys")) |
if (options_get_number(fs->wp->window->options, "xterm-keys")) |
key |= KEYC_XTERM; |
key |= KEYC_XTERM; |
window_pane_key(fs->wp, item->client, fs->s, fs->wl, key, NULL); |
if (window_pane_key(wp, item->client, s, wl, key, NULL) != 0) |
|
return (NULL); |
return (item); |
return (item); |
} |
} |
table = key_bindings_get_table(wme->mode->key_table(wme), 1); |
table = key_bindings_get_table(wme->mode->key_table(wme), 1); |
|
|
struct cmdq_item *item, struct args *args, int i) |
struct cmdq_item *item, struct args *args, int i) |
{ |
{ |
const char *s = args->argv[i]; |
const char *s = args->argv[i]; |
|
struct cmdq_item *new_item; |
struct utf8_data *ud, *uc; |
struct utf8_data *ud, *uc; |
wchar_t wc; |
wchar_t wc; |
key_code key; |
key_code key; |
|
|
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) { |
return (cmd_send_keys_inject_key(c, fs, item, key)); |
new_item = cmd_send_keys_inject_key(c, fs, item, key); |
|
if (new_item != NULL) |
|
return (new_item); |
|
} |
literal = 1; |
literal = 1; |
} |
} |
if (literal) { |
if (literal) { |