Howto change keyboard layout of Kdm login screen?

In kde I have an azerty keyboard layout which is the one that matches my keyboard. But on the kdmlogin screen, the keyboard layout is always qwerty. This makes it hard to type in passwords.

how can I change the kdm keyboard layout?

On 2013-04-07 10:36, suskewiet wrote:
>
> In kde I have an azerty keyboard layout which is the one that matches my
> keyboard. But on the kdmlogin screen, the keyboard layout is always
> qwerty. This makes it hard to type in passwords.
>
> how can I change the kdm keyboard layout?

I think that you have to change the layout in yast, because that way it
is the system keyboard, for all users. What you change inside kde, only
applies to that user and only inside kde.


Cheers / Saludos,

Carlos E. R.
(from 12.1 x86_64 “Asparagus” at Telcontar)

In yast, the keyboard layout is configured correctly, it does not affect the KDM layout…
I did some searching and found a file

/usr/sbin/rckdm

This file refers to another file:

/etc/X11/xdm/keytable

This file in turn contains:

conffile=/etc/X11/xorg.conf.d/90-keytable.conf

And this is the content of this file:


Section "InputClass"
    Identifier "LocalKeyboard"
    MatchIsKeyboard "on"
    **Option    "XkbLayout"    "be"**
    Option    "XkbOptions"    "caps:capslock"
EndSection

be would be the correct azerty layout. But KDM does not seem to use it. Can someone explain what I should change in which file so I can force KDM to use the correct layout?

Well, exactly this file does affect the kdm keyboard layout on my system. Could it be that you have a file called “/etc/X11/xorg.conf” as well? This could interfere… :wink:
And maybe you have another file in /etc/X11/xorg.conf.d/ containing a keyboard layout? This could interfere as well.

/etc/X11/xorg.conf : does not exist

These are the files I have in xorg.conf.d:

ls -l /etc/X11/xorg.conf.d/
totaal 40
-rw-r--r-- 1 root root   61  1 mrt 22:51 05-glamor.conf
-rw-r--r-- 1 root root 1099 21 feb 11:07 10-evdev.conf
-rw-r--r-- 1 root root 3640 27 jan 14:09 11-mouse.conf
-rw-r--r-- 1 root root  529  1 jul  2011 50-device.conf
-rw-r--r-- 1 root root  527  1 jul  2011 50-monitor.conf
-rw-r--r-- 1 root root  491  1 jul  2011 50-screen.conf
-rw-r--r-- 1 root root 1918  4 feb 21:49 50-synaptics.conf
-rw-r--r-- 1 root root  115 28 jan 09:19 50-vmmouse.conf
-rw-r--r-- 1 root root  835 28 jan 09:19 50-wacom.conf
-rw-r--r-- 1 root root  144  6 apr 20:32 90-keytable.conf


I noticed there is also a /etc/X11/xdm/xdm-config file which contains:

DisplayManager.keyFile:        /etc/X11/xdm/xdm-keys

But as you can see I don’t have such a file:

ls -l /etc/X11/xdm/
totaal 100
lrwxrwxrwx 1 root root    20  6 mrt 12:28 authdir -> /var/lib/xdm/authdir
-rwxr-xr-x 1 root root   816 31 mrt  2006 GiveDevices
-rw-r--r-- 1 root root 14814  8 jan 12:01 Keyboard.map
-rwxr-xr-x 1 root root  1545 19 jun  2010 keytable
-rw-r--r-- 1 root root   965 29 aug  2003 README.security
-rw-r--r-- 1 root root  2077 29 aug  2003 README.SuSE
-rwxr-xr-x 1 root root  3441 22 aug  2006 RunChooser
-rwxr-xr-x 1 root root  3805  1 mrt 12:30 SuSEconfig.xdm
-rwxr-xr-x 1 root root  4608 25 sep  2012 sys.xsession
-rwxr-xr-x 1 root root   760 31 mrt  2006 TakeDevices
-rw-r--r-- 1 root root  3745 30 nov  2009 Xaccess
-rw-r--r-- 1 root root  1609 29 jul  2006 xdm-config
-rwxr-xr-x 1 root root  1433 22 aug  2006 Xreset
-rw-r--r-- 1 root root  2986 22 aug  2006 Xresources
-rw-r--r-- 1 root root   738 22 aug  2006 Xservers
-rw-r--r-- 1 root root   382 29 aug  2003 Xservers.fs
-rwxr-xr-x 1 root root  5737  7 dec 13:46 Xsession
-rwxr-xr-x 1 root root  5583 11 okt  2011 Xsetup
-rwxr-xr-x 1 root root  2913 11 okt  2011 Xstartup
-rwxr-xr-x 1 root root   395 29 aug  2003 Xwilling


