Red Hat Bugzilla – Bug 80993
redhat-config-xfree86 trips on a keyboard
Last modified: 2008-05-01 11:38:04 EDT
Description of problem:
An attempt to use redhat-config-xfree86 results in the following traceback:
Traceback (most recent call last):
File "/usr/share/redhat-config-xfree86/xconf.py", line 1091, in ?
xconfig = generate_xconfig(hardware_state)
File "/usr/share/redhat-config-xfree86/xconf.py", line 837, in generate_xconfig
get_option(corekb, "XkbRules").val = keyboard["rules"]
File "/usr/lib/python2.2/site-packages/rhpl/keyboard.py", line 76, in __getitem__
raise KeyError, "No such keyboard type %s" % (table,)
KeyError: No such keyboard type emacs2
It looks like that this Python code is trying to find a keyboard type
in a wrong place, i.e. /etc/sysconfig/keyboard which holds a configuration
for a _console_ keyboard, or at least is not dealing in a reasonable manner
with keyboard types which do exist.
Can you attach your /etc/sysconfig/keyboard file?
Nevermind, I've worked out a fix. With redhat-config-xfree86-0.7.0-6, we
default to a US keymap if the keyboard in /etc/sysconfig/keyboard is not in the
list of keyboards that rhpl knows about. This avoids the traceback and should
at least get X up and running. If the user doesn't want to use a US keymap,
they can then run redhat-config-keyboard and select another keymap.
Note that to get a keyboard in /etc/sysconfig/keyboard file that is not in
rhpl's keyboard list, the user would have to use a config tool other than
redhat-config-keyboard. (i.e. emacs2 keyboard is a valid console keymap but
redhat-config-keyboard doesn't offer emacs2 as a choice since there's no X
QA, please verify.
Here is my 'keyboard' file in its full glory
and KEYTABLE may hold any of 121 map names from /lib/kbd/keymaps/i386/.
Frankly I was thinking rather in terms of possible mapping of these names
into something acceptable to xfree86 maybe somewhat less crude than everything
we do not know into "us". Azerty keyboard "be-latin1", assuming that not
recognized by X, likely does not work very well as "us". It seems that
for most names a reasonable mapping should be "obvious" and leftovers
could be dumped on "us". What is your opinion?
I agree that this is not the most elegant solution. However, I have more
important bugs from Phoebe that need my attention. At least this solution
avoids the traceback, which was my main concern.
As I said, the user has to have done some manual changes to get a keyboard in
/etc/sysconfig/keyboard that rhpl's keyboard list doesn't know about.
'be-latin1', by the way, is in rhpl's keyboard list, so that should work just
fine, but you are right in that there are probably other keymaps that wouldn't
be properly handled by this fix. But again, getting a working XF86Config file
is the important thing and the user can then run redhat-config-keyboard after that.
Fix confirmed with redhat-config-xfree86-0.7.1-3.