(also 13.2) YaST System Keyboard module is not offering any keyboard types

Regardless of whether the Plasma4|5 KDE YaST GUI or the CLI (C-Library curses?) yast2 GUI is being used, the “System Keyboard” module no longer offers a list of possible keyboards.

  • I seem to recall that the installation routines still offer the list of possible keyboards.

Does anyone happen to know if an issue has been raised with the developers?
[HR][/HR]And, by the way, does anyone happen to know what the possible values of the /etc/sysconfig/keyboard parameter YAST_KEYBOARD are?I have mine currently set as follows: YAST_KEYBOARD="german,pc105"

Odd I see it here in 13.2

G’dday mate! How’re going then?
Given your location I am beginning to suspect that everyone who has default consoles set up for US QWERTY keyboards and a system language of “en_US” is not being troubled by this issue.
There seems to be something not quite right for those folks with systems using (for example) European language settings and keyboard layouts.
I hope that it’s not a UTF-8 versus 7-bit ASCII issue . . .

  • Especially as UTF-8 was initially defined by a couple of Bell Labs technical staff members (if I’m not mistaken at the Murray Hill location) . . .

It works fine here too, on both Leap and 13.2.
And yes, I do have my keyboard set to de (QWERTZ), and a system language of de.

The YAST_KEYBOARD parameter is only used so that YaST can remember what keyboard exactly has been chosen, it serves actually no purpose otherwise.

Despite setting up as follows:

  • /etc/sysconfig/keyboard->KEYTABLE=“”
  • /etc/vconsole.conf->KEYMAP=de-latin1-nodeadkeys
  • mkinitrd
  • reboot

13.2/Leap 42.1: CLI “yast2 keyboard” and Plasma4/5 KDE YaST “System Keyboard” both do not offer a list of possible system keyboards.

Of course changing the keyboard settings won’t help.
It should work the same regardless of the actual settings. The point of it is to create the settings after all.

Something seems to be missing on your systems.
I have no idea what, I would have to go through YaST’s source code (it is written in ruby, so the installed files are human readable).

Maybe have a look at the log file (/var/log/YaST2/y2log) after running the “System Keyboard” module, this might contain an error message.

Btw, there is no Plasma4/5 KDE YaST, only a Qt(5) one… :wink:

Wolfi,
I’ll take a look at the YaST (Ruby) souce and report my findings here – possibly tomorrow . . .

Ok, so the value of YAST_KEYBOARD apparently decides what keyboard layouts are offered in YaST.
If I mangle that (I tried “gman,p04” :wink: ), the list is empty. And it is also empty if I set it to “german,pc105” like in your case.

Try to set it to “german,pc104” and it should work.

Did you change that manually?
If not you might have found a bug in the installer or YaST.

Yes, on both systems (13.2 and Leap 42.1) changed from “pc105” (back) to “pc104” and:

  • it now works!

Yes, it was a manual change some time ago – I’m using standard 105 key German keyboards.And yes, it seems that YaST has it’s own interpretation of “pc104” / “pc105” . . .

[HR][/HR]I’ll continue with the code reading and report back when I’ve found out why YaST behaves like this.

I’m having the same problem, with an english-us keyboard. I used to be able to switch keyboard layouts in previous versions of opensuse, but there’s no such option anymore, anywhere. Any ideas?

Did you read the thread??

I’m beginning to suspect that the following hints are missing from the configuration file comments, Release Notes and the openSUSE ActiveDoc (Error 503: “Sorry, the page you are looking for is currently down for maintenance.”):

  • In /etc/sysconfig/keyboard
    set both KEYTABLE and YAST_KEYBOARD to the empty string: “” - Execute the YaST “System Keyboard” module: the keyboard choices should now be visible.
  • Check that YaST “System Keyboard” has entered the correct key-table value the systemd
    configuration file /etc/vconsole.conf

YaST “System Keyboard” may possibly set the KEYTABLE value: this can safely set to the empty string after the YaST session has been exited

  • Need to execute (as root) “mkinitrd” again after manually editing /etc/sysconfig/keyboard

[HR][/HR]Or, do you mean the keyboard layouts as seen by GUIs such as Plasma KDE?(Sorry, no GNOME on my machines and therefore no comment.)

With Plasma 4 (13.2) and Plasma 5 (Leap 42.1) the user’s keyboard layout is set-up via “System settings” -> “Input devices” -> “Keyboard”

  • 2nd tab: text-only; national flag; text and flag.

