Mailinglist Archive: opensuse-features (47 mails)

< Previous Next >
[openFATE 318355] Convert X keyboard layouts to console keymaps
Feature changed by: Mindaugas Baranauskas (embar-)
Feature #318355, revision 27
Title: Convert X keyboard layouts to console keymaps

openSUSE Distribution: Unconfirmed
Requester: Mandatory

Requested by: Mindaugas Baranauskas (embar-)
Partner organization:

In systemd world we use localectl. Mapping between console and X
keyboards is complicated. I creates bugs (e.g. after switching
from legacy /etc/X11/xdm/ mapping in to new systemd
/usr/share/systemd/kbd-model-map mapping. Indeed most console keyboards
are obsolete, they are difficult to configure, as each layout requires
specific correct parameters for kbd_mode and setfont. And YaST also
have some additional mapping: /usr/share/YaST2/data/keyboard_raw.ycp.
We must change essentially keyboard management in YaST. We could use
Fedora solution by converting X keymaps to console keymaps to simplify
keyboard issues.

Use Case:
As discussed in,
Fedora has many more console layouts, converted from X keyboard layouts
with script: # Convert X keyboard layouts to console keymaps mkdir -p
$RPM_BUILD_ROOT/lib/kbd/keymaps/xkb perl <
/usr/share/X11/xkb/rules/base.xml > layouts-variants.lst while read
line; do XKBLAYOUT=`echo "$line" | cut -d " " -f 1` echo "$XKBLAYOUT"
>> layouts-list.lst XKBVARIANT=`echo "$line" | cut -d " " -f 2` ckbcomp
done < layouts-variants.lst # Convert X keyboard layouts (plain, no
variant) cat layouts-list.lst | sort -u >> layouts-list-uniq.lst while
read line; do ckbcomp "$line" | gzip >
$RPM_BUILD_ROOT/lib/kbd/keymaps/xkb/"$line".map.gz done < layouts-list-
uniq.lst Full spec file:
Fedora moved upstream layouts to /usr/lib/kbd/keymaps/legacy/ .

#1: Stefan Dirsch (sndirsch) (2015-07-21 15:20:21)
Finally I found the time to work on this. :-) Current result you can
find in obs://home:sndirsch:fate318355. I've created a console-setup
package, since SUSE was still lacking the ckbcomp tool to convert
xkeyboard-layout keymaps to console keymaps. I've adjusted kbd package
to convert xkeyboard-layout keymaps to console keymaps, which makes use
of this tool. Original kbd keymaps I've moved to legacy directory and
now they are last in loadkeys' search path, i.e. xkb converted ones are
preferred. Also in kbd package I've created additional entries for
systemd's mapping console keymap <-> X keymap. In systemd package I
append these entries to systemd's /usr/share/systemd/kbd-model-map
table. What's still missing are the adjustments in YaST. Do we want to
adjust YaST in a way so the existing console keymaps are replaced with
the converted xkb keymaps? Or do we want to add new entries to the YaST
list and still use the old legacy keymaps for the current list? Or
maybe both? I'm not sure here. Seems there are 3 files, which need
adjustments. lang2keyboard.ycp, xkblayout2keyboard.ycp, keyboard_raw.
ycp in /usr/share/YaST2/data. Not sure how these are connected togehter
exactly. I would like to see a proposal here preferrably by the YaST
developer(s). Mapping table console keyboard <-> X keyboard is now
available in systemd's /usr/share/systemd/kbd-model-map. Everything
YaST specific can now be based on that information.

#2: Stefan Dirsch (sndirsch) (2015-07-21 15:23:14)
Jiri Suchomel. I've found your email address in lang2keyboard.ycp. Can
you help here?

#3: Jiří Suchomel (jsuchome) (2015-07-21 16:08:28) (reply to #2)
I've already asked for this years ago in fate #309487.
So I think it's good there's time for it now. However, I'm not yast2-
country maintainer any more. Please ask Jiri Srain or Lukas who should
work on YaST side of this.

