Bug#536006: rules/*.xml allow unsupported model/layout combinations
Package: xkb-data
Version: 1.6-1
Hi!
Keyboard configuration programs use /usr/share/X11/xkb/rules/*.xml file
in order to find the possible models, layouts, variants. Unfortunately
some Macintosh-related combination are not supported. For example the
following logical choice is not supported: keyboard model 'macintosh'
("Macintosh"), layout 'de' ("Germany") and variant 'mac_nodeadkeys'
("Germany - Macintosh, eliminate dead keys").
The reason for this is that when the user selects model 'macintosh' and
layout 'de' the file /usr/share/X11/xkb/symbols/macintosh_vndr/de is
used instead of /usr/share/X11/xkb/symbols/de and there is no
mac_nodeadkeys there. As a result the keyboard is leaved in a bad
state.
I suppose that one possible fix for this problem would be to ignore the
files in macintosh_vndr. The standard files in
/usr/share/X11/xkb/symbols describe all Mac-layouts so there is no need
to use the files in macintosh_vndr. You can find attached a patch that
shows how this can be fixed but I suppose this will require some
discussion with the upstream before applying it.
Anton Zinoviev
diff -Naur rules/base rules.new/base
--- rules/base 2009-07-06 21:05:17.790404174 +0300
+++ rules.new/base 2009-07-06 21:06:26.588583187 +0300
@@ -31,8 +31,6 @@
! $maclaptop = ibook powerbook macbook78 macbook79
! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79
-! $macvendorlayouts = ch de dk es fi fr gb is it latam nl no pt se us
-
! $azerty = be fr
! $qwertz = al cz de hr hu ro si sk
@@ -303,11 +301,9 @@
pc98 nec_vndr/jp = nec_vndr/jp(pc98)
macintosh_old us = macintosh_vndr/us(oldmac)
macintosh_old en_US = macintosh_vndr/us(oldmac)
- macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v)
macintosh_old $nonlatin = macintosh_vndr/us(oldmac)+%l%(v):2
macintosh_old * = macintosh_vndr/us(oldmac)+%l%(v)
$macs en_US = pc+macintosh_vndr/us(extended)
- $macs $macvendorlayouts = pc+macintosh_vndr/%l%(v)
olpc $olpclayouts = olpc+%l%(m)
olpc * = olpc+%l%(v)
$thinkpads br = pc+br(thinkpad)
@@ -396,9 +392,7 @@
sun4 * = latin+sun_vndr/us(sun4)+%l[1]%(v[1])
sun5 * = latin+sun_vndr/us(sun5)+%l[1]%(v[1])
macintosh_old us = macintosh_vndr/us(oldmac)
- macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1])
macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1])
- $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1])
$thinkpads br = pc+%l[1](thinkpad)
* * = pc+%l[1]%(v[1])
diff -Naur rules/evdev rules.new/evdev
--- rules/evdev 2009-07-06 21:05:17.798900672 +0300
+++ rules.new/evdev 2009-07-06 21:06:42.248594585 +0300
@@ -31,8 +31,6 @@
! $maclaptop = ibook powerbook macbook78 macbook79
! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79
-! $macvendorlayouts = ch de dk es fi fr gb is it latam nl no pt se us
-
! $azerty = be fr
! $qwertz = al cz de hr hu ro si sk
@@ -292,11 +290,9 @@
pc98 nec_vndr/jp = nec_vndr/jp(pc98)
macintosh_old us = macintosh_vndr/us(oldmac)
macintosh_old en_US = macintosh_vndr/us(oldmac)
- macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v)
macintosh_old $nonlatin = macintosh_vndr/us(oldmac)+%l%(v):2
macintosh_old * = macintosh_vndr/us(oldmac)+%l%(v)
$macs en_US = pc+macintosh_vndr/us(extended)
- $macs $macvendorlayouts = pc+macintosh_vndr/%l%(v)
olpc $olpclayouts = olpc+%l%(m)
olpc * = olpc+%l%(v)
$thinkpads br = pc+br(thinkpad)
@@ -385,9 +381,7 @@
sun4 * = latin+sun_vndr/us(sun4)+%l[1]%(v[1])
sun5 * = latin+sun_vndr/us(sun5)+%l[1]%(v[1])
macintosh_old us = macintosh_vndr/us(oldmac)
- macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1])
macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1])
- $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1])
$thinkpads br = pc+%l[1](thinkpad)
* * = pc+%l[1]%(v[1])
Reply to: