Revert r56948? (console-setup: fix keymap reduction)
I would like to revert r56948 unless there is something I don't see. As
far as I can remember this change increases the size of the precompiled
keymaps by many times. The precompiled keymaps will be used by udebs on
the boot media of d-i, so they have to take as little space as possible.
I think r56948 makes only the following improvement: Suppose a keyboard
layout doesn't define the behaviour of some of the keys on the keyboard.
For example the US layout doesn't define the behavour of one extra key
that exists on the Brazilian ABNT2 keyboards. Then suppose the user has
attached to the computer a Brazilian keyboard but selects US layout in
the installer. In this case before r56948 the extra key of the Brazilian
keyboard with US QWERTY layout generated some more or less random
symbols. After r56948 this key has undefined behaviour (for d-i this
means the key produces no symbols). The effect is similar when the user
has Japanese keyboard and non-Japanese layout. I think r56948 does
nothing when the keyboard is not Brazilian or Japanese (the US keyboards
do not have LSGT key that exists on Western European keyboards but
nevertheless the US layout defines behaviour for this key so r56948 does
nothing in this case).
The diff between r56948 and r56947 follows.
Index: debian/changelog
===================================================================
--- debian/changelog (revision 56947)
+++ debian/changelog (revision 56948)
@@ -14,6 +14,8 @@
[ Colin Watson ]
* Fix property counts in Goha and legacy BDF fonts.
+ * Fix keymap reduction not to try to express keymap A in terms of keymap B
+ when B includes keys not mapped by A.
-- Anton Zinoviev <zinoviev@debian.org> Sat, 29 Nov 2008 14:50:49 +0200
Index: Keyboard/kbdcompiler
===================================================================
--- Keyboard/kbdcompiler (revision 56947)
+++ Keyboard/kbdcompiler (revision 56948)
@@ -139,6 +139,9 @@
if (! defined $kmap2->[$k] || $kmap1->[$k] ne $kmap2->[$k]) {
$result++;
}
+ } elsif (defined $kmap2->[$k]) {
+ # kmap1 not a superset of kmap2, so not eligible for reduction
+ return 10000000;
}
}
return $result;
Anton Zinoviev
Reply to: