=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-send-keys.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- src/usr.bin/tmux/cmd-send-keys.c 2015/11/12 11:05:34 1.22 +++ src/usr.bin/tmux/cmd-send-keys.c 2015/12/12 18:19:00 1.23 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-send-keys.c,v 1.22 2015/11/12 11:05:34 nicm Exp $ */ +/* $OpenBSD: cmd-send-keys.c,v 1.23 2015/12/12 18:19:00 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott @@ -52,8 +52,8 @@ 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 @@ 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); } }