X-Git-Url: https://git.madduck.net/etc/xsession.git/blobdiff_plain/4c7068183f08a6d7153a6ac85bc9221deb49b449..085bf505447f79db478e369229bceacdbd317a85:/.xsession.d/01-xkb?ds=inline diff --git a/.xsession.d/01-xkb b/.xsession.d/01-xkb index 7ff8667..0e50c36 100644 --- a/.xsession.d/01-xkb +++ b/.xsession.d/01-xkb @@ -1,5 +1,41 @@ # load the keyboard definitions -# DISABLED in favour of 01-xmodmap for now, until -# http://lists.freedesktop.org/archives/xorg/2008-June/036340.html -# is answered -#xkbcomp $HOME/.xkb ${DISPLAY%%.*} + +LAYOUT=us +OPTS=(madduck:mode_switch madduck:group2_intl madduck:caps_mod4) + +is_thinkpad() { + case "${(%):-%m}" in + lapse) return 0;; + *) return 1;; + esac +} + +load_keymap() { + local xkbdir; xkbdir=$HOME/.xkb + local model; model="$1"; shift + local layout; layout="$1"; shift + + local args; args="-I -I$xkbdir -model $model -layout $layout -option" + args="$args -option ${(j: -option :)@}" + + info "running setxkbmap with args: $args" + local tmpfile; tmpfile="$(tempfile -p kbmap)" + trap "rm -f $tmpfile" EXIT + eval setxkbmap $args -print >| "$tmpfile" + info keymap setting follows: + cat "$tmpfile" >&2 + xkbcomp -I$HOME/.xkb "$tmpfile" ${DISPLAY%%.*} +} + +if is_thinkpad; then + info "loading keymap for thinkpad…" + load_keymap thinkpad us ${(z)OPTS} +else + info "loading pc104 keymap…" + load_keymap pc104 us ${(z)OPTS} +fi + +unset OPTS +unset LAYOUT + +# vim:ft=zsh