Sym mod in setkb.sh

* The setkb.sh shortstring can now take full 'caws' ergo mod combos
* The 'pc10#wide' models were renamed to 'pc10#-wide'
* Sym-ISO/ANSI variants were renamed to sym_w-10(4|5)
This commit is contained in:
DreymaR 2023-06-14 16:40:07 +02:00
parent 4b6d14b710
commit 37cba71426
11 changed files with 155 additions and 146 deletions

153
setkb.sh
View File

@ -1,11 +1,10 @@
#!/bin/bash
## ========================================================================================
## ==== SETKB.sh to set the XKB keyboard options ====
## ==== by Øystein "DreymaR" Bech-Aase, 2014- ====
## ========================================================================================
## =================================================================
## === SETKB.sh to set the XKB keyboard options ===
## === by Øystein "DreymaR" Bech-Aase, 2014- ===
## =================================================================
HeadStr="DreymaR's setxkbmap script (by OeBeAa, 2022-10)"
HeadStr="DreymaR's setxkbmap script (by OeBeAa, 2023-06)"
DescStr=\
"\e[1mShell script to change X.org keyboard setup\e[0m\n"\
" using the 'setxkbmap' command.\n"\
@ -20,14 +19,15 @@ FootStr="Happy xkb-hacking! ~ Øystein 'DreymaR' Bech-Aase"
## NOTE: I made a handy shorthand for activating simple Cmk[eD] model/layout combos.
## See the help text of this script for more info on the model-locale-symbols syntax.
## Example: '5w no us' activates model pc105aw-sl, layout no(cmk_ed_us)
## Example: '5aw no us' activates model pc105awide, layout no(cmk_ed_us)
## Models: 4n 4a(pc104angle) 4w(pc104wide) 4aw(pc104awide) 4f(pc104awing)
## 5n 5a(pc105angle) 5w(pc105wide) 5aw(pc105awide)
## - Curl(DH) "models" add a 'c', like this: 4c, 5caw etc
## - Thus, the allowed model short strings are (4|5)(n|a|c|ca)[(w|f)]
## - Curl(DH) "models" add a 'c' in front, like this: 4c, 5caw etc
## - Sym "models" add a 's' at the end, like this: 4cas, 5caws etc
## - Thus, the allowed model short strings are (4|5)(n|a|c|ca)[(w|f)][s]
## XKB options are left out of this: Too complex (e.g., replace or append?)
##-------------- init ------------------------------------------
## ---------- init ----------------------------------------------------------------------
#~ MyDATE=`date +"%Y-%m-%d_%H-%M"`
MyNAME=`basename $0`
@ -35,21 +35,21 @@ MyNAME=`basename $0`
## @@@ The default X11 dir under Debian/Ubuntu/etc is /usr/share/X11 @@@
## @@@ The default X11 dir under some (older) distros is /usr/lib/X11 @@@
X11DIR='/usr/share/X11'; [ -d "${X11DIR}" ] || X11DIR='/usr/lib/X11'
XKBDIR="${X11DIR}/xkb" # The default X11 xkb dir
XKBLOC="./xkb-data_xmod/xkb" # The default local xkb dir in this repo
XKBDIR="${X11DIR}/xkb" # The default X11 xkb dir
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=pc105awide # ISO-105 keyboard w/ CurlAngleWide(Slash) mod
#~ XKBmodel=pc104awide # ANSI-104 keyboard w/ Angle(Z)Wide(Quote) 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)' # 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'
Verbosity=9 # (-v) How much info should setxkbmap print out?
KeepXKM='no' # (-k) Retain old /var/lib/xkb/server-*.xkm files?
XRunDir=${XKBDIR} # (-d) The xkb-type dir to run setxkbmap from
AddCmdYN='no' # (-a) Add setxkbmap cmd to file?
Verbosity=9 # (-v) How much info should setxkbmap print out?
KeepXKM='no' # (-k) Retain old /var/lib/xkb/server-*.xkm files?
XRunDir=${XKBDIR} # (-d) The xkb-type dir to run setxkbmap from
AddCmdYN='no' # (-a) Add setxkbmap cmd to file?
AddDefault="${HOME}/.bashrc"
AddCmdTo=${AddDefault} # (-f) File (such as '~/.bashrc') to add setxkbmap cmd to
SetXStr='' #'5caw us us' # (--) Shortcut string for setkb (model locale eD-variant)
AddCmdTo=${AddDefault} # (-f) File (such as '~/.bashrc') to add setxkbmap cmd to
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>'
HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n"\
@ -65,22 +65,23 @@ HelpStr="\e[1mUsage: bash ${MyNAME} [optional args] [<kbd> [<loc> <sym>]]\e[0m\n
"[-k] Keep old XKB server(s) - '${KeepXKM}' [toggle, no arg.]\n"\
"[-a] Add cmd line to file? - '${AddCmdYN}' [toggle, no arg.]\n"\
"[-f] <file> to add cmd to - '${AddCmdTo}'\n"\
"[--] <ShortStr> - '${SetXStr}'\n"\
"[--] <ShortStr> - '${ArgStr}'\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"\
" <kbd> 4/5 - ANSI-104/ISO-105 keyboard model, then...\n"\
" n/a/c - Normal/Angle/Curl-DH, and optionally...\n"\
" w/f - Wide/A-Wing (a.k.a. 'A-Frame')\n"\
" w/f - Wide/A-Wing (a.k.a. 'A-Frame'), and...\n"\
" s - Sym (optional)\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"\
" Examples: '5a se us': Angle-ISO, Swedish Cmk[eD] 'UnifiedSym'\n"\
" '4ca gb ks': Curl(DH)Angle-ANSI, Eng.(UK) Cmk[eD] 'KeepSym'\n"\
" '5caw': Curl(DH)AngleWide-ISO, keep current layout/variant\n"
" Examples: '5a se us': Angle-ISO, Swedish Cmk[eD] 'UnifiedSym'\n"\
" '4ca gb ks': Curl(DH)Angle-ANSI, Eng.(UK) Cmk[eD] 'KeepSym'\n"\
" '5caws': Curl(DH)AngleWideSym-ISO, keep current layout/variant\n"
#~ " (See the script's comments for more info.)"
##-------------- functions and line parser ---------------------
## ---------- functions and line parser -------------------------------------------------
MyMsg() # Formatted output: last arg is printf 'style[;fgcolor[;bgcolor]]'
{
@ -102,13 +103,13 @@ MyPoint()
MyWarning()
{
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
}
MyError()
{
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
}
@ -129,7 +130,7 @@ MyCD()
&& MyPoint "Changed dir to '${NewDir}'" || MyError "Change to '${NewDir}' failed"
}
#~ if [ "$#" == 0 ]; then PrintHelpAndExit 2; fi # No args
#~ if [ "$#" == 0 ]; then PrintHelpAndExit 2; fi # No args
while getopts "m:l:o:v:d:f:akh?" cmdarg; do
case $cmdarg in
m) XKBmodel="$OPTARG" ;;
@ -143,62 +144,70 @@ while getopts "m:l:o:v:d:f:akh?" cmdarg; do
h) PrintHelpAndExit 0 ;;
\?) PrintHelpAndExit 0 ;;
:) PrintHelpAndExit 1 ;;
# s) SetXStr=($OPTARG) ;; # Split the string
# s) ArgStr=($OPTARG) ;; # Split the string
esac
done
shift $(( $OPTIND - 1 )) # Remove already processed args
[[ "$@" == "" ]] || SetXStr=($@) # Split the ShortString
shift $(( $OPTIND - 1 )) # Remove already processed args
[[ "${XRunDir}" == '-' ]] && XRunDir="${XKBLOC}" # Use the default local dir
[[ "${XRunDir}" == '-' ]] && XRunDir="${XKBLOC}" # Use the default local dir
if [ -n "${SetXStr}" ]; then # Use ShortString notation
case ${SetXStr[0]} in
4n|4c) XKBmodel='pc104' ;; # Generic ANSI-101/104-key
4a|4ca) XKBmodel='pc104angle' ;; # w/ Angle(Z) ergo mod
4w|4cw) XKBmodel='pc104wide' ;; # w/ Wide(Quote) ergo mod
4aw|4caw) XKBmodel='pc104awide' ;; # w/ Angle(Z)Wide(Quote) ergo mod
4f|4af|4cf) XKBmodel='pc104awing' ;; # w/ AngleWing(Quote) ergo mod
5n|5c) XKBmodel='pc105' ;; # Generic ISO-102/105-key
5a|5ca) XKBmodel='pc105angle' ;; # w/ Angle(LSGT) ergo mod
5w|5cw) XKBmodel='pc105wide' ;; # w/ Wide(Slash) ergo mod
5aw|5caw) XKBmodel='pc105awide' ;; # w/ AngleWide(Slash) ergo mod
*) MyError "ShortStr model '${SetXStr[0]}' unknown!" ;;
[[ "$@" == "" ]] || ArgStr=($@) # Split the ShortString, if present
if [ -n "${ArgStr}" ]; then # Use ShortString notation
ModStr="${ArgStr[0]}"
KbdStr="${ModStr:0:1}" ; ModStr="${ModStr:1}" # 1st chr = Kbd type: 4/5 for ANSI/ISO
[[ "${ModStr:0:1}" == 'c' ]] && DH-Mod='y' || DH-Mod='n' # 2nd chr may be 'c' for the Curl mod
[[ ${DH-Mod} == 'y' ]] && ModStr="${ModStr:1}" # (remove the found character)
[[ "${ModStr: -1}" == 's' ]] && SymMod='y' || SymMod='n' # Last chr may be 's' for the Sym mod
if [[ ${SymMod} == 'y' ]]; then
ModStr="${ModStr:: -1}"
if [[ "${ModStr}" =~ 'w' ]]; then # Sort out Sym variants
case "#{KbdStr}" in
4) SymStr='wide-104' ;; # symkeys(sym_w-104)
5) SymStr='wide-105' ;; # symkeys(sym_w-105)
*) MyError "Kbd model 'pc10${KbdStr}' unknown!" ;;
esac
else
SymStr='non-wide' # symkeys(sym_non-w)
fi
SymStr="sym_${SymStr}"
fi
case "${ModStr}" in
n) ModStr='' ;; # Generic pc104(ANSI)/pc105(ISO) kbd
a) ModStr='angle' ;; # w/ Angle ergo mod
w) ModStr='-wide' ;; # w/ Wide ergo mod
aw) ModStr='awide' ;; # w/ AngleWide ergo mod
f|af) ModStr='awing' ;; # w/ AngleWing ergo mod
*) MyError "ShortStr model '${ArgStr[0]}' unknown!" ;;
esac
##case ${SetXStr[0]} in # eD WIP: Check for Sym mods, add as option. Can we do a search for s in the string?
## Need different mod variants (options) for `ws` and non-Wide `s`.
## Can we lop of 4/5 first, and make a model string 'pc10#' based on that, to simplify the above?
## Can we search for c and s separately in the string? The c will be first after 4/5, and s at the end.
if [ -n "${SetXStr[2]}" ]; then # If there are three parts, ...
case ${SetXStr[2]} in # ...determine the layout variant.
us) XKBvar='cmk_ed_us' ;; # Cmk-eD Unified Symbols variant
ks) XKBvar='cmk_ed_ks' ;; # Cmk-eD Keep Locale Symbols variant
*) XKBvar=${SetXStr[2]} ;; # Use specified variant
XKBmodel="pc10${KbdStr}${ModStr}" # Kbd type and Angle/Wide define xkb model
[[ ${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
if [ -n "${ArgStr[2]}" ]; then # If there are three parts, ...
case "${ArgStr[2]}" in # ...determine the layout variant.
us) XKBvar='cmk_ed_us' ;; # Cmk-eD Unified Symbols variant
ks) XKBvar='cmk_ed_ks' ;; # Cmk-eD Keep Locale Symbols variant
*) XKBvar="${ArgStr[2]}" ;; # Use specified variant
esac
else
XKBvar='basic' # Default variant
XKBvar='basic' # Use the default variant for this locale
fi
if [ -n "${SetXStr[1]}" ]; then # If there are two or more parts, ...
XKBlayout="${SetXStr[1]}($XKBvar)" # ...use the lay(var) string.
else # Otherwise, use existing layout.
if [ -n "${ArgStr[1]}" ]; then # If there are two or more parts, ...
XKBlayout="${ArgStr[1]}($XKBvar)" # ...use the lay(var) string.
else # Otherwise, use existing layout.
XKBlayout=`setxkbmap -query | grep layout | awk '{print $2}'`
fi
fi
## TODO: Also set the right Extend variant option for Curl, when it gets implemented.
## NOTE: The code below post processes Curl models into model+option, as per my XKB implementation.
[[ ${SetXStr[0]} =~ "c" ]] && XKBoption+=',misc:cmk_curl_dh'
## [[ ${SetXStr[0]} =~ "s" ]] && XKBoption+=',misc:ed_sym-w' # TODO: Implement Sym, for both Wide and non-Wide configs
##-------------- main ------------------------------------------
## ---------- main ----------------------------------------------------------------------
MyMsg "$HeadStr"
#~ MyCD "${XKBpath%/}/${XRunDir%/}"
if [ -n "${SetXStr}" ]; then
if [ -n "${ArgStr}" ]; then
MyPoint "Using model/layout '$XKBmodel'/'$XKBlayout' from ShortStr"
fi
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)
DoSudo=''
@ -222,7 +231,7 @@ if [ ${XRunDir} == ${XKBDIR} ]; then
MyPoint "Running setxkbmap with the system XKB dir:\n"
OptXKB="-v ${Verbosity}" # Note: Verbosity doesn't work well with -print
else
MyPoint "Running setxkbmap with a local XKB dir:\n" # . is the local dir
MyPoint "Running setxkbmap 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?
fi
setxkbmap $SetXKB $OptXKB
@ -252,10 +261,10 @@ extraEnter='';[[ `ps --no-headers -o comm= $PPID` == 'install-dreymar' ]] || ext
MyMsg "${MyNAME} finished!" ${extraEnter}
exit 0
##-------------- misc ------------------------------------------
## ---------- misc ----------------------------------------------------------------------
#~ MyWarning "'${MyNAME}' debug - exiting!"; exit 0
#~ echo "'$XKBmodel' '$XKBlayout'"; for i in 0 1 2; do echo "'${SetXStr[i]}'"; done; exit 0
#~ echo "'$XKBmodel' '$XKBlayout'"; for i in 0 1 2; do echo "'${ArgStr[i]}'"; done; exit 0
## US/ANSI Wide ergo mod,
## Colemak[eD] US layout,

