mirror of
https://github.com/systemd/systemd
synced 2024-07-08 20:15:55 +00:00
vconsole: support KEYMAP=kernel for preserving kernel keymap
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
This commit is contained in:
parent
fa8216e206
commit
ef7f5baae8
|
@ -75,9 +75,10 @@
|
|||
<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>
|
||||
|
|
|
@ -947,6 +947,11 @@ nspawn_locale = get_option('nspawn-locale')
|
|||
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')
|
||||
|
|
|
@ -281,7 +281,7 @@ static int keyboard_load_and_wait(const char *vc, Context *c, bool utf8) {
|
|||
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;
|
||||
|
|
Loading…
Reference in New Issue
Block a user