-if ! [ -r /etc/sysconfig/keyboard ] ; then
- [ -r $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap || setxkbmap us
-else
- . /etc/sysconfig/keyboard
- if [ "$XKEYBOARD" = "us" ] ; then
- [ -r $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap
- else
- if [ -n "$XKEYMODEL" ] ; then
- setxkbmap -model "$XKEYMODEL" -layout "$XKEYBOARD"
- else
- setxkbmap "$XKEYBOARD"
- fi
- fi
+apply_xmodmap_settings() {
+ if [ -r "${HOME}"/.Xmodmap ] ; then
+ xmodmap "${HOME}"/.Xmodmap || setxkbmap us
+ else
+ setxkbmap us
+ fi
+}
+
+if [ -r /etc/default/keyboard ] ; then # Grml >=2018.12
+ XKBLAYOUT="us" # assume as default
+
+ . /etc/default/keyboard
+
+ if [ "${XKBLAYOUT}" = "us" ] ; then
+ apply_xmodmap_settings
+ else
+ if [ -n "${XKBMODEL}" ] && [ -n "${XKBVARIANT}" ] ; then
+ setxkbmap -model "${XKEYMODEL}" -variant "${XKBVARIANT}" -layout "${XKBLAYOUT}"
+ elif [ -n "${XKBMODEL}" ] ; then
+ setxkbmap -model "${XKEYMODEL}" -layout "${XKBLAYOUT}"
+ elif [ -n "${XKBVARIANT}" ] ; then
+ setxkbmap -variant "${XKBVARIANT}" -layout "${XKBLAYOUT}"
+ else
+ setxkbmap "${XKBLAYOUT}"
+ fi
+ fi
+elif [ -r /etc/sysconfig/keyboard ] ; then # older Grml releases
+ . /etc/sysconfig/keyboard
+ if [ "${XKEYBOARD}" = "us" ] ; then
+ apply_xmodmap_settings
+ else
+ if [ -n "${XKEYMODEL}" ] ; then
+ setxkbmap -model "${XKEYMODEL}" -layout "${XKEYBOARD}"
+ else
+ setxkbmap "${XKEYBOARD}"
+ fi
+ fi
+else # last ressort fallback
+ apply_xmodmap_settings