#4: Stefan Dirsch (sndirsch) (2015-07-28 15:28:58)
> Hope you didn't miss FATE#318426. A feature often requested by YaST
> development and finally being possible to implement. But now I would
need the
> input of YaST developers (see my comment #15). Without your input I
don't know
> how to continue there. :-(
> Also I don't know what all these different keyboad mapping variants
mean in
> keyboard_raw.ycp. Apart from the "pc104" there is also "macintosh",
> "type5", "type5_euro". Are they still being used by YaST?
> Any help would be appreciated.
Hi Stefan,I'm also adding Ancor, who has changed the code recently and
(Major) part of the current implementation has been created by Jiri
Suchomel, so I believe he'll be so kind and answer your questions.
Moreover, I'm also adding Ancor, who has changed the code recently and
thus should also have a knowledge about the implementation there.
Lukas Ocilka, Systems Management (Yast) Team Leader

#5: Mindaugas Baranauskas (embar-) (2015-08-18 20:45:27)
Nice to hear, that the is progress. I hope in openSUSE Leap 42.1 YaST
will provide selection of keyboard layouts, that are X and console
compatible (i.e. using console keymaps, converted from X).

#6: Stefan Dirsch (sndirsch) (2015-08-19 10:11:23) (reply to #5)
Good news. Everything is now put in place for tumbleweed, i.e. package
change requrests done (console-setup, kbd, systemd, yast2-country and
yast2-x11). Once this is in and has been tested we can continue with
Leap/42, then sle12-sp2.

#7: Mindaugas Baranauskas (embar-) (2015-08-21 10:41:07)
As I see in

there is no new keymaps for selection. Can we include all keymaps for
selection in YaST, not only ~50. I suggest we can use two columns: one
for layouts, one (regenerated after changes in first column) for
We may also follow Fedora and patch converted keyboards: at this moment
latest Fedora's kbd package will rename to, add
compose rules to cz layout. See

#8: Stefan Dirsch (sndirsch) (2015-08-21 11:01:07) (reply to #7)
Right. We didn't add more keymaps for selection to YaST. More than one
keyboard layout per language (with some exceptions) would overburden
most of our users, let alone introducing a choosable combination of
layout + variant. The changes I did for kbd/systemd didn't land yet in
factory. See and Let me know what's
still missing there. Submit for yast2-x11 is also still pending. See

#9: Mindaugas Baranauskas (embar-) (2015-08-21 11:22:50) (reply to #8)
Or maybe can we can implement two modes? 1) select from basic layout
(~50) and 2) select from all layouts. Modes could be switched by tab,
or by radio button, or by pressing existing "Expert settings" button or
by new separate "Details..." button.

#11: Mindaugas Baranauskas (embar-) (2015-08-21 11:43:47) (reply to
I opened new kbd package and I see, that is already renamed to fi- But there is still some jobs, that Fedora do:
* rename dublicated (existing in both kbd and kbd-legacy) layouts, e.g.
mv olpc/ olpc/
* sr-cy copy to i386/qwerty/sr-latin
* add compose rules to cz layout

#12: Mindaugas Baranauskas (embar-) (2015-08-21 11:52:29) (reply to
I was wrong by saying "rename dublicated (existing in both kbd and kbd-
legacy) layouts". Fedora only "Rename conflicting keymaps" (

mv dvorak/ dvorak/
mv fgGIod/ fgGIod/
mv olpc/ olpc/
#already done in our kbd
mv olpc/ olpc/
mv qwerty/ qwerty/

#13: Mindaugas Baranauskas (embar-) (2015-08-21 11:54:09) (reply to
in last message "#already done in our kbd " was for "mv olpc/
olpc/" only

#14: Stefan Dirsch (sndirsch) (2015-08-21 12:05:15) (reply to #13)
Mindaugas, before I get anything wrong. Could you do me a favor and
make a submitrequest for the remaining changes against home:sndirsch:
fate318355/kbd? That's the project, which I use for the development of
this FATE request.

#15: Mindaugas Baranauskas (embar-) (2015-08-21 13:10:45) (reply to
OK, you will find submit request 324843
We may also update kbd from 2.0.2 to 2.0.3.
If any, in future you can look at history of Fedora's kbd package in
git also:

#16: Stefan Dirsch (sndirsch) (2015-08-21 14:09:52) (reply to #15)
Thanks. Accepted and forwarded to Base:System, from where it hopefully
be forwarded to factory once accepted. I'm aware of the git repo for
the RH package sources. ;-)

