mirror of
https://github.com/irssi/irssi.git
synced 2026-08-11 04:43:34 +02:00
Modify escape of ^ key so it can be used as well as Ctrl+^
Fixes FS#721
This makes Ctrl+^ and ^ bindable again as different keys. We do this
by escaping single `^` as `^-`, which is not a valid control character
(unlike `^^`)
The original approach suggested in FS#721 is insufficient, it will
break bindings such as `meta-^` because Irssi is convinced that `^`
introduces a Control-key ("key combo") so it is waiting for what may
follow.
This commit is contained in:
parent
cb6266f212
commit
09f23d06b5
2 changed files with 11 additions and 5 deletions
|
|
@ -292,12 +292,18 @@ static int expand_key(const char *key, GSList **out)
|
|||
}
|
||||
last_hyphen = !last_hyphen;
|
||||
} else if (*key == '^') {
|
||||
/* ctrl-code */
|
||||
if (key[1] != '\0')
|
||||
key++;
|
||||
|
||||
expand_out_char(*out, '^');
|
||||
expand_out_char(*out, *key);
|
||||
|
||||
/* ctrl-code */
|
||||
if (key[1] != '\0' && key[1] != '-') {
|
||||
key++;
|
||||
expand_out_char(*out, *key);
|
||||
}
|
||||
else {
|
||||
/* escaped syntax for ^, see gui-readline.c */
|
||||
expand_out_char(*out, '-');
|
||||
}
|
||||
|
||||
expand_out_char(*out, '-');
|
||||
last_hyphen = FALSE; /* optional */
|
||||
} else if (last_hyphen && i_isalpha(*key)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue