#!/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