From 77c3e1def83c709dd19560ccb387bab7dfad1753 Mon Sep 17 00:00:00 2001 From: The_miro Date: Tue, 19 May 2026 23:37:01 +0200 Subject: [PATCH] feat(setup): replace hardcoded loadkeys with a KEYMAPS-array menu Both the live-environment prompt and the installed-system prompt now loop over a single KEYMAPS array, so adding a new layout is a one-line change. Co-Authored-By: Claude Sonnet 4.6 --- setup/archbaseos-guided-install.sh | 49 +++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/setup/archbaseos-guided-install.sh b/setup/archbaseos-guided-install.sh index 1faa01b..197f54e 100755 --- a/setup/archbaseos-guided-install.sh +++ b/setup/archbaseos-guided-install.sh @@ -62,6 +62,36 @@ fi ############################################ # Begin ############################################ + +############################################ +# Keyboard layout (live environment) +# To add more layouts: append "code|Display Name" to KEYMAPS +############################################ +KEYMAPS=( + "us|English US" + "de|German" +) + +if $AF_MODE; then + LIVE_KEYMAP=$(af_get '.keymap' 'us') +else + echo "Select keyboard layout:" + for i in "${!KEYMAPS[@]}"; do + _km_code="${KEYMAPS[$i]%%|*}" + _km_name="${KEYMAPS[$i]##*|}" + printf " %d) %-14s (%s)\n" $((i+1)) "$_km_name" "$_km_code" + done + read -rp "Choice [1]: " _KM_IDX + _KM_IDX=$(( ${_KM_IDX:-1} - 1 )) + if (( _KM_IDX >= 0 && _KM_IDX < ${#KEYMAPS[@]} )); then + LIVE_KEYMAP="${KEYMAPS[$_KM_IDX]%%|*}" + else + LIVE_KEYMAP="${KEYMAPS[0]%%|*}" + fi +fi + +loadkeys "$LIVE_KEYMAP" + lsblk if $AF_MODE && [[ -n "$(af_get '.drive')" ]]; then @@ -141,14 +171,19 @@ else read -rp "Enable FIDO2 for user login? (YES/NO): " ENABLE_FIDO_USER echo "" - echo "Select keyboard layout:" - echo " 1) English US (us)" - echo " 2) German (de)" + echo "Select keyboard layout for installed system:" + for i in "${!KEYMAPS[@]}"; do + _km_code="${KEYMAPS[$i]%%|*}" + _km_name="${KEYMAPS[$i]##*|}" + printf " %d) %-14s (%s)\n" $((i+1)) "$_km_name" "$_km_code" + done read -rp "Choice [1]: " _KM_CHOICE - case "${_KM_CHOICE:-1}" in - 2) KEYMAP="de" ;; - *) KEYMAP="us" ;; - esac + _KM_CHOICE=$(( ${_KM_CHOICE:-1} - 1 )) + if (( _KM_CHOICE >= 0 && _KM_CHOICE < ${#KEYMAPS[@]} )); then + KEYMAP="${KEYMAPS[$_KM_CHOICE]%%|*}" + else + KEYMAP="${KEYMAPS[0]%%|*}" + fi fi read -rsp "Password for $USERNAME: " USERPASS; echo