Add-to-file in working directory
* People want to source different files depending on distro * The `-a` switch now writes to a local sourceable `rc-file` * You may copy/paste the command from that file to your .rc file
This commit is contained in:
parent
adcbc4986a
commit
516e7bcdd6
|
@ -3,3 +3,5 @@
|
||||||
*_Shortcut.*
|
*_Shortcut.*
|
||||||
* Copy*
|
* Copy*
|
||||||
*_tmp*
|
*_tmp*
|
||||||
|
*rc-file
|
||||||
|
#~ testfil*
|
||||||
|
|
|
@ -67,7 +67,7 @@ SubDirs='all' # (-m) Directory/-ies inside X11 to modify (e.g., 'xkb locale',
|
||||||
InstGTK='no' # (-g) Whether to install the GTK 2.0/3.0 config (if not present)
|
InstGTK='no' # (-g) Whether to install the GTK 2.0/3.0 config (if not present)
|
||||||
NoSudo='no' # (-s) Do not use sudo. Helpful for local dir installation.
|
NoSudo='no' # (-s) Do not use sudo. Helpful for local dir installation.
|
||||||
SetXMap='no' # (-x) Whether to run the setkb script after installing
|
SetXMap='no' # (-x) Whether to run the setkb script after installing
|
||||||
SetXStr='5caw us us' # (--) Shortcut string for setkb - 'kbd loc sym' (model layout eD-variant)
|
SetXStr='5caws us us' # (--) Shortcut string for setkb - 'kbd loc sym' (model layout eD-variant)
|
||||||
## NOTE: '# (-a)' means that the value can be set by option argument '-a <value>'
|
## NOTE: '# (-a)' means that the value can be set by option argument '-a <value>'
|
||||||
|
|
||||||
HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n"\
|
HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n"\
|
||||||
|
@ -85,7 +85,7 @@ HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n
|
||||||
"[-m] <X11 subdir(s) to mod> - ${SubDirs}\n"\
|
"[-m] <X11 subdir(s) to mod> - ${SubDirs}\n"\
|
||||||
"[-t] <mod dir prefix tag> - ${DModTag}\n"\
|
"[-t] <mod dir prefix tag> - ${DModTag}\n"\
|
||||||
"[-g] Install GTK 2.0/3.0 edit config? - ${InstGTK}\n"\
|
"[-g] Install GTK 2.0/3.0 edit config? - ${InstGTK}\n"\
|
||||||
"[-x] Run the setxkbmap script? - ${SetXMap}\n"\
|
"[-x] Run the setkb script afterwards? - ${SetXMap}\n"\
|
||||||
"[-s] Install without using sudo? - ${NoSudo}\n"\
|
"[-s] Install without using sudo? - ${NoSudo}\n"\
|
||||||
"[--] [Setxkb ShortStr <kbd loc sym>] - ${SetXStr}\n"
|
"[--] [Setxkb ShortStr <kbd loc sym>] - ${SetXStr}\n"
|
||||||
#~ "( - <val> : Default settings)\n"
|
#~ "( - <val> : Default settings)\n"
|
||||||
|
|
152
setkb.sh
152
setkb.sh
|
@ -29,28 +29,29 @@ FootStr="Happy xkb-hacking! ~ Øystein 'DreymaR' Bech-Aase"
|
||||||
|
|
||||||
## ---------- init ----------------------------------------------------------------------
|
## ---------- init ----------------------------------------------------------------------
|
||||||
|
|
||||||
#~ MyDATE=`date +"%Y-%m-%d_%H-%M"`
|
MyDATE=`date +"%Y-%m-%d_%H-%M"`
|
||||||
MyNAME=`basename $0`
|
MyNAME=`basename $0`
|
||||||
#~ MyPATH=`dirname $0`
|
MyPATH=`dirname $0`
|
||||||
|
#~ MyPATH=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") # Alone, dirname gives relative paths like `.`
|
||||||
## @@@ The default X11 dir under Debian/Ubuntu/etc is /usr/share/X11 @@@
|
## @@@ The default X11 dir under Debian/Ubuntu/etc is /usr/share/X11 @@@
|
||||||
## @@@ The default X11 dir under some (older) distros is /usr/lib/X11 @@@
|
## @@@ The default X11 dir under some (older) distros is /usr/lib/X11 @@@
|
||||||
X11DIR='/usr/share/X11'; [ -d "${X11DIR}" ] || X11DIR='/usr/lib/X11'
|
X11DIR='/usr/share/X11'; [ -d "${X11DIR}" ] || X11DIR='/usr/lib/X11'
|
||||||
XKBDIR="${X11DIR}/xkb" # The default X11 xkb dir
|
XKBDIR="${X11DIR}/xkb" # The default X11 xkb dir
|
||||||
XKBLOC='./xkb-data_xmod/xkb' # The default local xkb dir in this repo
|
XKBLOC='./xkb-data_xmod/xkb' # The default local xkb dir in this repo
|
||||||
|
|
||||||
#~ XKBmodel=pc104awide # ANSI-104 keyboard w/ Angle(Z)Wide(Quote) mod
|
#~ XKBmodel=pc104awide # ANSI-104 keyboard w/ Angle(Z)Wide(Quote) mod
|
||||||
XKBmodel=pc105awide # ISO-105 keyboard w/ CurlAngleWide(Slash) mod
|
XKBmodel=pc105awide # ISO-105 keyboard w/ CurlAngleWide(Slash) mod
|
||||||
#~ XKBlayout='us(cmk_ed_us),gr(colemak),ru(colemak)' # Multiple layouts
|
#~ XKBlayout='us(cmk_ed_us),gr(colemak),ru(colemak)' # Multiple layouts
|
||||||
XKBlayout='us(cmk_ed_us)' # US English Colemak[eD]'Universal Symbols' layout
|
XKBlayout='us(cmk_ed_us)' # US English Colemak[eD]'Universal Symbols' layout
|
||||||
XKBoption='misc:extend,lv5:caps_switch_lock,grp:shifts_toggle,compose:menu'
|
XKBoption='misc:extend,lv5:caps_switch_lock,grp:shifts_toggle,compose:menu'
|
||||||
Verbosity=9 # (-v) How much info should setxkbmap print out?
|
Verbosity=9 # (-v) How much info should setxkbmap print out?
|
||||||
KeepXKM='no' # (-k) Retain old /var/lib/xkb/server-*.xkm files?
|
KeepXKM='no' # (-k) Retain old /var/lib/xkb/server-*.xkm files?
|
||||||
XRunDir=${XKBDIR} # (-d) The xkb-type dir to run setxkbmap from
|
XRunDir=${XKBDIR} # (-d) The xkb-type dir to run setxkbmap from
|
||||||
AddCmdYN='no' # (-a) Add setxkbmap cmd to file?
|
AddCmdYN='no' # (-a) Add setxkbmap cmd to file?
|
||||||
AddDefault="${HOME}/.bashrc"
|
AddToDef=${MyPATH}/"add-to-rc-file" # "${HOME}/.bashrc" before; there are many options though
|
||||||
AddCmdTo=${AddDefault} # (-f) File (such as '~/.bashrc') to add setxkbmap cmd to
|
AddCmdTo=${AddToDef} # (-f) File (such as '~/.bashrc') to add setxkbmap cmd to
|
||||||
PrntCmd='no' # (-p) Print the setxkbmap command instead of running it?
|
PrntCmd='no' # (-p) Print the setxkbmap command instead of running it?
|
||||||
ArgStr='' #'5caws us us' # (--) Shortcut string for setkb (model locale eD-variant)
|
ArgStr='' #'5caws us us' # (--) Shortcut string for setkb (model locale eD-variant)
|
||||||
## NOTE: '# (-a)' means that the value can be set by option argument '-a <value>'
|
## NOTE: '# (-a)' means that the value can be set by option argument '-a <value>'
|
||||||
|
|
||||||
HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n"\
|
HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n"\
|
||||||
|
@ -64,9 +65,9 @@ HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n
|
||||||
"[-v] <verbose level> - '${Verbosity}'\n"\
|
"[-v] <verbose level> - '${Verbosity}'\n"\
|
||||||
"[-d] Run from <directory> - '${XRunDir}'\n"\
|
"[-d] Run from <directory> - '${XRunDir}'\n"\
|
||||||
"[-k] Keep old XKB server(s) - '${KeepXKM}' [toggle, no arg.]\n"\
|
"[-k] Keep old XKB server(s) - '${KeepXKM}' [toggle, no arg.]\n"\
|
||||||
"[-a] Add cmd line to file? - '${AddCmdYN}' [toggle, no arg.]\n"\
|
"[-a] Add cmd line to file? - '${AddCmdYN}' [toggle]\n"\
|
||||||
"[-f] <file> to add cmd to - '${AddCmdTo}'\n"\
|
"[-f] <file> to add cmd to - '${AddCmdTo}'\n"\
|
||||||
"[-p] Print cmd; don't run it - '${PrntCmd}'\n"\
|
"[-p] Print cmd; don't run it - '${PrntCmd}' [toggle]\n"\
|
||||||
"[--] <ShortStr> - '${ArgStr}'\n"\
|
"[--] <ShortStr> - '${ArgStr}'\n"\
|
||||||
"\nSpecify '-d-' to run from the local repo directory w/o installing.\n"\
|
"\nSpecify '-d-' to run from the local repo directory w/o installing.\n"\
|
||||||
"\n\e[1mShortStr syntax, defining eD model+layout as a short split string:\e[0m\n"\
|
"\n\e[1mShortStr syntax, defining eD model+layout as a short split string:\e[0m\n"\
|
||||||
|
@ -74,7 +75,7 @@ HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n
|
||||||
" <kbd> 4/5 - ANSI-104/ISO-105 keyboard model, then...\n"\
|
" <kbd> 4/5 - ANSI-104/ISO-105 keyboard model, then...\n"\
|
||||||
" n/a/c - Normal/Angle/Curl-DH, and optionally...\n"\
|
" n/a/c - Normal/Angle/Curl-DH, and optionally...\n"\
|
||||||
" w/f - Wide/A-Wing (a.k.a. 'A-Frame'), and...\n"\
|
" w/f - Wide/A-Wing (a.k.a. 'A-Frame'), and...\n"\
|
||||||
" s - Sym (optional)\n"\
|
" s - Sym\n"\
|
||||||
" <loc> Two-letter locale layout code like 'us' for USA, 'gb' for UK etc\n"\
|
" <loc> Two-letter locale layout code like 'us' for USA, 'gb' for UK etc\n"\
|
||||||
" <sym> 'us'/'ks' for 'Universal' or 'Keep Locale' symbol variants\n\n"\
|
" <sym> 'us'/'ks' for 'Universal' or 'Keep Locale' symbol variants\n\n"\
|
||||||
" Examples: '5a se us': Angle-ISO, Swedish Cmk[eD] 'UnifiedSym'\n"\
|
" Examples: '5a se us': Angle-ISO, Swedish Cmk[eD] 'UnifiedSym'\n"\
|
||||||
|
@ -85,37 +86,45 @@ HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n
|
||||||
|
|
||||||
## ---------- functions and line parser -------------------------------------------------
|
## ---------- functions and line parser -------------------------------------------------
|
||||||
|
|
||||||
MyMsg() # Formatted output: last arg is printf 'style[;fgcolor[;bgcolor]]'
|
MyMsg() # Formatted output: last arg is printf 'style[;fgcolor[;bgcolor]]'
|
||||||
{
|
{
|
||||||
# Style: 0-Off, 1-Bold, 4-Underscore, 5-Blink, 7-Reverse, 8-Concealed
|
## Style: 0-Off, 1-Bold, 4-Underscore, 5-Blink, 7-Reverse, 8-Concealed
|
||||||
# Color: (3#/4# FG/BG): 0-Black, 1-Red, 2-Green, 3-Yellow, 4-Blue, 5-Magenta, 6-Cyan, 7-White
|
## Color: (3#/4# FG/BG): 0-Black, 1-Red, 2-Green, 3-Yellow, 4-Blue, 5-Magenta, 6-Cyan, 7-White
|
||||||
printf "\n\e[${3:-1;32;40}m@@@ $1 @@@\e[0m\n$2" # default: Bold green on black
|
printf "\n\e[${3:-1;32;40}m@@@ $1 @@@\e[0m\n$2" # default: Bold green on black
|
||||||
}
|
}
|
||||||
|
|
||||||
MyEcho()
|
MyEcho() # What it says...
|
||||||
{
|
{
|
||||||
printf "$1\n"
|
printf "$1\n"
|
||||||
[ -z "$2" ] || printf "$1\n" >> "$2"
|
[ -z "$2" ] || printf "$1\n" >> "$2"
|
||||||
}
|
}
|
||||||
|
|
||||||
MyPoint()
|
MyPoint() # Bulleted output
|
||||||
{
|
{
|
||||||
MyEcho "\e[1;32m¤ \e[0m$@" # Bold green
|
MyEcho "\e[1;32m¤ \e[0m$@" # Bold green
|
||||||
}
|
}
|
||||||
|
|
||||||
MyWarning()
|
MyWarning() # Blue reverse text
|
||||||
{
|
{
|
||||||
MyMsg "WARNING: ${@:-'Beware of nargles!'}" "\n" '1;36;44' # Bold cyan on blue
|
MyMsg "WARNING: ${@:-'Beware of nargles!'}" "\n" '1;36;44' # Bold cyan on blue
|
||||||
#~ exit 1
|
#~ exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
MyError()
|
MyError() # Red reverse text; crash out
|
||||||
{
|
{
|
||||||
MyMsg "$MyNAME - ERROR: ${@:-'Undefined error'}" "\n" '1;37;41' # Bold white on red
|
MyMsg "$MyNAME - ERROR: ${@:-'Undefined error'}" "\n" '1;37;41' # Bold white on red
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintHelpAndExit()
|
MyCD() # Change dir, keeping track
|
||||||
|
{
|
||||||
|
OldDir=`pwd`
|
||||||
|
NewDir=${1:-`pwd`}
|
||||||
|
cd ${NewDir} \
|
||||||
|
&& MyPoint "Changing dir to '${NewDir}'" || MyError "Change to '${NewDir}' failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
PrintHelpAndExit() # Invoked with `-h`
|
||||||
{
|
{
|
||||||
MyMsg "${HeadStr}" "\n"
|
MyMsg "${HeadStr}" "\n"
|
||||||
printf "${DescStr}\n"
|
printf "${DescStr}\n"
|
||||||
|
@ -124,12 +133,12 @@ PrintHelpAndExit()
|
||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
MyCD()
|
ModLayVar() # WIP: A fn to sort out model/layout/variant
|
||||||
{
|
{
|
||||||
OldDir=`pwd`
|
[[ ${Set} == 'y' ]] && A='' || A="'"
|
||||||
NewDir=${1:-`pwd`}
|
[ -n "$1" ] && StrXKB="-model ${A}${1}${A}" || MyError "ShortStr model not found"
|
||||||
cd ${NewDir} \
|
[ -n "$2" ] && StrXKB="${StrXKB} -layout ${A}${2}${A}"
|
||||||
&& MyPoint "Changing dir to '${NewDir}'" || MyError "Change to '${NewDir}' failed"
|
[ -n "$3" ] && StrXKB="${StrXKB} -variant ${A}${3}${A}"
|
||||||
}
|
}
|
||||||
|
|
||||||
#~ if [ "$#" == 0 ]; then PrintHelpAndExit 2; fi # No args
|
#~ if [ "$#" == 0 ]; then PrintHelpAndExit 2; fi # No args
|
||||||
|
@ -147,13 +156,13 @@ while getopts "m:l:o:v:d:f:pakh?" cmdarg; do
|
||||||
h) PrintHelpAndExit 0 ;;
|
h) PrintHelpAndExit 0 ;;
|
||||||
\?) PrintHelpAndExit 0 ;;
|
\?) PrintHelpAndExit 0 ;;
|
||||||
:) PrintHelpAndExit 1 ;;
|
:) PrintHelpAndExit 1 ;;
|
||||||
# s) ArgStr=($OPTARG) ;; # Split the string
|
# s) ArgStr=($OPTARG) ;; # Split the string
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
shift $(( $OPTIND - 1 )) # Remove already processed args
|
shift $(( $OPTIND - 1 )) # Remove already processed args
|
||||||
[[ "${XRunDir}" == '-' ]] && XRunDir="${XKBLOC}" # Use the default local dir
|
[[ "${XRunDir}" == '-' ]] && XRunDir="${XKBLOC}" # Use the default local dir
|
||||||
|
|
||||||
[[ "$@" == "" ]] || ArgStr=($@) # Split the ShortString, if present
|
[[ "$@" == "" ]] || ArgStr=($@) # Split the ShortString, if present
|
||||||
if [ -n "${ArgStr}" ]; then # Use ShortString notation
|
if [ -n "${ArgStr}" ]; then # Use ShortString notation
|
||||||
ModStr="${ArgStr[0]}"
|
ModStr="${ArgStr[0]}"
|
||||||
KbdStr="${ModStr:0:1}" ; ModStr="${ModStr:1}" # 1st chr = Kbd type: 4/5 for ANSI/ISO
|
KbdStr="${ModStr:0:1}" ; ModStr="${ModStr:1}" # 1st chr = Kbd type: 4/5 for ANSI/ISO
|
||||||
|
@ -185,20 +194,20 @@ if [ -n "${ArgStr}" ]; then # Use ShortString notation
|
||||||
[[ ${DH_Mod} == 'y' ]] && XKBoption+=',misc:cmk_curl_dh' # Curl-DH is an XKB option
|
[[ ${DH_Mod} == 'y' ]] && XKBoption+=',misc:cmk_curl_dh' # Curl-DH is an XKB option
|
||||||
[[ ${SymMod} == 'y' ]] && XKBoption+=",misc:${SymStr}" # Sym mod is an XKB option
|
[[ ${SymMod} == 'y' ]] && XKBoption+=",misc:${SymStr}" # Sym mod is an XKB option
|
||||||
|
|
||||||
if [ -n "${ArgStr[2]}" ]; then # If there are three parts, ...
|
if [ -n "${ArgStr[2]}" ]; then # If there are three parts, ...
|
||||||
case "${ArgStr[2]}" in # ...determine the layout variant.
|
case "${ArgStr[2]}" in # ...determine the layout variant.
|
||||||
us) XKBvar='cmk_ed_us' ;; # Cmk-eD Unified Symbols variant
|
us) XKBvar='cmk_ed_us' ;; # Cmk-eD Unified Symbols variant
|
||||||
ks) XKBvar='cmk_ed_ks' ;; # Cmk-eD Keep Locale Symbols variant
|
ks) XKBvar='cmk_ed_ks' ;; # Cmk-eD Keep Locale Symbols variant
|
||||||
*) XKBvar="${ArgStr[2]}" ;; # Use specified variant
|
*) XKBvar="${ArgStr[2]}" ;; # Use specified variant
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
XKBvar='basic' # Use the default variant for this locale
|
XKBvar='basic' # Use the default variant for this locale
|
||||||
fi
|
fi
|
||||||
if [ -n "${ArgStr[1]}" ]; then # If there are two or more parts, ...
|
if [ -n "${ArgStr[1]}" ]; then # If there are two or more parts, ...
|
||||||
XKBlayout="${ArgStr[1]}($XKBvar)" # ...use the lay(var) string.
|
XKBlayout="${ArgStr[1]}($XKBvar)" # ...use the lay(var) string.
|
||||||
else # Otherwise, use existing layout.
|
else # Otherwise, use existing layout.
|
||||||
[[ XKBlayout=`setxkbmap -query | grep layout | awk '{print $2}'` ]] \
|
[[ XKBlayout=`setxkbmap -query | grep layout | awk '{print $2}'` ]] \
|
||||||
|| XKBlayout='us' # If not found, default to the US locale
|
|| XKBlayout='us' # If not found, default to the US locale
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
## TODO: Also set the right Extend variant option for Curl, when it gets implemented.
|
## TODO: Also set the right Extend variant option for Curl, when it gets implemented.
|
||||||
|
@ -210,10 +219,12 @@ MyMsg "$HeadStr"
|
||||||
if [ -n "${ArgStr}" ]; then
|
if [ -n "${ArgStr}" ]; then
|
||||||
MyPoint "ShortStr model/layout: ${XKBmodel} / ${XKBlayout}"
|
MyPoint "ShortStr model/layout: ${XKBmodel} / ${XKBlayout}"
|
||||||
MyPoint "ShortStr lay. options: Curl(DH) - '${DH_Mod}'; Sym - '${SymMod}'."
|
MyPoint "ShortStr lay. options: Curl(DH) - '${DH_Mod}'; Sym - '${SymMod}'."
|
||||||
MyEcho
|
else
|
||||||
|
MyPoint "No ShortStr; using model/layout: ${XKBmodel} / ${XKBlayout}"
|
||||||
fi
|
fi
|
||||||
|
MyEcho
|
||||||
|
|
||||||
MyCD "${XRunDir%/}" # Change to the xkb dir first
|
MyCD "${XRunDir%/}" # Change to the xkb dir first
|
||||||
|
|
||||||
## Check for root privileges (if not root, needs the sudo command)
|
## Check for root privileges (if not root, needs the sudo command)
|
||||||
DoSudo=''
|
DoSudo=''
|
||||||
|
@ -231,37 +242,44 @@ fi
|
||||||
## Clear the xkb options (to avoid duplicates)
|
## Clear the xkb options (to avoid duplicates)
|
||||||
setxkbmap -option ''
|
setxkbmap -option ''
|
||||||
|
|
||||||
## Run or print out the actual setxkbmap command
|
## Run and/or print out the actual setxkbmap command
|
||||||
[[ ${PrntCmd} == 'yes' ]] && RunPrt='Printing' || RunPrt='Running'
|
[[ ${PrntCmd} == 'yes' ]] && RunPrt='Printing' || RunPrt='Running'
|
||||||
|
# Set='y'
|
||||||
SetXKB="-model ${XKBmodel} -layout ${XKBlayout} -option ${XKBoption}"
|
SetXKB="-model ${XKBmodel} -layout ${XKBlayout} -option ${XKBoption}"
|
||||||
if [ ${XRunDir} == ${XKBDIR} ]; then
|
if [ ${XRunDir} == ${XKBDIR} ]; then
|
||||||
MyPoint "${RunPrt} setxkbmap command with the system XKB dir:\n"
|
MyPoint "${RunPrt} setxkbmap command using the system XKB dir:\n"
|
||||||
OptXKB="-v ${Verbosity}" # Note: Verbosity doesn't work well with -print
|
OptXKB="-v ${Verbosity}" # Note: Verbosity doesn't work well with -print
|
||||||
else
|
else
|
||||||
MyPoint "${RunPrt} setxkbmap command with a local XKB dir:\n" # . is the local dir
|
MyPoint "${RunPrt} setxkbmap command with a local XKB dir:\n" # . is the local dir
|
||||||
OptXKB="-print | xkbcomp -I -I. -I${XKBDIR} $DISPLAY 2>/dev/null" # Wasn't there a hyphen before $DISPLAY?
|
OptXKB="-print | xkbcomp -I -I. -I${XKBDIR} $DISPLAY 2>/dev/null" # Wasn't there a hyphen before $DISPLAY?
|
||||||
fi
|
fi
|
||||||
if [ ${PrntCmd} == 'yes' ]; then
|
MyEcho "> setxkbmap ${SetXKB} ${OptXKB}" #
|
||||||
MyEcho "setxkbmap ${SetXKB} ${OptXKB}"
|
|
||||||
else
|
|
||||||
setxkbmap ${SetXKB} ${OptXKB}
|
|
||||||
fi
|
|
||||||
MyEcho ""
|
MyEcho ""
|
||||||
|
if [ ${PrntCmd} != 'yes' ]; then
|
||||||
## Add the setxkbmap command to a file, if specified. Note the quotes necessary for FileXKB.
|
setxkbmap ${SetXKB} ${OptXKB}
|
||||||
if [ ${AddCmdYN} == 'yes' ] || [ ${AddCmdTo} != ${AddDefault} ]; then
|
MyEcho ""
|
||||||
FileXKB="-model '${XKBmodel}' -layout '${XKBlayout}' -option '${XKBoption}'"
|
|
||||||
MyPoint "Adding setxkbmap cmd to ${AddCmdTo}\n"
|
|
||||||
[ -w ${AddCmdTo} ] || MyError "Writing to '${AddCmdTo}' failed"
|
|
||||||
printf "\n%s\n%s\n%s\n" \
|
|
||||||
"##-> DreymaR's SetXKB.sh: Activate layout" \
|
|
||||||
"setxkbmap ${FileXKB} ${OptXKB}" \
|
|
||||||
"##<- DreymaR's SetXKB.sh" \
|
|
||||||
>> ${AddCmdTo}
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MyCD "${OldDir}"
|
MyCD "${OldDir}"
|
||||||
|
|
||||||
|
## Add the setxkbmap command to a file, if specified. Note the quotes necessary for FileXKB.
|
||||||
|
if [ ${AddCmdYN} == 'yes' ] || [ ${AddCmdTo} != ${AddToDef} ]; then # Changing file name alone works
|
||||||
|
rcFi=${AddCmdTo}
|
||||||
|
# Set='n'
|
||||||
|
FileXKB="-model '${XKBmodel}' -layout '${XKBlayout}' -option '${XKBoption}'"
|
||||||
|
MyPoint "Adding setxkbmap cmd to ${rcFi}\n"
|
||||||
|
# exec 66> ${rcFi} #>&1 #/dev/null # New file descriptor (`ls -l /proc/$$/fd` to list fds) # NOTE: This _will_ create a file, but always empty!!!
|
||||||
|
# MyEcho "Listing file descriptors:\n `ls -l /proc/$$/fd`" # eD DEBUG
|
||||||
|
[ cat >> ${rcFi} ] && [ -w ${rcFi} ] || MyError "Writing to '${rcFi}' failed" # `touch` didn't create a file?
|
||||||
|
printf "\n%s\n%s\n%s\n" \
|
||||||
|
"## --> DreymaR's setkb.sh, ${MyDATE}: Source this command to activate your layout." \
|
||||||
|
"setxkbmap ${FileXKB} ${OptXKB}" \
|
||||||
|
"## <-- DreymaR's setkb.sh" >> ${rcFi}
|
||||||
|
# >>&66 # Redirect to a file descriptor? But we're getting a "#: Bad file descriptor" error.
|
||||||
|
exec 66>&- # Now close the file descriptor (not really necessary?)
|
||||||
|
MyEcho ""
|
||||||
|
fi
|
||||||
|
|
||||||
## When run in a terminal window, wait for a key press
|
## When run in a terminal window, wait for a key press
|
||||||
## so you can see the results before the window closes
|
## so you can see the results before the window closes
|
||||||
#~ MyMsg "Press any key to proceed:"
|
#~ MyMsg "Press any key to proceed:"
|
||||||
|
|
|
@ -40,8 +40,15 @@ FIXD:
|
||||||
|
|
||||||
2FIX:
|
2FIX:
|
||||||
-----
|
-----
|
||||||
|
* No shortstr defaults to the `cmk_ed_us` variant. Should default to current variant, as w/ layout?
|
||||||
|
- Instead of the fancy `setxkbmap -query` stuff, could just not use `-layout` nor `-variant` when empty?!
|
||||||
|
- Unless set by `-l -o` switches?
|
||||||
|
- Or keep setkb as a Cmk-eD setting tool, therefore defaulting to `cmk_ed_us`?
|
||||||
|
|
||||||
|
* Add a switch for resetting options?
|
||||||
|
|
||||||
* WSL1 uses xorg rules. I've only prepared for evdev and base. How to solve that? But xorg -> base by link!
|
* WSL1 uses xorg rules. I've only prepared for evdev and base. How to solve that? But xorg -> base by link!
|
||||||
- Is there another reason, then, that setxkbmap can't see my changes? The files are installed.
|
- Is there another reason, then, that setxkbmap using WSL1 can't see my changes? The files are installed.
|
||||||
|
|
||||||
* Local dir by setkb.sh isn't working?
|
* Local dir by setkb.sh isn't working?
|
||||||
<br>
|
<br>
|
||||||
|
@ -49,8 +56,21 @@ FIXD:
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
-----
|
-----
|
||||||
|
* Not all distros source `~/.bashrc` by default. Seems that `~/.xinitrc` is mostly used by xinit and not generally sourced?
|
||||||
|
- What about `~/.xsession`, `~/.xprofile` or `~/.profile`? Seems to be mostly legacy; used by `startx`? It's messy.
|
||||||
|
- Look in `/etc/X11/Xsession` to see how thing are run at startup?
|
||||||
|
- But `~/.Xresources` seems like a good option (and is sourced by xinitrc too)?
|
||||||
|
- Its format is different though. And it doesn't list keyboard layout as one of its intended purposes.
|
||||||
|
- There is the option of entering the file name manually. But the BigBag default should be the most sensible/common choice.
|
||||||
|
- Or, switch tack completely and just have `setkb.sh` output a string that you can `>` into a file yourself?
|
||||||
|
- If so, have it output nothing else! Or use another file descriptor (stderr is wrong!)? Use `echo <smth> 3>>` then `3> <file>`?
|
||||||
|
- Change tack regarding the -af <file> switches. Could force users to use syntax like `setkb.sh -f > ~/.bashrc`?
|
||||||
|
- Actually... If using file descriptor 3, it usually goes nowhere? So you wouldn't need a switch for it at all!?
|
||||||
|
- Print out the command also when running it, for clarity.
|
||||||
|
|
||||||
* The `pc105curl` model is actually a CurlAngle model, and thus badly named. Fix?!
|
* The `pc105curl` model is actually a CurlAngle model, and thus badly named. Fix?!
|
||||||
- All the Curl models seem messy? What was I thinking? But maybe to avoid the option thing, they could still be useful?
|
- All the Curl models seem messy? What was I thinking? But maybe to avoid the option thing, they could still be useful?
|
||||||
|
- The option thing messes with QWERTY and other layouts on switch. Which may be acceptable for Sym? But not so much for Curl.
|
||||||
|
|
||||||
* Better instructions for Wayland?
|
* Better instructions for Wayland?
|
||||||
- Depends on your Wayland Compositor (Sway is common?)
|
- Depends on your Wayland Compositor (Sway is common?)
|
||||||
|
@ -65,13 +85,6 @@ TODO:
|
||||||
- Would it be "allowable" to actually move both default and dh colemak _into_ the symbols/colemak file now?
|
- Would it be "allowable" to actually move both default and dh colemak _into_ the symbols/colemak file now?
|
||||||
- If so, edit rules components accordingly, and consider editing all locale variants to include them
|
- If so, edit rules components accordingly, and consider editing all locale variants to include them
|
||||||
|
|
||||||
* Not all distros source `~/.bashrc` by default. Seems that `~/.xinitrc` is mostly used by xinit and not generally sourced?
|
|
||||||
- What about `~/.xsession`, `~/.xprofile` or `~/.profile`? Seems to be mostly legacy; used by `startx`? It's messy.
|
|
||||||
- Look in `/etc/X11/Xsession` to see how thing are run at startup?
|
|
||||||
- But `~/.Xresources` seems like a good option (and is sourced by xinitrc too)?
|
|
||||||
- Its format is different though. And it doesn't list keyboard layout as one of its intended purposes.
|
|
||||||
- There is the option of entering the file name manually. But the BigBag default should be the most sensible/common choice.
|
|
||||||
|
|
||||||
* Add some easy way of returning to the old xkbmap setup? But how? Can't unset settings, so we'd have to store it somehow? Or just let them go to us/us?
|
* Add some easy way of returning to the old xkbmap setup? But how? Can't unset settings, so we'd have to store it somehow? Or just let them go to us/us?
|
||||||
- Could write setxkbmap output to a file. Check it isn't overwritten, like the normal backup.
|
- Could write setxkbmap output to a file. Check it isn't overwritten, like the normal backup.
|
||||||
- Make a restore to default layout shortcut instead? It's only an alias for `setkb 4n/5n`. Maybe `resetkb 4/5`?
|
- Make a restore to default layout shortcut instead? It's only an alias for `setkb 4n/5n`. Maybe `resetkb 4/5`?
|
||||||
|
|
Loading…
Reference in New Issue