#!/bin/bash # loadkeys dialog menu maps=() tempfile=/tmp/user_keymap shopt -s extglob shopt -s globstar for file in /usr/share/kbd/keymaps/i386/!(include)/**; do [[ ! $file =~ \.map\.gz ]] && continue [[ $file =~ defkeymap ]] && continue name=${file##*/} name=${name%%.*} maps+=("$name") done maps=($(printf '%s\n' "${maps[@]}"|sort)) maps=($(printf '%s\n\010\n' "${maps[@]}")) rows=$(tput lines) let rows-=5 dialog --clear --default-item 'us' --title 'Select Keyboard Layout' \ --menu '' $rows 0 $rows ${maps[@]} 2> $tempfile clear if [[ $? -eq 0 ]]; then loadkeys $(<$tempfile) fi