]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
device-manager: Actually fall back to reading from tty if no xkb layout specified
authorRay Strode <rstrode@redhat.com>
Wed, 30 Nov 2022 14:51:17 +0000 (09:51 -0500)
committerRay Strode <rstrode@redhat.com>
Thu, 1 Dec 2022 18:40:30 +0000 (13:40 -0500)
Commit 7fcfcdf2d63025151a160f7948ee7406f0f16843 tried to fall back to
reading from a tty if no xkb layout was specified, but neglected to
actually check if no xkb layout was specified and force fall back to
reading from a tty in that case.

This commit changes device manager to actually disable reading from
/dev/input if the user doesn't specify a layout to use in vconsole.conf.

Closes https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/199

src/libply-splash-core/ply-device-manager.c

index 03fa0f30787610677e7153ed2c917e45aa1de926..7e21bffe36e0878b25c6e2572b91bd46206df435 100644 (file)
@@ -837,16 +837,18 @@ parse_vconsole_conf (ply_device_manager_t *manager)
 
         ply_trace ("XKB_KEYMAP: %s     KEYMAP: %s", xkb_layout, keymap);
 
-        struct xkb_rule_names xkb_keymap = {
-                .layout  = xkb_layout,
-                .model   = xkb_model,
-                .variant = xkb_variant,
-                .options = xkb_options,
-        };
-        manager->xkb_keymap = xkb_keymap_new_from_names (manager->xkb_context, &xkb_keymap, XKB_MAP_COMPILE_NO_FLAGS);
-
-        if (manager->xkb_keymap == NULL) {
-                ply_trace ("Failed to set xkb keymap of LAYOUT: %s MODEL: %s VARIANT: %s OPTIONS: %s", xkb_layout, xkb_model, xkb_variant, xkb_options);
+        if (xkb_layout != NULL) {
+                struct xkb_rule_names xkb_keymap = {
+                        .layout  = xkb_layout,
+                        .model   = xkb_model,
+                        .variant = xkb_variant,
+                        .options = xkb_options,
+                };
+                manager->xkb_keymap = xkb_keymap_new_from_names (manager->xkb_context, &xkb_keymap, XKB_MAP_COMPILE_NO_FLAGS);
+
+                if (manager->xkb_keymap == NULL) {
+                        ply_trace ("Failed to set xkb keymap of LAYOUT: %s MODEL: %s VARIANT: %s OPTIONS: %s", xkb_layout, xkb_model, xkb_variant, xkb_options);
+                }
         }
 
         free (xkb_layout);