Why does the '#' character break the KDE graphical user login?

Version: 13.2

If I change an account password so that it contains a # character; the KDE graphical user login breaks, i.e. I cannot login despite using the correct password; the command line “su <accountName>” accepts the new password with the # character. Why does the KDE graphical user login object to the # character? The $ character appears to be accepted OK, what is special about a # character in a password context?

For consistency either the passwd command should reject passwords with # character or the KDE graphical user login should accept passwords with the # character.

It only appears to happen on openSUSE 13.1. 13.2 appears to be OK.

On 2014-12-22 13:36, Addanc wrote:
>
> Version: 13.2
>
> If I change an account password so that it contains a # character; the
> KDE graphical user login breaks, i.e. I cannot login despite using the
> correct password; the command line “su <accountName>” accepts the new
> password with the # character. Why does the KDE graphical user login
> object to the # character? The $ character appears to be accepted OK,
> what is special about a # character in a password context?

Do you have a US keyboard, or different?


Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 “Bottle” at Telcontar)

Yes KDM appears to be using a US style keymap; once logged into KDE desktop all is fine. Every keyboard configuration I can find (i.e. System Settings, YAST) looks ok. In
“/etc/X11/xorg.conf.d/00-keyboard.conf” I have the following:

# Read and parsed by systemd-localed. It's probably wise not to edit this file
# manually too freely.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "gb"
        Option "XkbModel" "microsoftpro"
        Option "XkbVariant" "basic"
EndSection

This isn’t correct since the keyboard is a Logitech cordless keyboard; don’t know what valid options are available for this.

This shouldn’t matter.

But your layout is set to “gb” (Great Britain) which is different than “us”, in particular regarding the ‘#’ key.

So change it to “us”, best to use YaST->Hardware->Hardware Keyboard Layout for that.
Editing that file directly should work as well, but will only have effect for Xorg and not text mode, and your change might be lost again.

KDE has its own user settings that will override the system’s one, so that’s why it’s ok there.

On 2014-12-23 20:26, Addanc wrote:
>
> Yes KDM appears to be using a US style keymap; once logged into KDE
> desktop all is fine. Every keyboard configuration I can find (i.e.
> System Settings, YAST) looks ok.

And which country should it use? GB? If you don’t say I can’t know.

Traditionally, the settings were made into “/etc/sysconfig/keyboard”:


YAST_KEYBOARD="spanish,pc104"

I don’t know how well this file works on 13.2, though.

In
“/etc/X11/xorg.conf.d/00-keyboard.conf” I have the following:

Code:

# Read and parsed by systemd-localed. It's probably wise not to edit this file

manually too freely.

Section “InputClass”
Identifier “system-keyboard”
MatchIsKeyboard “on”
Option “XkbLayout” “gb”
Option “XkbModel” “microsoftpro”
Option “XkbVariant” “basic”
EndSection


This isn’t correct since the keyboard is a Logitech cordless keyboard;
don’t know what valid options are available for this.

My 13.1 doesn’t have the file. My 13.2 test system (under vmplayer) has
this:


....
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "es"
Option "XkbModel" "pc105"
Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

I don’t know what program creates it.

Another place for configuration is via login as the user that runs the
“kdm” process, which might be “kdm” itself. You may have to create a
passwrod for it, temporarily, login, change the keyboard, and restart
the service to try. Just a wild idea.


Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 “Bottle” at Telcontar)

I need a GB keyboard configuration. Does anybody know what KDM uses a source for the keyboard mapping?

In “/etc/sysconfig/keyboard” have the following:

KEYTABLE=""

This suggests US layout, tried setting it to “gb” had no affect.

Also in file have:

YAST_KEYBOARD="english-uk,pc104"

Previous question still stands, what does KDM use as source for the keyboard mapping information?

