GNOME Bugzilla – Bug 433300
GNOME does not properly switch keyboard maps
Last modified: 2007-04-29 19:31:21 UTC
Please describe the problem: Here's my setup: I am using Debian 4.0 ("Etch"),and GNOME's version is 2.14.3. I have "Turkey" and "U.S. English" in the "Layouts" tab of "Keyboard Preferences". Please note that Turkey is the first layout in the list and U.S. English is the second. It turns out that the order of the layouts affects the active keymap. I also have the "Keyboard Indicator" applet enabled. When I log in, the keyboard map is set by default to Turkey, and all keys work properly. However when I switch to U.S. English using the keyboard indicator, I notice that I am not able to type the backwards slash ("\") and the pipe character ("|") using the key just above the right shift key. Instead of backwards slash, the "," character comes up, and instead of the pipe character the ";" character comes up. Note that these two bindings were left over from the Turkish keyboard layout. The mentioned key is acting as if it were in the Turkish keyboard layout. However, if I change the order of the keyboard layouts in the "Keyboard Preferences" window so that "U.S. English" is the first layout and "Turkey" is the second, everything is fine. So, the summary is that GNOME changes the keyboard map in a way which causes the default layout's key mappings to be left over to the secondary keymap. When I use "setxkbmap us" to change the layout, the problem mentioned above does not occur. This is why I think that the problem is in the way GNOME changes the keyboard layout. Steps to reproduce: 1. Open Desktop -> Preferences -> Keyboard 2. Open the "Layouts" tab 3. Add "Turkey" and make sure that it is the first layout. (Move it up.) 4. Add "U.S. English" and make sure that it is the second layout. (Move it down.) 5. Close the "Keyboard Preferences" window. 6. Right-click on the panel and select "Add to Panel". 7. Add the "Keyboard Indicator" applet to the panel. 8. Now switch to "Turkey" (abbreviated "Tur") keyboard layout. (Press Left and Right Alt keys at the same time to switch the keyboard layout.) 9. Now switch to "U.S. English" (abbreviated "USA") keyboard layout. 10. Open up a text editor and try to type "\" (backwards slash) and "|" (pipe) using the key just above the right shift key. 11. Notice that the mentioned key causes "," and ";" to get printed, as if the keyboard layout were "Turkey". 12. Open up the "Keyboard Preferences" window and make sure that "U.S. English" is the first layout in the list. (Move it up.) 13. Redo 8-10 and notice that the mentioned keyboard key is working properly now. Actual results: The key above the right shift key does not register the correct characters. (It prints out "," whereas it should print out "\", and it prints out ";" whereas it should print "|".) Expected results: I would expect the key to print the correct characters. Does this happen every time? Yes, it does. Other information:
Can not reproduce this, using GNOME 2.14.x (same as situert, reporter). I do get ",;" for Turkish and "\|" for USA layout, as shown in live IRC debugging. Pedro couldn't reproduce this before, either. WORKSFORME, and Pedro. ;) Probably a distro specific issue. (I am running an olderly Mandriva, with a GNOME version built by GARNOME.) Please feel free to reopen this bug, if you seriously believe this is not a distro specific issue. Thanks!
This is indeed not a bug in GNOME. It turns out that this is a X.org related bug. Hence, the resolution of NOTGNOME is fine. Please see the following URLs for more information: http://bugs.freedesktop.org/show_bug.cgi?id=10811 http://bugs.freedesktop.org/show_bug.cgi?id=8789