version 1.238, 2017/06/06 15:49:35 |
version 1.239, 2017/06/13 07:12:33 |
|
|
struct key_binding bd_find, *bd; |
struct key_binding bd_find, *bd; |
int xtimeout, flags; |
int xtimeout, flags; |
struct cmd_find_state fs; |
struct cmd_find_state fs; |
|
key_code key0; |
|
|
/* Check the client is good to accept input. */ |
/* Check the client is good to accept input. */ |
if (s == NULL || (c->flags & (CLIENT_DEAD|CLIENT_SUSPENDED)) != 0) |
if (s == NULL || (c->flags & (CLIENT_DEAD|CLIENT_SUSPENDED)) != 0) |
|
|
* The prefix always takes precedence and forces a switch to the prefix |
* The prefix always takes precedence and forces a switch to the prefix |
* table, unless we are already there. |
* table, unless we are already there. |
*/ |
*/ |
if ((key == (key_code)options_get_number(s->options, "prefix") || |
key0 = (key & ~KEYC_XTERM); |
key == (key_code)options_get_number(s->options, "prefix2")) && |
if ((key0 == (key_code)options_get_number(s->options, "prefix") || |
|
key0 == (key_code)options_get_number(s->options, "prefix2")) && |
strcmp(table->name, "prefix") != 0) { |
strcmp(table->name, "prefix") != 0) { |
server_client_set_key_table(c, "prefix"); |
server_client_set_key_table(c, "prefix"); |
server_status_client(c); |
server_status_client(c); |
|
|
log_debug("currently repeating"); |
log_debug("currently repeating"); |
|
|
/* Try to see if there is a key binding in the current table. */ |
/* Try to see if there is a key binding in the current table. */ |
bd_find.key = (key & ~KEYC_XTERM); |
bd_find.key = key0; |
bd = RB_FIND(key_bindings, &table->key_bindings, &bd_find); |
bd = RB_FIND(key_bindings, &table->key_bindings, &bd_find); |
if (bd != NULL) { |
if (bd != NULL) { |
/* |
/* |