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:
Nicholas Marriott
2009-07-24 14:52:47 +00:00
parent ce4eb6559e
commit 5a1a106637
7 changed files with 76 additions and 24 deletions

View File

@ -32,7 +32,18 @@ struct key_bindings dead_key_bindings;
int
key_bindings_cmp(struct key_binding *bd1, struct key_binding *bd2)
{
return (bd1->key - bd2->key);
int key1, key2;
key1 = bd1->key & ~KEYC_PREFIX;
key2 = bd2->key & ~KEYC_PREFIX;
if (key1 != key2)
return (key1 - key2);
if (bd1->key & KEYC_PREFIX && !(bd2->key & KEYC_PREFIX))
return (-1);
if (bd2->key & KEYC_PREFIX && !(bd1->key & KEYC_PREFIX))
return (1);
return (0);
}
struct key_binding *
@ -170,7 +181,8 @@ key_bindings_init(void)
cmd->entry->init(cmd, table[i].key);
TAILQ_INSERT_HEAD(cmdlist, cmd, qentry);
key_bindings_add(table[i].key, table[i].can_repeat, cmdlist);
key_bindings_add(
table[i].key | KEYC_PREFIX, table[i].can_repeat, cmdlist);
}
}