summaryrefslogtreecommitdiff
path: root/users/ericgebhart/switch-kbd
diff options
context:
space:
mode:
Diffstat (limited to 'users/ericgebhart/switch-kbd')
-rwxr-xr-xusers/ericgebhart/switch-kbd74
1 files changed, 74 insertions, 0 deletions
diff --git a/users/ericgebhart/switch-kbd b/users/ericgebhart/switch-kbd
new file mode 100755
index 0000000000..4401967a0f
--- /dev/null
+++ b/users/ericgebhart/switch-kbd
@@ -0,0 +1,74 @@
+#!/usr/bin/env zsh
+
+# Switch the keyboard to en-us by default, bepo, or en-dvorak.
+
+help(){
+ print 'switch-kbd - helper for setxkbmap'
+ print ' '
+ print 'Change the keyboard to en-us, fr-bepo, or en-dvorak.'
+ print 'Uses setxkbmap, so the change only affects the current'
+ print 'session. This mainly to avoid using a toggle key.'
+ print ' '
+ print ' -b Bepo'
+ print ' -d Dvorak'
+ print ' -n do not execute'
+ print ' -h help text.'
+ print ' '
+ print ' The default is to set the keyboard to en-us.'
+ exit
+}
+
+layout="-layout us"
+variant=""
+let "execute = 1"
+let "verose = 0"
+
+# $opt will hold the current option
+local opt
+while getopts bdnvh opt; do
+ # loop continues till options finished
+ # see which pattern $opt matches...
+ case $opt in
+ (b)
+ layout="-layout fr"
+ variant="-variant bepo"
+ ;;
+
+ (d)
+ layout="-layout en"
+ variant="-variant dvorak"
+ ;;
+ (n)
+ let "execute = 0"
+ ;;
+ (v)
+ let "verbose = 1"
+ ;;
+ (h)
+ help
+ ;;
+ # matches a question mark
+ # (and nothing else, see text)
+ (\?)
+ print "Bad option:" $*
+ print " "
+ help
+ return 1
+ ;;
+ esac
+done
+(( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
+##print Remaining arguments are: $*
+
+mycommand='setxkbmap '${layout}' '${variant}
+
+if [[ ( $verbose -ne 0 ) ]]; then;
+ print "setxkbmap Command:" $mycommand
+fi
+
+if [[ ( $execute -ne 0 ) ]]
+then;
+ eval $mycommand
+else;
+ print "did not execute"
+fi