Could it be that this should be:

DisplayManager.keyFile:        /etc/X11/xdm/Keyboard.map

Which contains:

be-latin1       : microsoftpro : be           : x            : xfree86 : x : x : x : x : caps:capslock
be2-latin1      : microsoftpro : be           : x            : xfree86 : x : x : x : x : caps:capslock

???

Looks good… Same files with same sizes here, except for 50-vmmouse.conf

I noticed there is also a /etc/X11/xdm/xdm-config file which contains:

DisplayManager.keyFile:        /etc/X11/xdm/xdm-keys

But as you can see I don’t have such a file:

Same here. But DisplayManager.keyFile doesn’t have anything to do with the keyboard, but with authentification.
From the Xorg docs:

**DisplayManager.keyFile
**XDM-AUTHENTICATION-1 style XDMCP authentication requires that a private key be shared between xdm and the terminal. This resource specifies the file containing those values. Each entry in the file consists of a display name and the shared key. By default, xdm does not include support for XDM-AUTHENTICATION-1, as it requires DES which is not generally distributable because of United States export restrictions. 

ls -l /etc/X11/xdm/
totaal 100
lrwxrwxrwx 1 root root    20  6 mrt 12:28 authdir -> /var/lib/xdm/authdir
-rwxr-xr-x 1 root root   816 31 mrt  2006 GiveDevices
-rw-r--r-- 1 root root 14814  8 jan 12:01 Keyboard.map
-rwxr-xr-x 1 root root  1545 19 jun  2010 keytable
-rw-r--r-- 1 root root   965 29 aug  2003 README.security
-rw-r--r-- 1 root root  2077 29 aug  2003 README.SuSE
-rwxr-xr-x 1 root root  3441 22 aug  2006 RunChooser
-rwxr-xr-x 1 root root  3805  1 mrt 12:30 SuSEconfig.xdm
-rwxr-xr-x 1 root root  4608 25 sep  2012 sys.xsession
-rwxr-xr-x 1 root root   760 31 mrt  2006 TakeDevices
-rw-r--r-- 1 root root  3745 30 nov  2009 Xaccess
-rw-r--r-- 1 root root  1609 29 jul  2006 xdm-config
-rwxr-xr-x 1 root root  1433 22 aug  2006 Xreset
-rw-r--r-- 1 root root  2986 22 aug  2006 Xresources
-rw-r--r-- 1 root root   738 22 aug  2006 Xservers
-rw-r--r-- 1 root root   382 29 aug  2003 Xservers.fs
-rwxr-xr-x 1 root root  5737  7 dec 13:46 Xsession
-rwxr-xr-x 1 root root  5583 11 okt  2011 Xsetup
-rwxr-xr-x 1 root root  2913 11 okt  2011 Xstartup
-rwxr-xr-x 1 root root   395 29 aug  2003 Xwilling

Same files here, with the same sizes. But I think those are mostly for xdm. Not sure if kdm uses them…

Well, my /etc/X11/xorg.conf.d/90-keytable.conf looks like this:

