Sync OpenBSD patchset 175:

Permit commands to be bound to key presses without the prefix key first. The
new -n flag to bind-key and unbind-key sets or removes these bindings, and
list-key shows them in []s.
This commit is contained in:
Tiago Cunha
2009-07-25 08:52:04 +00:00
parent 744ccb7cc9
commit 28cf7dc39e
7 changed files with 83 additions and 31 deletions

View File

@ -1,4 +1,4 @@
/* $Id: server.c,v 1.162 2009-07-22 17:46:53 tcunha Exp $ */
/* $Id: server.c,v 1.163 2009-07-25 08:52:04 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -807,14 +807,19 @@ server_handle_client(struct client *c)
if (!(c->flags & CLIENT_PREFIX)) {
if (key == prefix)
c->flags |= CLIENT_PREFIX;
else
window_pane_key(wp, c, key);
else {
/* Try as a non-prefix key binding. */
if ((bd = key_bindings_lookup(key)) == NULL)
window_pane_key(wp, c, key);
else
key_bindings_dispatch(bd, c);
}
continue;
}
/* Prefix key already pressed. Reset prefix and lookup key. */
c->flags &= ~CLIENT_PREFIX;
if ((bd = key_bindings_lookup(key)) == NULL) {
if ((bd = key_bindings_lookup(key | KEYC_PREFIX)) == NULL) {
/* If repeating, treat this as a key, else ignore. */
if (c->flags & CLIENT_REPEAT) {
c->flags &= ~CLIENT_REPEAT;