#!/usr/bin/env zsh

# https://thesynack.com/posts/persistent-capslock-behavior/
DEST=${1:-/etc/skel}
# xmodmap
#cat > ~/.Xmodmap << 'EOF'
#! Swap caps lock and escape
#remove Lock = Caps_Lock
#keysym Escape = Caps_Lock
#keysym Caps_Lock = Escape
#add Lock = Caps_Lock
#EOF
#
#xmodmap ~/.Xmodmap

#cat <<EOF | sudo tee ${HOME}/.config/autostart/xmodmap.desktop >/dev/null
#[Desktop Entry]
#Name=Xmodmap
#Exec=/usr/bin/xmodmap ${HOME}/.Xmodmap
#Terminal=false
#Type=Application
#X-GNOME-Autostart-enabled=true
#EOF
#
#chmod +x ~/.config/autostart/xmodmap.desktop

# Console tty
#cat <<EOF | sudo loadkeys
#keycode 1 = Caps_Lock
#keycode 58 = Escape
#EOF

#setxkbmap -model pc104 -layout gb,us -variant ,dvorak -option caps:swapecape
mkdir -p ${DEST}/.xinitrc.d
cat <<EOF | sudo tee ${DEST}/.xinitrc.d/setxkbmap.sh >/dev/null
#!/usr/bin/env bash

setxkbmap -model pc104 -layout gb,us -option caps:swapecape
EOF

chmod +x ${DEST}/.xinitrc.d/setxkbmap.sh

# default keyboard layout is described in /etc/default/keyboard and it is shared between X and the console.

# FIXME:man keyboard says to use VARIABLE=VALUE not the space separated below.


config_file="/etc/default/keyboard"

		typeset -A rules
		rules=( 
		"XKBMODEL" "pc105"
		"XKBLAYOUT" "extd"
		"XKBVARIANT" ""
		"XKBOPTIONS" "caps:swapescape"
	        "BACKSPACE" "guess"	
		)

		for rule in "${(@k)rules}"; do
		        regex="s/^#\?\(${rule}\s*\).*$/\1 ${rules[${rule}]}/"
		#	regex="s/^#\?\(${rule}\s*\).*$/\1=${rules[${rule}]}/"
		        sudo sed -i "${regex}" ${config_file};
		done

sudo udevadm trigger --subsystem-match=input --action=change

#cat <<EOF | sudo tee /etc/X11/xorg.conf.d/00-keyboard.conf > /dev/null
#Section "InputClass"
#        Identifier "system-keyboard"
#        MatchIsKeyboard "on"
#        Option "XkbLayout" "gb,us"
#        Option "XkbModel" "pc104"
#        Option "XkbVariant" ""
#        Option "XkbOptions" "caps:swapescape"
#EndSection
#EOF


#echo "enlightenment desktop settings-input-keyboard allowd swapping esc with caps."
