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.
master
Mathieu Othacehe 2018-12-05 21:53:40 +09:00 committed by Ludovic Courtès
parent 7d812901da
commit 479414e1c9
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 18 additions and 12 deletions

View File

@ -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"))
"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"))
(call-with-output-file keymap-file
(lambda (port)
(format port model)
(put-u8 port 0)
;; 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 layout)
(put-u8 port 0)
(format port variant)
(put-u8 port 0)))))
(format port variant)
(put-u8 port 0))))))