42 lines
753 B
Plaintext
42 lines
753 B
Plaintext
|
#!/bin/sh
|
||
|
#
|
||
|
# Usage: setxkbmap-toggle layout[:variant] [layout[:variant]]...
|
||
|
|
||
|
layout=`setxkbmap -query | sed -n "s/^layout:\s\+//p"`
|
||
|
variant=`setxkbmap -query | sed -n "s/^variant:\s\+//p"`
|
||
|
|
||
|
|
||
|
[ "$variant" = "" ] && CURRENT="$layout" || CURRENT="$layout:$variant"
|
||
|
|
||
|
next=$1
|
||
|
|
||
|
while [ $# -gt 0 ]
|
||
|
do
|
||
|
keymap=$1
|
||
|
shift
|
||
|
|
||
|
if [ "$keymap" = "$CURRENT" ]
|
||
|
then
|
||
|
if [ $# -gt 0 ]
|
||
|
then
|
||
|
next=$1
|
||
|
shift
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
echo "$next" | grep ":" >/dev/null
|
||
|
if [ $? -eq 0 ]
|
||
|
then
|
||
|
layout=`echo $next | cut -f1 -d:`
|
||
|
variant=`echo $next | cut -f2 -d:`
|
||
|
else
|
||
|
layout=$next
|
||
|
variant=""
|
||
|
fi
|
||
|
|
||
|
setxkbmap "$layout" "$variant"
|
||
|
|
||
|
[ "$variant" = "" ] && CURRENT="$layout" || CURRENT="$layout:$variant"
|
||
|
echo $CURRENT
|