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 <noreply@anthropic.com>
main
The_miro 2026-05-19 23:37:01 +02:00
parent 58de8fac1b
commit 77c3e1def8
1 changed files with 42 additions and 7 deletions

View File

@ -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