2024-01-26 12:41:40 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
MAP_DIR="${XDG_DATA_HOME}/xkb/compiled"
|
|
|
|
|
|
|
|
rotate() {
|
2024-01-26 12:44:54 +01:00
|
|
|
current="$(readlink keymap)"
|
2024-01-26 12:41:40 +01:00
|
|
|
for f in *; do
|
|
|
|
readlink "$f" >/dev/null && continue
|
|
|
|
[ -z "$first" ] && first=$f
|
|
|
|
[ -n "$found" ] && break
|
|
|
|
[ "$f" = "$current" ] && found=1
|
|
|
|
f=
|
|
|
|
done
|
|
|
|
[ -z "$f" ] && f=$first
|
2024-01-26 12:44:54 +01:00
|
|
|
ln -sf "$f" keymap
|
2023-07-14 17:59:32 +02:00
|
|
|
}
|
|
|
|
|
2024-01-26 12:41:40 +01:00
|
|
|
setmap() {
|
2024-01-26 12:44:54 +01:00
|
|
|
current="$(readlink keymap)"
|
2024-01-26 12:41:40 +01:00
|
|
|
xkbcomp "$current" "$DISPLAY" >/dev/null 2>&1 || return 1
|
|
|
|
xset r rate 300 50
|
|
|
|
xset -q | grep -q "Caps Lock:\s*on" && xdotool key Caps_Lock
|
|
|
|
killall xcape 2>/dev/null
|
|
|
|
xcape -e 'Super_L=Escape'
|
|
|
|
$notifier -h string:x-dunst-stack-tag:"remaps" \
|
|
|
|
" Keymap set" "Layout: $current"
|
2023-07-14 17:59:32 +02:00
|
|
|
}
|
|
|
|
|
2024-01-26 12:41:40 +01:00
|
|
|
cd "$MAP_DIR" || return 1
|
|
|
|
notifier="notify-send"
|
2023-11-13 10:11:34 +01:00
|
|
|
while getopts dqQ flag; do
|
2023-07-14 17:59:32 +02:00
|
|
|
case "$flag" in
|
2024-01-26 12:41:40 +01:00
|
|
|
q) notifier=":" ;;
|
|
|
|
d) setmap; return ;;
|
2023-07-14 17:59:32 +02:00
|
|
|
*) ;;
|
|
|
|
esac
|
|
|
|
done
|
2024-01-26 12:41:40 +01:00
|
|
|
rotate
|
|
|
|
setmap
|