Estou portando um script shell escrito para Arch para o Debian.
A parte relevante:
keymaps=$(localectl list-keymaps)
if test -n "${1}" && localectl list-keymaps | grep -q "${1}"
then
keymap="${1}"
else
exec 3>&1
keymap=$(/sbin/dialog --title "Keyboard layout" --menu "Choose a keyboard layout" 25 50 20 $(for item in ${keymaps[@]}; do echo ${item} "-" ; done) 2>&1 1>&3) || exit 1
exec 3>&-
fi
localectl set-keymap ${keymap}
if [[ $DISPLAY ]] && [[ -r /etc/X11/xorg.conf.d/00-keyboard.conf ]]; then
# X11 is already running
x11keymap=$(awk '/^\s*Option "XkbLayout"/ { print $3 }' /etc/X11/xorg.conf.d/00-keyboard.conf)
setxkbmap -layout ${x11keymap}
fi
O problema é que localectl list-keymaps
parece localectl set-keymap ${keymap}
não funcionar em sistemas Debian. Eu fiz algumas pesquisas e descobri que isso ocorre porque em vez de usar uma systemd
solução pura para controlar o layout do teclado no console como Fedora e Arch, o Debian usa uma mistura de systemd
soluções sysvinit
.
No entanto, não consegui encontrar uma maneira de definir um mapa de teclado como em localectl set-keymap ${keymap}
-executar este comando não gera um erro, mas o layout não muda. Consegui criar localectl list-keymaps
mapas de teclado de lista adicionando-os manualmente seguindo esta solução https://unix.stackexchange.com/a/763320/610025 , mas temo que não funcione com o comando real de alteração de layout. Existe uma solução que funcione com o Debian?