diff --git a/001_swap-caps.sh b/001_swap-caps.sh old mode 100755 new mode 100644 index 5f0c26d..64bf533 --- a/001_swap-caps.sh +++ b/001_swap-caps.sh @@ -1,79 +1,37 @@ -#!/usr/bin/env zsh +#!/bin/bash -# https://thesynack.com/posts/persistent-capslock-behavior/ +# Default destination directory if not provided 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 </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 </dev/null -#!/usr/bin/env bash +#!/bin/bash setxkbmap -model pc104 -layout gb,us -option caps:swapecape EOF +# Make the script executable 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. - - +# Keyboard configuration adjustments config_file="/etc/default/keyboard" - typeset -A rules - rules=( - "XKBMODEL" "pc105" - "XKBLAYOUT" "extd" - "XKBVARIANT" "" - "XKBOPTIONS" "caps:swapescape" - "BACKSPACE" "guess" - ) +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 +for rule in "${rules[@]}"; do + regex="s/^#\?\(${rule}\s*\).*$/\1=${rules[$rule]}/" + sudo sed -i "${regex}" ${config_file} +done +# Trigger udevadm to apply changes sudo udevadm trigger --subsystem-match=input --action=change - -#cat < /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." diff --git a/001_swap-caps.zsh b/001_swap-caps.zsh new file mode 100755 index 0000000..5f0c26d --- /dev/null +++ b/001_swap-caps.zsh @@ -0,0 +1,79 @@ +#!/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 </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 </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 < /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."