[kbd] [PATCH] Never handle plain ASCII characters as Unicode
Michael Schutte
michi at uiae.at
Fri Jul 24 15:55:20 MSD 2009
This doesn’t seem to work for compose: The Unicode keysym representing
an ASCII char gets inserted and the kernel waits for another keypress to
be “dead”.
Signed-off-by: Michael Schutte <michi at uiae.at>
---
src/ksyms.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/ksyms.c b/src/ksyms.c
index 4055e54..f68ea30 100644
--- a/src/ksyms.c
+++ b/src/ksyms.c
@@ -1858,16 +1858,16 @@ convert_code(int code, int direction)
if (KTYP(code) == KT_META)
return code;
+ else if (!input_is_unicode && code < 0x80)
+ /* basic ASCII is fine in every situation */
+ return code;
+ else if (input_is_unicode && (code ^ 0xf000) < 0x80)
+ /* so is Unicode "Basic Latin" */
+ return code ^ 0xf000;
else if ((input_is_unicode && direction == TO_UNICODE) ||
(!input_is_unicode && direction == TO_8BIT))
/* no conversion necessary */
result = code;
- else if (!input_is_unicode && code < 0x80)
- /* convert ASCII chars without looking them up */
- result = (direction == TO_UNICODE) ? (code ^ 0xf000) : code;
- else if (input_is_unicode && (code ^ 0xf000) < 0x80)
- /* same for Unicode "Basic Latin" */
- result = (direction == TO_UNICODE) ? code : (code ^ 0xf000);
else {
/* depending on direction, this will give us either an 8-bit
* K(KTYP, KVAL) or a Unicode keysym xor 0xf000 */
--
1.5.6.5
More information about the kbd
mailing list