fobq,
You're welcome.
I am glad that you got it working.
If you are happy with your configuration now, you don't need to read the remainder of this post. But if you are curious about what happened, how it is supposed to work, why it doesn't, and alternative ways you can work around the problem, read on.
Either way, welcome to the forum!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
npierce wrote:. . . but will get back to you later with more of an explanation.
Here's what happened.
You have been trying different layouts. As you mentioned, at one time you had four layouts working. You tried the phonetic variant for two of the layouts you tried (ua and ru).
Let's call the four keymaps that you cycle through with
Shift+
Alt "keymap 1", "keymap 2", "keymap 3", and "keymap 4". At least once while trying these out you had a phonetic variant loaded for "keymap 2", "keymap 3", and "keymap 4" -- maybe not at the same time, but at least once while trying different layouts.
There is nothing wrong with doing that, of course. You should be able to move different layouts and variants around as much as you like while deciding how best to arrange them.
BUT . . .
But the XKB Configuration Manager has a bug which sometimes causes the configuration for the layouts to become out of sync with the configuration of the variants when layouts are removed.
For instance, lets say keymap 1 is "hu: standard", keymap 2 is "ru: phonetic, and keymap 3 is "ua: phonetic". This would give these two lines in the configuration file:
Code: Select all
Option "XkbLayout" "hu,ru,ua" #xkeymap0
Option "XkbVariant" "standard,phonetic,phonetic"
Note how the order of the layouts matches the order of the variants.
If we were then to use XKB Configuration Manager to remove the ua layout, we would hope that it would also remove the associated variant from the configuration file, since it is pointless for it to be there as an orphan. (We can have a layout without a variant, but we can't have a variant without a layout.)
So we would hope that the configuration file would then look like this:
Code: Select all
Option "XkbLayout" "hu,ru" #xkeymap0
Option "XkbVariant" "standard,phonetic"
But it doesn't. XKB Configuration Manager neglects to remove the variant that was associated with the ua layout, so the configuration file looks like this:
Code: Select all
Option "XkbLayout" "hu,ru" #xkeymap0
Option "XkbVariant" "standard,phonetic,phonetic"
That in itself doesn't cause a problem. The orphaned variant is simply ignored.
But if we then were to use XKB Configuration Manager to add the lt layout, the configuration file would look like this:
Code: Select all
Option "XkbLayout" "hu,ru,lt" #xkeymap0
Option "XkbVariant" "standard,phonetic,phonetic"
This says that for keymap 3 we want the lt layout with its phonetic variant. But that's not what we asked for. We didn't ask for a variant. In fact, there is not a variant for the lt layout named "phonetic".
And that's the problem. If we then click the
Yes button to activate the new settings, we get the "An Error has occured! Try again." message, because we are asking it to set a keymap that does not exist. And if we restart the X server, X will see that the keymap doesn't exist, throw up its hands, and load the default us keymap.
In fact, a look at the error log, /var/log/Xorg.0.log, will show a couple of lines like this (but with different timestamps):
Code: Select all
[ 43843.943] (EE) Error loading keymap /usr/X11R7/share/X11/xkb/compiled/server-0.xkm
[ 43843.943] (EE) XKB: Failed to load keymap. Loading default keymap instead.
OK, that's probably more than you want to know about what went wrong. Rather than provide details about what went wrong, you probably wish that I told you how to work around the problem so that you can move on and get some work done.
One thing you can do is to edit the /etc/X11/xorg.conf file yourself, instead of letting XKB Configuration Manager do it. Having looked at the example code blocks above, you probably already understand the format. The
Option "XkbLayout" line has a comma-separated list enclosed in quotation marks of from one to four layouts. The
Option "XkbVariant" line has a comma-separated list enclosed in quotation marks of from zero to four variants. I should add that if you don't want variants for the first layouts in the list, but do want variants for layouts later in the list, leave the variant names blank, but don't leave out the commas.
For example, if you wanted to use the hu and ru layouts with no variant, but wanted to use the phonetic variant for the ua layout, the configuration file would look like this:
Code: Select all
Option "XkbLayout" "hu,ru,ua" #xkeymap0
Option "XkbVariant" ",,phonetic"
If you don't know the name of a layout or variant, you could look at the lists in XKB Configuration Manager, or examine the files in the /etc/X11/xkb/symbols/pc/ directory.
Changes you make to xorg.conf will only take effect after you restart the X server. For quick experimentation without repeatedly restarting the X server, you can use the setxkbmap command. The command format is similar to the lines in xorg.conf. This command is equivalent to the xorg.conf example I just gave:
To see the current settings:
Changes made with setxkbmap only last until you restart the X server. Once you have experimented and find a configuration that you like, you'll probably want to edit xorg.conf so that the keymaps are set the way you want them whenever you start the X server.
XKB Configuration Manager is a great little utility -- when it works, which is most of the time. I do hope that this bug will be corrected in future Puppies.
For even more detail, see my bug report and patch from February 2012:
Racy Puppy 5.2.2 Final, 18 Nov. 2011: 4 bugs in the XKB Configuration Manager (xkbconfigmanager)