aboutsummaryrefslogtreecommitdiff
path: root/cmd-send-keys.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2015-12-12 20:01:15 +0000
committerThomas Adam <thomas@xteddy.org>2015-12-12 20:01:15 +0000
commit845a664bb2d06ac1cdc0af37d753d107f4353955 (patch)
treebdd2832180ef678265972308ed08e71ab0bbab60 /cmd-send-keys.c
parent5a5db02b8514eff40b97b3f3e4e85a3d948b57da (diff)
parent5ed17e84faed0a7655ec1eb3de291b60839dcb12 (diff)
downloadrtmux-845a664bb2d06ac1cdc0af37d753d107f4353955.tar.gz
rtmux-845a664bb2d06ac1cdc0af37d753d107f4353955.tar.bz2
rtmux-845a664bb2d06ac1cdc0af37d753d107f4353955.zip
Merge branch 'obsd-master'
Diffstat (limited to 'cmd-send-keys.c')
-rw-r--r--cmd-send-keys.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/cmd-send-keys.c b/cmd-send-keys.c
index 73a308ae..1461baa9 100644
--- a/cmd-send-keys.c
+++ b/cmd-send-keys.c
@@ -52,8 +52,8 @@ cmd_send_keys_exec(struct cmd *self, struct cmd_q *cmdq)
struct mouse_event *m = &cmdq->item->mouse;
struct window_pane *wp;
struct session *s;
- const u_char *str;
- int i;
+ int i, literal;
+ const u_char *keystr;
key_code key;
if (args_has(args, 'M')) {
@@ -82,14 +82,17 @@ cmd_send_keys_exec(struct cmd *self, struct cmd_q *cmdq)
input_reset(wp);
for (i = 0; i < args->argc; i++) {
- str = args->argv[i];
-
- if (!args_has(args, 'l') &&
- (key = key_string_lookup_string(str)) != KEYC_NONE) {
- window_pane_key(wp, NULL, s, key, NULL);
- } else {
- for (; *str != '\0'; str++)
- window_pane_key(wp, NULL, s, *str, NULL);
+ literal = args_has(args, 'l');
+ if (!literal) {
+ key = key_string_lookup_string(args->argv[i]);
+ if (key != KEYC_NONE && key != KEYC_UNKNOWN)
+ window_pane_key(wp, NULL, s, key, NULL);
+ else
+ literal = 1;
+ }
+ if (literal) {
+ for (keystr = args->argv[i]; *keystr != '\0'; keystr++)
+ window_pane_key(wp, NULL, s, *keystr, NULL);
}
}