View File

@ -1026,7 +1026,7 @@ xkb_geometry "pc104angle" {
}; // End of "pc104angle" geometry
// pc104_Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_geometry "pc104wide" {
xkb_geometry "pc104-wide" {
include "pc(pc104)"
description= "Generic 104 - Wide Ergo mod";
@ -1069,11 +1069,11 @@ xkb_geometry "pc104wide" {
};
}; // End of bottom row
}; // End of "Alpha" section
}; // End of "pc104wide" geometry
}; // End of "pc104-wide" geometry
// pc104_Angle(Z)Wide(Quote) ergonomic mod (by DreymaR, 2015)
xkb_geometry "pc104awide" {
include "pc(pc104wide)"
include "pc(pc104-wide)"
description= "Generic 104 - Angle(Z)Wide Ergo mod";
section.left= 19;
@ -1184,7 +1184,7 @@ xkb_geometry "pc105curl" {
}; // End of "pc105curl" geometry
// pc105_Wide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_geometry "pc105wide" {
xkb_geometry "pc105-wide" {
include "pc(pc105)"
description= "Generic 105 - Wide Ergo mod";
@ -1227,11 +1227,11 @@ xkb_geometry "pc105wide" {
};
}; // End of bottom row
}; // End of "Alpha" section
}; // End of "pc105wide" geometry
}; // End of "pc105-wide" geometry
// pc105_AngleWide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_geometry "pc105awide" {
include "pc(pc105wide)"
include "pc(pc105-wide)"
description= "Generic 105 - AngleWide Ergo mod";
section.left= 19;

