Hi These need to be two octets so you can send special keys too.
But how about just allowing hex values to be used anywhere? Something like this: Index: key-string.c =================================================================== RCS file: /cvs/src/usr.bin/tmux/key-string.c,v retrieving revision 1.22 diff -u -p -r1.22 key-string.c --- key-string.c 21 Jan 2012 08:40:09 -0000 1.22 +++ key-string.c 4 Mar 2012 07:19:19 -0000 @@ -136,7 +136,17 @@ key_string_get_modifiers(const char **st int key_string_lookup_string(const char *string) { + size_t size; int key, modifiers; + u_short u; + + /* Is this a hexadecimal value? */ + size = strlen(string); + if (string[0] == '0' && string[1] == 'x' && size == 6) { + if (sscanf(string + 2, "%04hx", &u) != 1) + return (KEYC_NONE); + return (u); + } /* Check for modifiers. */ modifiers = 0; On Sat, Mar 03, 2012 at 07:34:19PM -0800, George Nachman wrote: > This patch adds a -h argument to send-keys. It is intended for control > mode to avoid any running into problems with transmitting certain bytes > over a transport with inband signaling (e.g., telnet) or for sending > special keys that the terminal driver might affect (like newlines). > Example usage to send ^]: > send-keys -h 1d > Index: cmd-send-keys.c > =================================================================== > --- cmd-send-keys.c (revision 2710) > +++ cmd-send-keys.c (working copy) > @@ -31,14 +31,32 @@ > * > *const struct cmd_entry cmd_send_keys_entry = { > * "send-keys", "send", > - "lRt:", 0, -1, > - "[-lR] [-t target-pane] key ...", > + "hlRt:", 0, -1, > + "[-hlR] [-t target-pane] key ...", > * 0, > * NULL, > * NULL, > * cmd_send_keys_exec > *}; > * > +static int > +hex_char_to_int(char hex) > +{ > + if (hex >= '0' && hex <= '9') > + return hex - '0'; > + if (hex >= 'a' && hex <= 'f') > + return hex - 'a' + 10; > + if (hex >= 'A' && hex <= 'F') > + return hex - 'A' + 10; > + return 0; > +} > + > +static int > +decode_hex_octet(char *hex) > +{ > + return hex_char_to_int(hex[0]) * 16 + hex_char_to_int(hex[1]); > +} > + > *int > *cmd_send_keys_exec(struct cmd *self, struct cmd_ctx *ctx) > *{ > @@ -71,8 +89,14 @@ > * for (i = 0; i < args->argc; i++) { > * str = args->argv[i]; > * > - if (!args_has(args, 'l') && > - * *(key = key_string_lookup_string(str)) != KEYC_NONE) { > + if (args_has(args, 'h')) { > + int arglen = strlen(args->argv[i]); > + for (int j = 0; j < arglen - 1; j += 2) { > + window_pane_key( > + * *wp, s, decode_hex_octet(args->argv[i] > + j)); > + } > + } else if (!args_has(args, 'l') && > + * (key = key_string_lookup_string(str)) != > KEYC_NONE) { > * * *window_pane_key(wp, s, key); > * } else { > * for (; *str != '\0'; str++) > Index: tmux.1 > =================================================================== > --- tmux.1 (revision 2710) > +++ tmux.1 (working copy) > @@ -1672,7 +1672,7 @@ > *or > *.Em emacs-copy . > *.It Xo Ic send-keys > -.Op Fl lR > +.Op Fl lhR > *.Op Fl t Ar target-pane > *.Ar key Ar ... > *.Xc > @@ -1690,6 +1690,15 @@ > *.Fl l > *flag disables key name lookup and sends the keys literally. > *All arguments are sent sequentially from first to last. > +.Pp > +If > +.Fl h > +is present, the > +.Ar key > +arguments should each be formatted as a string of two-digit > +hexadecimal values. They must encode a valid sequence of bytes for the > character > +encoding used by > +.Ar target-pane . > *The > *.Fl R > *flag causes the terminal state to be reset. ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users