Package: kbd
Version: 1.14.1-4.1
Severity: normal
Tags: patch
When testing the new french dvorak 'bépo' layout (see bug #514906),
I've noticed that uppercase accented characters aren't used in the console
when CapsLock is active, so I get for instance : BéPOè instead of BÉPOÈ.
looking at loadkeys's code, it seems only basic latin letters are allowed to
work with CapsLock (ASCII codes, under 0x7F), and can be extended to iso8859-X
codes (codes under 0xFF), see patch. I've tested this patch with this
bépo layout, it works.
-- System Information:
Debian Release: 5.0
APT prefers testing
APT policy: (990, 'testing'), (800, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.26-1-686 (SMP w/1 CPU core)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages kbd depends on:
ii console-common 0.7.80 basic infrastructure for text cons
ii console-setup 1.28 Set up the font and the keyboard o
ii libc6 2.7-18 GNU C Library: Shared libraries
ii lsb-base 3.2-20 Linux Standard Base 3.2 init scrip
Versions of packages kbd recommends:
ii console-data 2:1.07-11 keymaps, fonts, charset maps, fall
ii console-setup 1.28 Set up the font and the keyboard o
kbd suggests no packages.
-- no debconf information
diff -Naur kbd-1.14.1/src/ksyms.c kbd-1.14.1bepo/src/ksyms.c
--- kbd-1.14.1/src/ksyms.c 2009-02-07 11:08:57.000000000 +0100
+++ kbd-1.14.1bepo/src/ksyms.c 2009-02-09 16:49:58.000000000 +0100
@@ -1866,7 +1866,7 @@
{
if (KTYP(code) == KT_LATIN)
return K(KT_LETTER, KVAL(code));
- if (KTYP(code) >= syms_size && (code ^ 0xf000) < 0x80)
+ if (KTYP(code) >= syms_size && (code ^ 0xf000) < 0xFF)
return K(KT_LETTER, code ^ 0xf000);
return add_number(code);
}