Login screen doesn't show a keyboard layout switcher, prevents users from inputting passwords with a non-default character set
Affected version
- Fedora 38 Beta
-
gnome-shell-44~rc-1.fc38.x86_64
,gnome-control-center-44~rc-1.fc38.x86_64
,gdm-43.0-7.fc38.x86_64
Bug summary
The login screen doesn't show a keyboard layout switcher, even if there are multiple keyboard layouts configured post-installation. That means that if a user has some special characters in their password which can't be typed with the default system keyboard layout, he/she can't log in.
A part of this problem seem to be that Settings doesn't allow to configure keyboard layouts separately for the user session and for the login screen (that is different e.g. from the Region & Language tab, where you can distinguish those two). All keyboard settings seem to affect the current session only.
Steps to reproduce
- Add more keyboard layouts in Settings -> Keyboard. In my case, I had English US as the default, and added Czech QWERTY as secondary. Notice that you can't say whether this applies to your session or the login screen.
- Create a second user in Settings -> Users. Using your secondary keymap, create some password using non-default character set, for example "liškaryška".
- Log out your primary user, and try to log in with your second user. See that you can't, because you don't have a keymap selector, and so you can only input English characters, you can't input "liškaryška".
What happened
Keyboard layouts can't be configured for the login screen.
What did you expect to happen
Settings -> Keyboard should have a section for configuring the login screen as well.
Alternatively, the login screen should automatically show all keymaps which the selected user has configured inside his/her session.
Please note: The login screen does show the keyboard layout switcher if you install the OS with several keymaps configured in the installer. However, again, there seems to be no way of adjusting it after installation, so if you add a new keymap for a particular user, that user won't be able to use it on the login screen.