View File

@ -614,31 +614,31 @@ xkb_keycodes "pc104angle" {
};
// pc104_Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide" {
xkb_keycodes "pc104-wide" {
include "evdev(pc104wide-rightpart)"
include "evdev(pc104wide-midpart)"
include "evdev(pc104-wide-rightpart)"
include "evdev(pc104-wide-midpart)"
augment "evdev(evdev)"
};
// pc104_Angle(Z)Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104awide" {
include "evdev(pc104wide-rightpart)"
include "evdev(pc104wide-midpart)"
include "evdev(pc104-wide-rightpart)"
include "evdev(pc104-wide-midpart)"
augment "evdev(pc104angle)"
};
// pc104_AngleWing(Quote) ergonomic mod (by DreymaR, 2015)
xkb_keycodes "pc104awing" {
include "evdev(pc104wide-rightpart)"
include "evdev(pc104-wide-rightpart)"
include "evdev(pc104awing-leftpart)"
augment "evdev(evdev)"
};
// pc104_Wide partial ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide-midpart" {
xkb_keycodes "pc104-wide-midpart" {
<AE12> = 16; // = < 7
<AD11> = 29; // [ < Y
@ -648,7 +648,7 @@ xkb_keycodes "pc104wide-midpart" {
};
// pc104_Wide partial ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide-rightpart" {
xkb_keycodes "pc104-wide-rightpart" {
<AE07> = 17; // 7 < 8
<AE08> = 18; // 8 < 9
@ -720,12 +720,12 @@ xkb_keycodes "pc105angle" {
// pc105_AngleWide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105awide" {
include "evdev(pc105wide)"
include "evdev(pc105-wide)"
augment "evdev(pc105angle)"
};
// pc105_Wide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105wide" {
xkb_keycodes "pc105-wide" {
<AE12> = 16; // = < 7
<AE07> = 17; // 7 < 8

View File

@ -425,31 +425,31 @@ xkb_keycodes "pc104angle" {
};
// pc104_Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide" {
xkb_keycodes "pc104-wide" {
include "xfree86(pc104wide-rightpart)"
include "xfree86(pc104wide-midpart)"
include "xfree86(pc104-wide-rightpart)"
include "xfree86(pc104-wide-midpart)"
augment "xfree86(xfree86)"
};
// pc104_Angle(Z)Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104awide" {
include "xfree86(pc104wide-rightpart)"
include "xfree86(pc104wide-midpart)"
include "xfree86(pc104-wide-rightpart)"
include "xfree86(pc104-wide-midpart)"
augment "xfree86(pc104angle)"
};
// pc104_AngleWing(Quote) ergonomic mod (by DreymaR, 2015)
xkb_keycodes "pc104awing" {
include "xfree86(pc104wide-rightpart)"
include "xfree86(pc104-wide-rightpart)"
include "xfree86(pc104awing-leftpart)"
augment "xfree86(xfree86)"
};
// pc104_Wide partial ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide-midpart" {
xkb_keycodes "pc104-wide-midpart" {
<AE12> = 16; // = < 7
<AD11> = 29; // [ < Y
@ -459,7 +459,7 @@ xkb_keycodes "pc104wide-midpart" {
};
// pc104_Wide partial ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide-rightpart" {
xkb_keycodes "pc104-wide-rightpart" {
<AE07> = 17; // 7 < 8
<AE08> = 18; // 8 < 9
@ -531,12 +531,12 @@ xkb_keycodes "pc105angle" {
// pc105_AngleWide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105awide" {
include "xfree86(pc105wide)"
include "xfree86(pc105-wide)"
augment "xfree86(pc105angle)"
};
// pc105_Wide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105wide" {
xkb_keycodes "pc105-wide" {
<AE12> = 16; // = < 7
<AE07> = 17; // 7 < 8

View File

@ -15,8 +15,8 @@
// PC models
! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 \
pc104angle pc104wide pc104awide pc104awing \
pc105angle pc105wide pc105awide \
pc104angle pc104-wide pc104awide pc104awing \
pc105angle pc105-wide pc105awide \
pc104curl-z pc104caw-zqu pc104cawing pc105curl pc105caw-sl
// Jolla devices and keyboards
@ -162,14 +162,14 @@
$macs = macintosh
thinkpadz60 = xfree86(thinkpadz60)
pc104angle = xfree86(pc104angle)
pc104wide = xfree86(pc104wide)
pc104-wide = xfree86(pc104-wide)
pc104awide = xfree86(pc104awide)
pc104awing = xfree86(pc104awing)
pc104curl-z = xfree86(pc104curl-z)
pc104caw-zqu = xfree86(pc104caw-zqu)
pc104cawing = xfree86(pc104cawing)
pc105angle = xfree86(pc105angle)
pc105wide = xfree86(pc105wide)
pc105-wide = xfree86(pc105-wide)
pc105awide = xfree86(pc105awide)
pc105curl = xfree86(pc105curl)
pc105caw-sl = xfree86(pc105caw-sl)
@ -1311,8 +1311,8 @@
lv5:lctl_switch_lock_cancel = +level5(lctl_switch_lock_cancel)
parens:swap_brackets = +parens(swap_brackets)
misc:sym_non-wide = +symkeys(cmk_ed_sym_non-w)
misc:sym_wide-iso = +symkeys(cmk_ed_sym_w-iso)
misc:sym_wide-ansi = +symkeys(cmk_ed_sym_w-ansi)
misc:sym_wide-104 = +symkeys(cmk_ed_sym_w-104)
misc:sym_wide-105 = +symkeys(cmk_ed_sym_w-105)
! option = compat

View File

@ -6,10 +6,10 @@
pc104alt Generic 104-key PC with L-shaped Enter key
pc105 Generic 105-key PC
pc104angle Generic 104-key PC Angle(Z) Ergo
pc104wide Generic 104-key PC Wide Ergo
pc104-wide Generic 104-key PC Wide Ergo
pc104awide Generic 104-key PC Angle(Z)Wide Ergo
pc105angle Generic 105-key PC (intl.) Angle Ergo
pc105wide Generic 105-key PC (intl.) Wide Ergo
pc105-wide Generic 105-key PC (intl.) Wide Ergo
pc105awide Generic 105-key PC (intl.) AngleWide Ergo
dell101 Dell 101-key PC
latitude Dell Latitude laptop
@ -1008,8 +1008,8 @@
misc:extend Enable level5 Extend mappings (home position arrows etc)
misc:cmk_curl_dh Colemak Curl(DH) ergo mod
misc:sym_non-wide Sym ergo mod for non-Wide geometry
misc:sym_wide-iso Sym ergo mod for Wide-ISO geometry
misc:sym_wide-ansi Sym ergo mod for Wide-ANSI geometry
misc:sym_wide-104 Sym ergo mod for Wide-ANSI geometry
misc:sym_wide-105 Sym ergo mod for Wide-ISO geometry
shift:both_capslock Both Shift together enable Caps Lock
shift:both_capslock_cancel Both Shift together enable Caps Lock; one Shift key disables it
shift:both_shiftlock Both Shift together enable Shift Lock

View File

@ -54,7 +54,7 @@
</model>
<model>
<configItem>
<name>pc104wide</name>
<name>pc104-wide</name>
<description>Generic 104-key PC (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
@ -75,7 +75,7 @@
</model>
<model>
<configItem>
<name>pc105wide</name>
<name>pc105-wide</name>
<description>Generic 105-key PC (intl.) (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
@ -8277,14 +8277,14 @@
</option>
<option>
<configItem>
<name>misc:sym_wide-iso</name>
<description>Sym ergo mod for Wide-ISO geometry</description>
<name>misc:sym_wide-104</name>
<description>Sym ergo mod for Wide-ANSI geometry</description>
</configItem>
</option>
<option>
<configItem>
<name>misc:sym_wide-ansi</name>
<description>Sym ergo mod for Wide-ANSI geometry</description>
<name>misc:sym_wide-105</name>
<description>Sym ergo mod for Wide-ISO geometry</description>
</configItem>
</option> <!-- <-< DreymaR -->
<option>

View File

@ -15,8 +15,8 @@
// PC models
! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 \
pc104angle pc104wide pc104awide pc104awing \
pc105angle pc105wide pc105awide \
pc104angle pc104-wide pc104awide pc104awing \
pc105angle pc105-wide pc105awide \
pc104curl-z pc104caw-zqu pc104cawing pc105curl pc105caw-sl
// Jolla devices and keyboards
@ -100,14 +100,14 @@
olpc = evdev+olpc(olpc)
olpcm = evdev+olpc(olpcm)
pc104angle = evdev(pc104angle)
pc104wide = evdev(pc104wide)
pc104-wide = evdev(pc104-wide)
pc104awide = evdev(pc104awide)
pc104awing = evdev(pc104awing)
pc104curl-z = evdev(pc104curl-z)
pc104caw-zqu = evdev(pc104caw-zqu)
pc104cawing = evdev(pc104cawing)
pc105angle = evdev(pc105angle)
pc105wide = evdev(pc105wide)
pc105-wide = evdev(pc105-wide)
pc105awide = evdev(pc105awide)
pc105curl = evdev(pc105curl)
pc105caw-sl = evdev(pc105caw-sl)
@ -1198,8 +1198,8 @@
lv5:lctl_switch_lock_cancel = +level5(lctl_switch_lock_cancel)
parens:swap_brackets = +parens(swap_brackets)
misc:sym_non-wide = +symkeys(cmk_ed_sym_non-w)
misc:sym_wide-iso = +symkeys(cmk_ed_sym_w-iso)
misc:sym_wide-ansi = +symkeys(cmk_ed_sym_w-ansi)
misc:sym_wide-104 = +symkeys(cmk_ed_sym_w-104)
misc:sym_wide-105 = +symkeys(cmk_ed_sym_w-105)
! option = compat

View File

@ -6,10 +6,10 @@
pc104alt Generic 104-key PC with L-shaped Enter key
pc105 Generic 105-key PC
pc104angle Generic 104-key PC Angle(Z) Ergo
pc104wide Generic 104-key PC Wide Ergo
pc104-wide Generic 104-key PC Wide Ergo
pc104awide Generic 104-key PC Angle(Z)Wide Ergo
pc105angle Generic 105-key PC (intl.) Angle Ergo
pc105wide Generic 105-key PC (intl.) Wide Ergo
pc105-wide Generic 105-key PC (intl.) Wide Ergo
pc105awide Generic 105-key PC (intl.) AngleWide Ergo
dell101 Dell 101-key PC
latitude Dell Latitude laptop
@ -1008,8 +1008,8 @@
misc:extend Enable level5 Extend mappings (home position arrows etc)
misc:cmk_curl_dh Colemak Curl(DH) ergo mod
misc:sym_non-wide Sym ergo mod for non-Wide geometry
misc:sym_wide-iso Sym ergo mod for Wide-ISO geometry
misc:sym_wide-ansi Sym ergo mod for Wide-ANSI geometry
misc:sym_wide-104 Sym ergo mod for Wide-ANSI geometry
misc:sym_wide-105 Sym ergo mod for Wide-ISO geometry
shift:both_capslock Both Shift together enable Caps Lock
shift:both_capslock_cancel Both Shift together enable Caps Lock; one Shift key disables it
shift:both_shiftlock Both Shift together enable Shift Lock

View File

@ -54,7 +54,7 @@
</model>
<model>
<configItem>
<name>pc104wide</name>
<name>pc104-wide</name>
<description>Generic 104-key PC (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
@ -75,7 +75,7 @@
</model>
<model>
<configItem>
<name>pc105wide</name>
<name>pc105-wide</name>
<description>Generic 105-key PC (intl.) (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
@ -8277,14 +8277,14 @@
</option>
<option>
<configItem>
<name>misc:sym_wide-iso</name>
<description>Sym ergo mod for Wide-ISO geometry</description>
<name>misc:sym_wide-104</name>
<description>Sym ergo mod for Wide-ANSI geometry</description>
</configItem>
</option>
<option>
<configItem>
<name>misc:sym_wide-ansi</name>
<description>Sym ergo mod for Wide-ANSI geometry</description>
<name>misc:sym_wide-105</name>
<description>Sym ergo mod for Wide-ISO geometry</description>
</configItem>
</option> <!-- <-< DreymaR -->
<option>

View File

@ -50,24 +50,9 @@ xkb_symbols "cmk_ed_sym_non-w" {
key <AB10> { [ slash, question, dead_stroke, questiondown ] }; // /? _¿
};
// DreymaR's Sym mod for setups using the Wide-ISO model (without Sym, it has the Slash key on AD12)
partial alphanumeric_keys
xkb_symbols "cmk_ed_sym_w-iso" {
include "symkeys(cmk_ed_commons)"
include "symkeys(cmk_ed_numbers)"
key <AE11> { [ equal, plus, dead_doubleacute, notequal ] }; // =+ _≠
key <AE12> { [ backslash, bar, dead_grave, brokenbar ] }; // \| _¦
key <AD10> { [ apostrophe, quotedbl, dead_acute, U2032 ] }; // '" _
key <AD11> { [ bracketleft, braceleft, aring, Aring ] }; // [{ åÅ
key <AD12> { [ bracketright, braceright, ae, AE ] }; // ]} æÆ
key <AC11> { [ semicolon, colon, dead_diaeresis, ellipsis ] }; // QWE P Cmk ;: ¨…
key <BKSL> { [ slash, question, dead_stroke, questiondown ] }; // /? _¿
key <AB10> { [ minus, underscore, dead_macron, plusminus ] }; // -_ _±
};
// DreymaR's Sym mod for setups using the Wide-ANSI model (without Sym, it has the Quote key on AD12)
partial alphanumeric_keys
xkb_symbols "cmk_ed_sym_w-ans" {
xkb_symbols "cmk_ed_sym_w-104" {
include "symkeys(cmk_ed_commons)"
include "symkeys(cmk_ed_numbers)"
key <AE11> { [ equal, plus, dead_doubleacute, notequal ] }; // =+ _≠
@ -80,6 +65,21 @@ xkb_symbols "cmk_ed_sym_w-ans" {
key <AB10> { [ slash, question, dead_stroke, questiondown ] }; // /? _¿
};
// DreymaR's Sym mod for setups using the Wide-ISO model (without Sym, it has the Slash key on AD12)
partial alphanumeric_keys
xkb_symbols "cmk_ed_sym_w-105" {
include "symkeys(cmk_ed_commons)"
include "symkeys(cmk_ed_numbers)"
key <AE11> { [ equal, plus, dead_doubleacute, notequal ] }; // =+ _≠
key <AE12> { [ backslash, bar, dead_grave, brokenbar ] }; // \| _¦
key <AD10> { [ apostrophe, quotedbl, dead_acute, U2032 ] }; // '" _
key <AD11> { [ bracketleft, braceleft, aring, Aring ] }; // [{ åÅ
key <AD12> { [ bracketright, braceright, ae, AE ] }; // ]} æÆ
key <AC11> { [ semicolon, colon, dead_diaeresis, ellipsis ] }; // QWE P Cmk ;: ¨…
key <BKSL> { [ slash, question, dead_stroke, questiondown ] }; // /? _¿
key <AB10> { [ minus, underscore, dead_macron, plusminus ] }; // -_ _±
};
hidden partial alphanumeric_keys
xkb_symbols "cmk_ed_commons" {
key <TLDE> { [ grave, asciitilde, dead_tilde, U2248 ] }; // `~ _≈