Follow-up for #26089 and #28505
Currently, if default-keymap is not empty, there's no way
to ask vconsole-setup to retain the kernel keymap. Let's
accept a special value "kernel" for that purpose.
Addresses the problem mentioned in https://github.com/systemd/systemd/pull/28505#issuecomment-
1663681665
<term><varname>KEYMAP_TOGGLE=</varname></term>
<listitem><para>Configures the key mapping table for the keyboard.
- <varname>KEYMAP=</varname> defaults to <literal>&DEFAULT_KEYMAP;</literal> if not set. The
- <varname>KEYMAP_TOGGLE=</varname> can be used to configure a second toggle keymap and is by
- default unset.</para></listitem>
+ <varname>KEYMAP=</varname> defaults to <literal>&DEFAULT_KEYMAP;</literal> if not set. Specially,
+ if <literal>kernel</literal> is specified, no keymap will be loaded, i.e. the kernel keymap is used.
+ The <varname>KEYMAP_TOGGLE=</varname> can be used to configure a second toggle keymap and is by default
+ unset.</para></listitem>
</varlistentry>
<varlistentry>
conf.set_quoted('SYSTEMD_NSPAWN_LOCALE', nspawn_locale)
default_keymap = get_option('default-keymap')
+if default_keymap == ''
+ # We canonicalize empty keymap to 'kernel', as it makes the default value
+ # in the factory provided /etc/vconsole.conf more obvious.
+ default_keymap = 'kernel'
+endif
conf.set_quoted('SYSTEMD_DEFAULT_KEYMAP', default_keymap)
localegen_path = get_option('localegen-path')
map_toggle = context_get_config(c, VC_KEYMAP_TOGGLE);
/* An empty map means kernel map */
- if (isempty(map))
+ if (isempty(map) || streq(map, "kernel"))
return 0;
args[i++] = KBD_LOADKEYS;