From 479414e1c9e13ddce9e0c8741eb9f50dff62e333 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Wed, 5 Dec 2018 21:53:40 +0900 Subject: installer: keymap: Do not fail on non-kmscon terminals. kmscon-update-keymap fails on non kmscon terminals because KEYMAP_UPDATE environment variable is not defined. As it is convenient to test the installer on a regular terminal, do nothing if KEYMAP_UPDATE is missing. * gnu/installer/keymap.scm (kmscon-update-keymap): Do nothing if KEYMAP_UPDATE is not defined. --- gnu/installer/keymap.scm | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/gnu/installer/keymap.scm b/gnu/installer/keymap.scm index d9f8656855..d66b376d9c 100644 --- a/gnu/installer/keymap.scm +++ b/gnu/installer/keymap.scm @@ -149,18 +149,24 @@ Configuration Database, describing possible XKB configurations." (values models layouts))))) (define (kmscon-update-keymap model layout variant) - (let ((keymap-file (getenv "KEYMAP_UPDATE"))) - (unless (and keymap-file - (file-exists? keymap-file)) - (error "Unable to locate keymap update file")) - - (call-with-output-file keymap-file - (lambda (port) - (format port model) - (put-u8 port 0) - - (format port layout) - (put-u8 port 0) - - (format port variant) - (put-u8 port 0))))) + "Update kmscon keymap with the provided MODEL, LAYOUT and VARIANT." + (and=> + (getenv "KEYMAP_UPDATE") + (lambda (keymap-file) + (unless (file-exists? keymap-file) + (error "Unable to locate keymap update file")) + + ;; See file gnu/packages/patches/kmscon-runtime-keymap-switch.patch. + ;; This dirty hack makes possible to update kmscon keymap at runtime by + ;; writing an X11 keyboard model, layout and variant to a named pipe + ;; referred by KEYMAP_UPDATE environment variable. + (call-with-output-file keymap-file + (lambda (port) + (format port model) + (put-u8 port 0) + + (format port layout) + (put-u8 port 0) + + (format port variant) + (put-u8 port 0)))))) -- cgit v1.2.3