Updates for UTF-8 key bindings
Code point mapping adjusted for multibyte characters to avoid the ncurses range 0-KEY_MAX. This includes three fixes: 1) test sequence in keys_assign_binding(), 2) reassemble multi-byte character in keys_wgetch(), 3) check for already in use in keys_assign_binding(). Rearrangement of code. The introduction of allocated memory in keys_int2str() has as a consequence that check for recognized ncurses pseudo characters now are in two places: keys_str2int() and custom_keys_config(). The latter was moved from keys_wgetch() to improve user information. More informative warning messages in custom_keys_config(). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
committed by
Lukas Fleischer
parent
efd76a0d99
commit
dd5af2f7f4
18
src/custom.c
18
src/custom.c
@@ -998,11 +998,14 @@ void custom_keys_config(void)
|
||||
keys_get_label(selrow), 0);
|
||||
ch = keys_wgetch(grabwin);
|
||||
|
||||
/* First check if this key would be recognized by calcurse. */
|
||||
if (ch < 0) {
|
||||
/* Check if this is a ncurses pseudo key accepted by calcurse. */
|
||||
if (ch >= KEY_MIN && ch <= KEY_MAX && !(
|
||||
ch == KEY_UP || ch == KEY_DOWN ||
|
||||
ch == KEY_LEFT || ch == KEY_RIGHT ||
|
||||
ch == KEY_HOME || ch == KEY_END)) {
|
||||
not_recognized = 1;
|
||||
WARN_MSG(_("This key is not yet recognized by calcurse, "
|
||||
"please choose another one."));
|
||||
WARN_MSG(_("The key '%s' is not accepted by calcurse. "
|
||||
"Choose another one."), keyname(ch));
|
||||
werase(kwin.inner);
|
||||
nbrowelm =
|
||||
print_keys_bindings(kwin.inner,
|
||||
@@ -1026,9 +1029,12 @@ void custom_keys_config(void)
|
||||
enum key action;
|
||||
|
||||
action = keys_get_action(ch);
|
||||
WARN_MSG(_("This key is already in use for %s, "
|
||||
"please choose another one."),
|
||||
char *keystr = keys_int2str(ch);
|
||||
WARN_MSG(_("The key '%s' is already used for %s. "
|
||||
"Choose another one."),
|
||||
keystr,
|
||||
keys_get_label(action));
|
||||
mem_free(keystr);
|
||||
werase(kwin.inner);
|
||||
nbrowelm =
|
||||
print_keys_bindings(kwin.inner,
|
||||
|
||||
Reference in New Issue
Block a user