terminal: Read modifiers from the first UTF-8 byte, not the last. Previously, ELinks used to silently discard the Alt modifier from Alt-ö keystrokes when UTF-8 I/O was enabled. Now, separate actions can be bound to ö and Alt-ö.
However, if CONFIG_UTF_8 is defined and the UTF-8 charset is selected,
then actions cannot be bound to non-ASCII characters, regardless of
modifiers. This is because ELinks then treats each byte as a separate
keyboard event. This commit does not change that.
---
commit eeb3a6f5820c45fb5a1c3e8869bc4888900059f6
tree 1412dc1c238cd3b1898744a4e9ab496957eece27
parent 73eb3d5228d2c0150f78858bc7d36327eb7c3f98
author Kalle Olavi Niemitalo <[EMAIL PROTECTED]> Sun, 30 Jul 2006 16:35:56 +0300
committer Kalle Olavi Niemitalo <[EMAIL PROTECTED]> Sun, 30 Jul 2006 16:35:56 +0300
src/terminal/event.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/terminal/event.c b/src/terminal/event.c
index f70854a..291d3ef 100644
--- a/src/terminal/event.c
+++ b/src/terminal/event.c
@@ -44,6 +44,12 @@ struct terminal_interlink {
unicode_val_T ucs;
int len;
int min;
+ /* Modifier keys from the key event that carried the
+ * first byte of the character. We need this because
+ * ELinks sees e.g. ESC U+00F6 as 0x1B 0xC3 0xB6 and
+ * converts it to Alt-0xC3 0xB6, attaching the
+ * modifier to the first byte only. */
+ int modifier;
} utf_8;
/* This is the queue of events as coming from the other ELinks instance
@@ -134,6 +140,7 @@ term_send_ucs(struct terminal *term, str
recoded = u2cp_no_nbsp(u, get_opt_codepage_tree(term->spec, "charset"));
if (!recoded) recoded = "*";
while (*recoded) {
+ ev->info.keyboard.modifier = term->interlink->utf_8.modifier;
ev->info.keyboard.key = *recoded;
term_send_event(term, ev);
recoded++;
@@ -306,6 +313,7 @@ #endif /* CONFIG_UTF_8 */
interlink->utf_8.len = len - 1;
interlink->utf_8.ucs = key & (mask - 1);
+ interlink->utf_8.modifier = get_kbd_modifier(ev);
break;
}
pgpyQMTON1qS9.pgp
Description: PGP signature
_______________________________________________ elinks-dev mailing list [email protected] http://linuxfromscratch.org/mailman/listinfo/elinks-dev