Section "InputClass"        Identifier "LocalKeyboard"
        MatchIsKeyboard "on"
        Option  "XkbLayout"     "de"
        Option  "XkbVariant"    "nodeadkeys"
EndSection

The only difference I can spot (except for the keyboard layout) is the “XkbVariant” line. Maybe you could try to change that and see if it works then?

Otherwise I can only suggest to have a look into /var/log/Xorg.0.log;
in mine I have following lines:

   175.793] (II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/event0)
   175.793] (**) AT Translated Set 2 keyboard: Applying InputClass "evdev keyboard catchall"
   175.793] (**) AT Translated Set 2 keyboard: Applying InputClass "evdev keyboard catchall"
   175.793] (**) AT Translated Set 2 keyboard: Applying InputClass "LocalKeyboard"
   175.793] (II) Using input driver 'evdev' for 'AT Translated Set 2 keyboard'
   175.793] (**) AT Translated Set 2 keyboard: always reports core events
   175.793] (**) evdev: AT Translated Set 2 keyboard: Device: "/dev/input/event0"
   175.793] (--) evdev: AT Translated Set 2 keyboard: Vendor 0x1 Product 0x1
   175.793] (--) evdev: AT Translated Set 2 keyboard: Found keys
   175.793] (II) evdev: AT Translated Set 2 keyboard: Configuring as keyboard
   175.793] (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio0/input/input0/event0"
   175.793] (II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD, id 9)
   175.793] (**) Option "xkb_rules" "evdev"
   175.793] (**) Option "xkb_model" "evdev"
   175.793] (**) **Option "xkb_layout" "de"**
   175.793] (**) **Option "xkb_variant" "nodeadkeys"**

Here you see, it’s picking up my 90-keytable.conf…
Maybe you find something in there that could help.

Another idea: what KEYTABLE have you set in /etc/sysconfig/keyboard? This setting is for the text console, but maybe X inherits this somehow.

xorg.0.log looks good. It says it’s using be layout, but in practice it does not…

    19.621] (II) evdev: Logitech Unifying Device. Wireless PID:4002: Configuring as mouse
    19.621] (II) evdev: Logitech Unifying Device. Wireless PID:4002: Configuring as keyboard
    19.621] (II) evdev: Logitech Unifying Device. Wireless PID:4002: Adding scrollwheel support
    19.621] (**) evdev: Logitech Unifying Device. Wireless PID:4002: YAxisMapping: buttons 4 and 5
    19.621] (**) evdev: Logitech Unifying Device. Wireless PID:4002: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
    19.622] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.3/usb5/5-2/5-2:1.2/0003:046D:C52B.0003/input/input0/event0"
    19.622] (II) XINPUT: Adding extended input device "Logitech Unifying Device. Wireless PID:4002" (type: KEYBOARD, id 8)
    19.622] (**) Option "xkb_rules" "evdev"
    19.622] (**) Option "xkb_model" "evdev"
**    19.622] (**) Option "xkb_layout" "be"**
    19.622] (**) Option "xkb_options" "caps:capslock"
    19.622] (II) evdev: Logitech Unifying Device. Wireless PID:4002: initialized for relative axes.
    19.622] (WW) evdev: Logitech Unifying Device. Wireless PID:4002: ignoring absolute axes.
    19.622] (**) Logitech Unifying Device. Wireless PID:4002: (accel) keeping acceleration scheme 1
    19.622] (**) Logitech Unifying Device. Wireless PID:4002: (accel) acceleration profile 0
    19.622] (**) Logitech Unifying Device. Wireless PID:4002: (accel) acceleration factor: 2.000
    19.622] (**) Logitech Unifying Device. Wireless PID:4002: (accel) acceleration threshold: 4
    19.622] (II) config/udev: Adding input device Logitech Unifying Device. Wireless PID:101a (/dev/input/event1)
    19.622] (**) Logitech Unifying Device. Wireless PID:101a: Applying InputClass "evdev pointer catchall"
    19.622] (**) Logitech Unifying Device. Wireless PID:101a: Applying InputClass "evdev pointer catchall"
    19.622] (II) Using input driver 'evdev' for 'Logitech Unifying Device. Wireless PID:101a'