Run YaST->Hardware->System Keyboard Layout, select the GB layout (maybe click on a different one first). Is the layout ok then? (it gets changed immediately for the running X session, even without clicking on OK.

If yes, the mapping is fine. And I don’t see why it shouldn’t be.
In this case, check whether you maybe have a different keyboard layout setting file in /etc/X11/xorg.conf.d/, earlier openSUSE versions used 99-keyboard.conf.

But I do remember a bug with some Logitech keyboards in particular, that caused a switch to US for the login screen regardless of the configuration.
I don’t think this was ever resolved…

Btw, setting the keyboard layout for the “kdm” user will definitely not work.

But I would try switching to a different layout in YaST, click OK to save it, and then switch to GB again.

This is not used at all any more in 13.2. The keyboard layout is set in /etc/vconsole.conf.

Previous question still stands, what does KDM use as source for the keyboard mapping information?

KDM does not use any “keyboard mapping information”.
It just uses the keyboard layout that’s configured for X, normally in /etc/X11/xorg.conf.d/00-keyboard.conf (but it can be configured in any other xorg.conf(.d) file as well.
Btw, /etc/X11/xorg.conf.d/00-keyboard.conf is created automatically (by the xdm start script) according to the setting in /etc/vconsole.conf.

vconsole contains a single line:

KEYMAP=uk

In the 00-keyboard.conf how is the following option derived:

Option "XkbModel" "microsoftpro"

That’s ok as expected, since the 00-keyboard.conf is actually generated with the correct values.

In the 00-keyboard.conf how is the following option derived:

Option "XkbModel" "microsoftpro"

That file is generated by “localectl”. I don’t know what this does exactly.
As mentioned already this is done by the xdm startup script, which just calls “localectl set-x11-keymap $i” with the value from /etc/vconsole.conf, i.e. ‘uk’ in your case.

See “man localectl” for its options.
“localectl list-x11-keymap-models” will print a list of available models, if you want to try to change the model in 00-keyboard.conf (the file will only get regenerated if you change the setting in /etc/vconsole.conf IIANM).
But again, this should not matter at all for the general keyboard layout.

Have you tried whether changing the layout in YaST will produce the correct result?
You could run “setxkbmap gb” in /etc/X11/xdm/Xsetup then as a workaround.

I have played about with the yast keyboard configuration with no success; the available keyboard configuration options in 13.2 do not match the googled yast documentation; the 13.2 keyboard configuration is more restricted than the documentation suggests (e.g. where has selection of keyboard model gone?).

In “/etc/X11/xorg.conf.d” created a 90-keyboard.conf containing the following:


Section "InputClass"
        Identifier "logitech cordless desktop"
        MatchIsKeyboard "on"
        Option "XkbLayout" "gb"
        Option "XkbModel" "logicd"
        Option "XkbVariant" "basic"
EndSection

The XkbModel is derived from “/usr/share/X11/xkb/rules”; this also had no affect.

When the Yast=>Hardware=>System Keyboard Layout is changed, I get the impression (machine goes off for several seconds) keyboard type is being probed; based on what gets put into 00-keyboard.conf it’s deriving the wrong keyboard type.

With respect to the logitech cordless keyboard, the following is the USB information:

Bus 005 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x046d Logitech, Inc.
  idProduct          0xc52b Unifying Receiver
  bcdDevice           12.01
  iManufacturer           1 Logitech
  iProduct                2 USB Receiver
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           84
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          4 RQR12.01_B0019
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      59
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     148
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      98
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               2
Device Status:     0x0000
  (Bus Powered)

Don’t create a 90-keyboard.conf. 00-keyboard.conf will override it anyway I think.
Edit 00-keyboard.conf instead. Or create one that is alphabetically before 00-keyboard.conf, e.g. 00-alpha-keyboard.conf.
See also “man xorg.conf”.
But I haven’t quickly found now in which order the files are respected there.

When the Yast=>Hardware=>System Keyboard Layout is changed, I get the impression (machine goes off for several seconds) keyboard type is being probed; based on what gets put into 00-keyboard.conf it’s deriving the wrong keyboard type.

As I said before, the keyboard model should not matter anyway.

Have you tried to add a “setxkbmap gb” to /etc/X11/xdm/Xsetup as I suggested?
This should at least be a workaround.

As earlier poster pointed out, looks like a bug related to the logitech cordless keyboard, googling about there are people having problems on various linux distro and MAC.