installer: Do not ask for keyboard model.

Suppose that the keyboard model is "pc105".

* gnu/installer.scm (apply-keymap): Remove model ...
* gnu/installer/newt/keymap.scm (run-keymap-page): passed here.
(run-model-page): remove procedure
* gnu/installer/record.scm (installer): Edit keymap-page prototype in comment.
* gnu/installer/keymap.scm (default-keyboard-model): New exported parameter.
This commit is contained in:
Mathieu Othacehe 2018-12-05 14:36:22 +09:00 committed by Ludovic Courtès
parent dc5f3275ec
commit c088b2e47f
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
6 changed files with 21 additions and 50 deletions

View file

@ -133,10 +133,11 @@ (define (compiled-file-loader file name)
result))))
(define apply-keymap
;; Apply the specified keymap.
;; Apply the specified keymap. Use the default keyboard model.
#~(match-lambda
((model layout variant)
(kmscon-update-keymap model layout variant))))
((layout variant)
(kmscon-update-keymap (default-keyboard-model)
layout variant))))
(define* (compute-keymap-step)
"Return a gexp that runs the keymap-page of INSTALLER and install the
@ -150,8 +151,7 @@ (define* (compute-keymap-step)
"/share/X11/xkb/rules/base.xml")))
(lambda (models layouts)
((installer-keymap-page current-installer)
#:models models
#:layouts layouts)))))
layouts)))))
(#$apply-keymap result))))
(define (installer-steps)

View file

@ -46,6 +46,7 @@ (define-module (gnu installer keymap)
x11-keymap-variant-name
x11-keymap-variant-description
default-keyboard-model
xkb-rules->models+layouts
kmscon-update-keymap))
@ -68,6 +69,9 @@ (define-record-type* <x11-keymap-variant>
(name x11-keymap-variant-name) ;string
(description x11-keymap-variant-description)) ;string
;; Assume all modern keyboards have this model.
(define default-keyboard-model (make-parameter "pc105"))
(define (xkb-rules->models+layouts file)
"Parse FILE and return two values, the list of supported X11-KEYMAP-MODEL
and X11-KEYMAP-LAYOUT records. FILE is an XML file from the X Keyboard

View file

@ -68,9 +68,8 @@ (define (welcome-page logo)
(define (menu-page steps)
(run-menu-page steps))
(define* (keymap-page #:key models layouts)
(run-keymap-page #:models models
#:layouts layouts))
(define* (keymap-page layouts)
(run-keymap-page layouts))
(define (network-page)
(run-network-page))

View file

@ -56,42 +56,12 @@ (define (run-variant-page variants variant->text)
(condition
(&installer-step-abort)))))))
(define (run-model-page models model->text)
(let ((title (G_ "Keyboard model selection")))
(run-listbox-selection-page
#:title title
#:info-text (G_ "Please choose your keyboard model.")
#:listbox-items models
#:listbox-item->text model->text
#:listbox-default-item (find (lambda (model)
(string=? (x11-keymap-model-name model)
"pc105"))
models)
#:sort-listbox-items? #f
#:button-text (G_ "Back")
#:button-callback-procedure
(lambda _
(raise
(condition
(&installer-step-abort)))))))
(define* (run-keymap-page #:key models layouts)
"Run a page asking the user to select a keyboard model, layout and
variant. MODELS and LAYOUTS are lists of supported X11-KEYMAP-MODEL and
X11-KEYMAP-LAYOUT. Return a list of three elements, the names of the selected
keyboard model, layout and variant."
(define* (run-keymap-page layouts)
"Run a page asking the user to select a keyboard layout and variant. LAYOUTS
is a list of supported X11-KEYMAP-LAYOUT. Return a list of two elements, the
names of the selected keyboard layout and variant."
(define keymap-steps
(list
(installer-step
(id 'model)
(compute
(lambda _
;; TODO: Understand why (run-model-page models x11-keymap-model-name)
;; fails with: warning: possibly unbound variable
;; `%x11-keymap-model-description-procedure.
(run-model-page models (lambda (model)
(x11-keymap-model-description
model))))))
(installer-step
(id 'layout)
(compute
@ -120,13 +90,11 @@ (define keymap-steps
variant)))))))))
(define (format-result result)
(let ((model (x11-keymap-model-name
(result-step result 'model)))
(layout (x11-keymap-layout-name
(let ((layout (x11-keymap-layout-name
(result-step result 'layout)))
(variant (and=> (result-step result 'variant)
(lambda (variant)
(x11-keymap-variant-name variant)))))
(list model layout (or variant ""))))
(list layout (or variant ""))))
(format-result
(run-installer-steps #:steps keymap-steps)))

View file

@ -143,7 +143,7 @@ (define locale-steps
(installer-step
(id 'territory)
(compute
(lambda (result)
(lambda (result _)
(let ((locales (filter-locales supported-locales result)))
;; Stop the process if the language returned by the previous step
;; is matching one and only one supported locale.
@ -161,7 +161,7 @@ (define locale-steps
(installer-step
(id 'codeset)
(compute
(lambda (result)
(lambda (result _)
(let ((locales (filter-locales supported-locales result)))
;; Same as above but we now have a language and a territory to
;; narrow down the search of a locale.
@ -173,7 +173,7 @@ (define locale-steps
(installer-step
(id 'modifier)
(compute
(lambda (result)
(lambda (result _)
(let ((locales (filter-locales supported-locales result)))
;; Same thing with a language, a territory and a codeset this time.
(break-on-locale-found locales)

View file

@ -57,9 +57,9 @@ (define-record-type* <installer>
(exit installer-exit)
;; procedure (key arguments) -> void
(exit-error installer-exit-error)
;; procedure (#:key models layouts) -> (list model layout variant)
;; procedure void -> void
(final-page installer-final-page)
;; procedure (layouts) -> (list layout variant)
(keymap-page installer-keymap-page)
;; procedure: (#:key supported-locales iso639-languages iso3166-territories)
;; -> glibc-locale