And I have this in /etc/sysconfig/keyboard:

KEYTABLE="be-latin1.map.gz"

.

No idea then why KDM uses qwerty (I assume it is using “us”)

Then I’m out of ideas, sorry…:
KDM doesn’t set it’s own keyboard layout, it just uses what X uses.

Have you tried changing/removing that “XkbOptions” line in 90-keytable.conf? And maybe add a “XkbVariant” line like I have?
Those are the only differences between our configurations I could spot…

On 2013-04-10 16:26, wolfi323 wrote:
>
> Then I’m out of ideas, sorry…:
> KDM doesn’t set it’s own keyboard layout, it just uses what X uses.

A possible trick is login as the user that kdm uses, and then configure
the KDE keyboard there.


Cheers / Saludos,

Carlos E. R.
(from 12.1 x86_64 “Asparagus” at Telcontar)

That would be root.

But I just tried that and it had no effect on kdm. The keyboard layout still was what’s set in 90-keytable.conf.

And I tried to switch my system keyboard layout to “be” in Yast. I got the same 90-keytable.conf that the OP posted before.
And the keyboard WAS belgian on kdm! It took me some time to enter my password correctly…:wink:

So, out of ideas for now, sorry…:shame:

I have reported a bug in bugzilla for this. I already reported this bug in os 12.2 but it learly is jot resolved wwith no bypass so far.

i will try to change to a different azerty layout later and see if that has effect. i assume french layout is also azerty

On 2013-04-10 19:36, wolfi323 wrote:

> So, out of ideas for now, sorry…:shame:

I would have a look at the sysconfig files - I copy the settings I have:


/etc/sysconfig/keyboard:

KEYTABLE="es.map.gz"
YAST_KEYBOARD="spanish,pc104"

and for X, /etc/X11/xorg.conf.d:

Section "InputClass"
Identifier "LocalKeyboard"
MatchIsKeyboard "on"
Option  "XkbLayout"     "es"
EndSection

I don’t know what the correct settings would be in this case. I also do
not use KDE, but when I do, I do not configure the keyboard there, the
system keyboard is OK.


Cheers / Saludos,

Carlos E. R.
(from 12.1 x86_64 “Asparagus” at Telcontar)

Well, we’ve already been through that… And the strange thing is (well, for me anyway), that according to his Xorg.0.log X is picking up the keyboard setting.:\

@suskewiet:
Have you tried using a different login manager (e.g. xdm)?
So that we can be sure whether or not it is kdm’s fault.
You can configure that in /etc/sysconfig/displaymanager (DISPLAYMANAGER).

Another thought:
X’s keyboard layout can be changed with “setxkbmap”. Maybe this is called somewhere in the boot process after kdm is started?

I’ve just tried xdm, and it is also using qwerty like kdm… I also tried, while the kdm screen is showing, pressing ctrl-alt-F1 to switch to a console tty1 screen. When I type there, it is azerty which is ok. So the problem seems to concentrate on the kdm/xdm interface.

“setxkbmap” does this tool change the 90-keytable file? If not, what tool updates this file? Changing “yast - system keyboard” settings has no effect on this file…

So it’s not a problem with kdm.

“setxkbmap” does this tool change the 90-keytable file? If not, what tool updates this file? Changing “yast - system keyboard” settings has no effect on this file…

No, “setxkbmap” does not write anything. It just changes the keyboard layout for a running X server.
When I change the layout in Yast->System Keyboard, it does get saved in /etc/X11/xorg.conf.d/90-keytable.conf here. But not immediately, only when the X server is started the next time. So I don’t really know, what changes that file, maybe the xdm startup script?
Anyway, you do have the correct layout specified in this file, so this doesn’t really matter…