Not quite.
KEYTABLE should not matter in this regard, it only affects what keyboard layout is configured, not what layouts YaST will offer.
And it should be overridden by /etc/vconsole.conf anyway, I don’t know if it still has any effect on Leap at all (if vconsole.conf is empty).

YAST_KEYBOARD is set by the installer, and should not be changed manually.
It does have this comment:

# The YaST-internal identifier of the attached keyboard.
#

(“YaST-internal” means to me: “do not touch!” :wink: )

And it doesn’t have to be empty. Setting it to “german,pc104” (or actually “anything,pc104”, although I haven’t tried all possible values for anything :wink: ) at least works as well, probably also ".

Need to execute (as root) “mkinitrd” again after manually editing /etc/sysconfig/keyboard

YaST should do that automatically.

Or, do you mean the keyboard layouts as seen by GUIs such as Plasma KDE?(Sorry, no GNOME on my machines and therefore no comment.)

With Plasma 4 (13.2) and Plasma 5 (Leap 42.1) the user’s keyboard layout is set-up via “System settings” -> “Input devices” -> “Keyboard”

  • 2nd tab: text-only; national flag; text and flag.

But note that the user settings override the system wide settings.
So if you change the keyboard layout in the desktop settings, changing them in YaST afterwards will have absolutely no effect for that user.

Agreed, but, IMHO it seems that systemd may possibly be a little bit sensitive in this respect. Therefore it is possibly safer to simply ensure that the KEYTABLE value is simply an empty string to ensure reliable behavior once mkinitd has done its thing – for the case of a system which uses systemd.

IMHO it is sometimes better to use brute force to ensure that YaST behaves as it should do.
Taking a quick look through the RPM query listings, it seems that /etc/sysconfig/keyboard is not present in any RPM package and therefore, is possibly generated by something.
IMHO if an empty string is used as the initial value of YAST_KEYBOARD then a predictable reliable behavior of the YaST System Keyboard module is to be expected regardless of the system’s location on planet Earth.

systemd only knows about /etc/vconsole.sh.

/etc/sysconfig/keyboard is (and always was) (open)SUSE specific, and is rather a compatibility thing to older openSUSE versions if it is still used/respected.
AFAIK openSUSE’s systemd package contains (contained? I’m not sure if it is still included in Leap) a patch to respect /etc/sysconfig/keyboard, but I would need to take a look at that to see how it exactly behaves.

IMHO it is sometimes better to use brute force to ensure that YaST behaves as it should do.

IMHO, not.

Taking a quick look through the RPM query listings, it seems that /etc/sysconfig/keyboard is not present in any RPM package and therefore, is possibly generated by something.

There’s the /var/adm/fillup-templates/sysconfig.keyboard template file in the package kbd, and when that package is installed it also creates
/etc/sysconfig/keyboard from this template via “fillup”.
The actual values are set by YaST during the installation, or if you run it manually afterwards. Unless you edit the file directly of course.

IMHO if an empty string is used as the initial value of YAST_KEYBOARD then a predictable reliable behavior of the YaST System Keyboard module is to be expected regardless of the system’s location on planet Earth.

Predictable maybe, but maybe also wrong.

As I see it, this value seems to “filter” the keyboard layouts, so that YaST only show those that apply to the keyboard that YaST detected.
pc104 should be the right choice for most keyboards in use today I suppose.

You already experienced what can happen if you modify it without knowing what it does or what it should be set to… :wink:

Hmmmm . . . /var/adm/fillup-templates/sysconfig.keyboard ends at COMPOSETABLE=“clear winkeys shiftctrl latin1.add”.
Looking at the “fillup” man page, a possible solution would be to rewrite /etc/sysconfig/keyboard by means of “fillup” and then run YaST -> System Keyboard.
Or, simply force a reinstall the kbd package which would then run fillup anyway.

Yes. And?
The rest is added by YaST during installation or later configuration.

Looking at the “fillup” man page, a possible solution would be to rewrite /etc/sysconfig/keyboard by means of “fillup” and then run YaST -> System Keyboard.
Or, simply force a reinstall the kbd package which would then run fillup anyway.

Yes, but one point of fillup is to not change existing config values, only append new ones that don’t exist yet.

And if you delete the file and reinstall kbd, the file will be created with empty values. Probably not what you want.

The main point of /etc/sysconfig/ is to provide a central location for system config files that can be managed by YaST.