#10: Stefan Dirsch (sndirsch) (2015-08-21 11:41:51)
Adding YaST developer.

#17: Mindaugas Baranauskas (embar-) (2015-08-21 17:53:36)
I a bit tested current versions of packages. I noticed, that in YaST2
marking layout, immediately also changes keyboard layout of all my
desktop. I suggest, YaST should isolate this change only for YaST
keyboard selection dialog for testing. Some layout selections causes to
use US layout: Greek, Russian, Serbian (and also Khmer, Simplified and
Traditional Chinese - these seems to be intentionally fallbacks to US).
Ukrainian keyboard seems wrong at all - it don't change layout to any
layout. YaST stores changes (at least in) /etc/sysconfig/keyboard file
(YAST_KEYBOARD variable), but here is obsolele KEYTABLE variable.
Changes in YaST don't affect /etc/sysconfig/console variables
variables. As we use converted X layout, we need reset them? Or maybe
they are obsolete also?

#18: Mindaugas Baranauskas (embar-) (2015-08-21 18:25:24) (reply to
Ech.. I installed some wrong version of YaST package... Reinstalled. Greek
and Serbian seems good. Russian fallbacks to US. Ukrainian keyboard
still seems wrong at all - it don't change layout to any layout.

#19: Mindaugas Baranauskas (embar-) (2015-08-21 18:59:47) (reply to
Played a bit more...
/etc/sysconfig/console variables is indeed important in terminal (then
go by Ctrl+Alt+F1)!
We must:
* not sure, which CONSOLE_FONT should be used

#20: Mindaugas Baranauskas (embar-) (2015-08-21 19:23:18) (reply to
At least with lt and lt-std keymaps, best console fonts are lat4-16 and

#21: Mindaugas Baranauskas (embar-) (2015-08-21 19:38:24) (reply to
More findings: Fedora seems to use eurlatgr console font, that covers
LatArCyrHeb and plus provides more special characters (according to openSUSE
has eurlatgr console font as file:
///usr/share/kbd/consolefonts/eurlatgr.psfu.gz I tested it and it seems
the best one! Even ←↓↑→ characters are displayed in console with this
font. I suugest, we also must set /etc/sysconfig/console CONSOLE_FONT="

#22: Mindaugas Baranauskas (embar-) (2015-08-22 17:42:53) (reply to
EurLatGr provides greater coverage for Latin and Greek characters, but at the
cost of Arabic, Cyrillic and Hebrew characters being dropped. So we can
use LatArCyrHeb-16 (or LatArCyrHeb-14) font for layouts with Arabic,
Cyrillic and Hebrew characters.

#23: Stefan Dirsch (sndirsch) (2015-08-24 09:43:30)
I believe changing the marking layout immediately is intentional
behaviour by YaST, but Ancor can comment on this. Also you cannot
change the keyboard layout only for the current YaST window (limitation
of X). So for now we cannot change this.
Russian falls back to "us,ru", i.e. "us" is first and can be switched
to "ru" by using Shift-Shift. I didn't want to change this, since 1) we
had issues in the past when using "ru,us" instead (switching didn't
work too well), 2) users are running into issues when trying to enter
the ASCII password in displaymanager.
Ukraine keyboard: We never had a working mapping from Linux console to
X11. We definitely should fix it though. Please open a bug for this
making sure adding me and Ancor to this bug.
Indeed KEYTABLE variable in /etc/sysconfig/keyboard is obsolete. YaST
now writes KEYMAP variable directly to /etc/vconsole. During
displaymanager startup /etc/X11/xdm/keytable creates the required
/etc/X11/xorg.conf.d/90-keytable.conf snippet by using systemd's
localectl command.
About changing the console font. Your propsal sounds reasonable to me,
but is unrelated to this FATE request. Please open a bug for this as
well again making sure to add me and Ancor to this bug.
Thanks for prompt and thouroughly testing. Very much appreciated!

+ #24: Mindaugas Baranauskas (embar-) (2015-08-24 14:44:42) (reply to
+ #23)
+ Bug for Ukraine keyboard
+ Bug for /etc/sysconfig/console:

openSUSE Feature:

< Previous Next >
This Thread