Could you please post the output of “setxkbmap -v -query” when you’re logged in? Maybe there’s some warning…
Does it work when you change the keyboard layout with “setxkbmap -v us” when logged in? (the “-v” isn’t necessary, but it increases the verbosity; you could try other maps than “us”, of course)

I have tried to change kdm’s keyboard layout in tty1 with setxkbmap, but that didn’t work, because it didn’t didn’t find the correct display. (and when I tried to specify it using “-display :0” I got an error about “MIT-MAGIC-COOKIE-1”…) So that can’t be the problem either I guess…

I did some investigation, /etc/init.d/xdm calls /etc/X11/xdm/keytable. This seems to read the layout from /etc/sysconfig/keyboard and creates
/etc/X11/xorg.conf.d/90-keytable.conf accordingly… It tries to find the layout (from /etc/sysconfig/keyboard) in /etc/X11/xdm/Keyboard.map. When something goes wrong, it sets “us” as default, but it would also write this to 90-keytable.conf…:sarcastic:
I also found something regarding a cache in /etc/X11/xdm/keytable: it uses /var/cache/xdm, so maybe something is wrong there on your system? Try to delete all files in there.

Well, one more idea:
The man page of setxkbmap mentions some possible problems:

If  you have an Xserver and a client shell running on different comput-ers and XKB configuration files on those machines are different you can
get problems specifying a keyboard map by model, layout, options names.

But you have the X server and client (xdm/kdm) running on the same computer, right?

Maybe you have some broken files in /usr/share/X11/xkb/compiled/? Just delete everything in there… (on my system I only have a README.compiled file in there)

Oh, and you don’t use “failsafe” mode, do you? Because then xdm reads the config from /etc/X11/xorg.conf.install, so if you have a keyboard layout specified in there, it would override 90-keytable.conf I think.

I changed in yast - system keyboard to french and rebooted pc, 90-keytable file was updated to “fr”, but still qwerty instead of azerty…

I have 1 file in /var/cache/xdm: keyboard.last:

cache_keytable=be-latin1.map.gz

and this is output for setxkbdmap:

setxkbmap -v query
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+query+inet(evdev)+terminate(ctrl_alt_bksp)+capslock(capslock)
geometry:   pc(pc104)
Error loading new keyboard description

As you can see it says “qwerty” and an error…

Yes, that’s because you try to set the layout to “query” which doesn’t exist…

Please type: “setxkbmap -v -query”… Note the ‘-’ before “query”

Second try:

setxkbmap -v -query
Trying to build keymap using the following components:
keycodes:   evdev+aliases(azerty)
types:      complete
compat:     complete
symbols:    pc+be+inet(evdev)+terminate(ctrl_alt_bksp)+capslock(capslock)
geometry:   pc(pc104)
rules:      evdev
model:      logicd
layout:     be
options:    caps:capslock

changing to another layout succeeds:

setxkbmap -v fr
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(azerty)
types:      complete
compat:     complete
symbols:    pc+fr+inet(evdev)+terminate(ctrl_alt_bksp)+capslock(capslock)
geometry:   pc(pc104)

setxkbmap -v -query
Trying to build keymap using the following components:
keycodes:   evdev+aliases(azerty)
types:      complete
compat:     complete
symbols:    pc+fr+inet(evdev)+terminate(ctrl_alt_bksp)+capslock(capslock)
geometry:   pc(pc104)
rules:      evdev
model:      logicd
layout:     fr
options:    caps:capslock

…and the new layout does work, I guess. (does it?)

Well.
So everything seems to work correctly, and everything seems to be configured correctly, and the configuration seems to be loaded correctly, but you have a wrong keyboard layout at the login screen…:\

Perhaps there is a clue somewhere in your Xorg.0.log?
Could you please upload the whole file somewhere (e.g. SUSE Paste ) and post a link here?
So I could take a look…

Here it is: SUSE Paste