Tidied up ergo model names

* Instead of arcane names like `pc105aw-sl`, use consistent naming like `pc105awide`.
* Hid the arcane AWing model from menus etc. It's still selectable from the files.
This commit is contained in:
DreymaR 2023-06-13 18:50:25 +02:00
parent 7f57df2f52
commit 4b6d14b710
11 changed files with 140 additions and 103 deletions

View File

@ -21,8 +21,8 @@ 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)
## Models: 4n 4a(pc104angle-z) 4w(pc104wide-qu) 4aw(pc104aw-zqu) 4f(pc104awing)
## 5n 5a(pc105angle) 5w/5aw(pc105aw-sl)
## 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)]
## XKB options are left out of this: Too complex (e.g., replace or append?)
@ -38,8 +38,8 @@ 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
#~ XKBmodel=pc104aw-zqu # ANSI-104 keyboard w/ Angle(Z)Wide(Quote) mod
XKBmodel=pc105aw-sl # 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
XKBoption='misc:extend,lv5:caps_switch_lock,grp:shifts_toggle,compose:menu'
@ -154,19 +154,20 @@ shift $(( $OPTIND - 1 )) # Remove already processed args
if [ -n "${SetXStr}" ]; then # Use ShortString notation
case ${SetXStr[0]} in
4n|4c) XKBmodel='pc104' ;; # Generic ANSI-101/104-key
4a|4ca) XKBmodel='pc104angle-z' ;; # w/ Angle(Z) ergo mod
4w|4cw) XKBmodel='pc104wide-qu' ;; # w/ Wide(Quote) ergo mod
4aw|4caw) XKBmodel='pc104aw-zqu' ;; # w/ Angle(Z)Wide(Quote) ergo mod
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|5aw|5caw) XKBmodel='pc105aw-sl' ;; # w/ AngleWide(Slash) 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!" ;;
esac
##case ${SetXStr[0]} in # eD WIP: Check for Sym mods, add as option. Can we do a search for s in the string?
## Also double the model checks above.
## 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, ...
@ -260,7 +261,7 @@ exit 0
## Colemak[eD] US layout,
## Extend mappings w/ Caps switch:
#~ setxkbmap \
#~ -model pc104wide-qu, \
#~ -model pc104wide, \
#~ -layout "us(cmk_ed_us)", \
#~ -option "misc:extend,lv5:caps_switch_lock"

View File

@ -28,6 +28,14 @@ Note that the `base` and `evdev` rules are compiled slightly differently, so I p
TODO:
-----
* Rework ergo model names.
- I'd like to use a model string `pc104`/`pc105` in setkb, which would simplify the case search in `SetXStr`.
- Then, the mods should have the same names, e.g., `pc104awide`/`pc105awide` instead of `pc104aw-zqu`/`pc105aw-sl`.
- Use `#angle`, `#wide`, `#awide` (and pc104awing).
- Is there currently no ISO-Wide option? No. That's because the Angle mod is "mandatory". But still, for consistency.
- Hide the AWing option from menus? It's pretty arcane and not really recommended.
- The `pc105curl` model is actually a CurlAngle model, and thus badly named. Fix. All the Curl models seem messy?
* Sym mod implementation
- The Sym mod should not be implemented as hard/model; it must not rearrange Extend.
- Better to make a new symbols/symbolkeys file, and put all symbol key definitions in there.
@ -44,9 +52,6 @@ TODO:
* Lockable lv5 modifier, for users who want Extend-lock. Maybe Shift+Extend to lock it, or something?
- It's possible today to have two switch-or-lock lv5 modifiers. But it seems wasteful to use up two keys.
* Non-Fn-key Extend is now the default. Add a separate option for FKey Extend? Many new users struggled with this, or have weird FKey setups.
- Add a FKey Extend option to misc? So people can activate `misc:extend` and `misc:extend_fk` separately.
* Add colemak-dh to the colemak symbols file and the US locale? Both ISO, ANSI and Ortho.
- 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
@ -161,6 +166,11 @@ HOLD:
* Rulemak (ru) has its own entry now, by its creator GHen (Geert Hendrickx). Bulmak (bg) is still provided in the BigBag.
- There exists a ru(Polish) BigBag entry, copied over from pl. I think someone asked for it at some point?
- It allows writing latinized Slavic for Colemak users. It is not defined in rules but can be used by the command line.
* Non-Fn-key Extend is now the default. Add a separate option for FKey Extend?
- Many new users struggled with Extend overriding `Ctrl+Alt+FK##` TTY server control keys, or other FKey setups they were using.
- Add a FKey Extend option to misc? So people can activate `misc:extend` and `misc:extend_fk` separately.
- I already added `Extend+AltGr+FK##` mappings so even with FK Extend you have TTY hotkeys. But they aren't on by default now.
<br>

View File

@ -1004,9 +1004,9 @@ xkb_geometry "pc104alt" {
// See "DreymaR's Big Bag of Keyboard Tricks": https://dreymar.colemak.org/ergo-mods.html
//
// pc104_Angle(Z) ergonomic mod (by DreymaR, 2011)
xkb_geometry "pc104angle-z" {
xkb_geometry "pc104angle" {
include "pc(pc104)"
description= "Generic 104 - Angle(Z)Ergo mod";
description= "Generic 104 - Angle(Z) Ergo mod";
section.left= 19;
row.left= 1;
@ -1023,12 +1023,12 @@ xkb_geometry "pc104angle-z" {
};
}; // End of bottom row
}; // End of "Alpha" section
}; // End of "pc104angle-z" geometry
}; // End of "pc104angle" geometry
// pc104_Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_geometry "pc104wide-qu" {
xkb_geometry "pc104wide" {
include "pc(pc104)"
description= "Generic 104 - Wide(Quote)Ergo mod";
description= "Generic 104 - Wide Ergo mod";
section.left= 19;
row.left= 1;
@ -1069,12 +1069,12 @@ xkb_geometry "pc104wide-qu" {
};
}; // End of bottom row
}; // End of "Alpha" section
}; // End of "pc104wide-qu" geometry
}; // End of "pc104wide" geometry
// pc104_Angle(Z)Wide(Quote) ergonomic mod (by DreymaR, 2015)
xkb_geometry "pc104aw-zqu" {
include "pc(pc104wide-qu)"
description= "Generic 104 - Angle(Z)Wide(Quote)Ergo mod";
xkb_geometry "pc104awide" {
include "pc(pc104wide)"
description= "Generic 104 - Angle(Z)Wide Ergo mod";
section.left= 19;
row.left= 1;
@ -1091,12 +1091,12 @@ xkb_geometry "pc104aw-zqu" {
};
}; // End of bottom row
}; // End of "Alpha" section
}; // End of "pc104aw-zqu" geometry
}; // End of "pc104awide" geometry
// pc104_AngleWing(Quote) ergonomic mod (by DreymaR, 2015)
xkb_geometry "pc104awing" {
include "pc(pc104)"
description= "Generic 104 - AngleWing(Quote)Ergo mod";
description= "Generic 104 - AngleWing Ergo mod";
section.left= 19;
row.left= 1;
@ -1142,7 +1142,7 @@ xkb_geometry "pc104awing" {
// pc105_Angle(LSGT) ergonomic mod (by DreymaR, 2011)
xkb_geometry "pc105angle" {
include "pc(pc105)"
description= "Generic 105 - Angle_Ergo mod";
description= "Generic 105 - Angle Ergo mod";
section.left= 19;
row.left= 1;
@ -1164,7 +1164,7 @@ xkb_geometry "pc105angle" {
// pc105_CurlAngle(LSGT) ergonomic mod (by DreymaR, 2017)
xkb_geometry "pc105curl" {
include "pc(pc105)"
description= "Generic 105 - CurlAngle_Ergo mod";
description= "Generic 105 - CurlAngle Ergo mod";
section.left= 19;
row.left= 1;
@ -1183,10 +1183,10 @@ xkb_geometry "pc105curl" {
}; // End of "Alpha" section
}; // End of "pc105curl" geometry
// pc105_AngleWide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_geometry "pc105aw-sl" {
// pc105_Wide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_geometry "pc105wide" {
include "pc(pc105)"
description= "Generic 105 - AngleWide(/)Ergo mod";
description= "Generic 105 - Wide Ergo mod";
section.left= 19;
row.left= 1;
@ -1218,6 +1218,28 @@ xkb_geometry "pc105aw-sl" {
<AC10>, <AC11>
};
}; // End of home row
row {
top= 58;
keys { { <LFSH>, "LFSH", color="grey20" },
<LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
<BKSL>, <AB06>, <AB07>, <AB08>, <AB09>,
{ <RTSH>, "RTSH", color="grey20" }
};
}; // End of bottom row
}; // End of "Alpha" section
}; // End of "pc105wide" geometry
// pc105_AngleWide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_geometry "pc105awide" {
include "pc(pc105wide)"
description= "Generic 105 - AngleWide Ergo mod";
section.left= 19;
row.left= 1;
key.shape= "NORM";
key.gap= 1;
section "Alpha" {
top= 61;
row {
top= 58;
keys { { <LFSH>, "LFSH", color="grey20" },
@ -1227,5 +1249,5 @@ xkb_geometry "pc105aw-sl" {
};
}; // End of bottom row
}; // End of "Alpha" section
}; // End of "pc105aw-sl" geometry
}; // End of "pc105awide" geometry
// <--<< DreymaR: Additions to xkb/geometry/pc

View File

@ -602,7 +602,7 @@ default xkb_keycodes "evdev" {
// >>--> OEystein "DreymaR" Bech-Aase (formerly Bech Gadmar), 2017: Additions to xkb/keycodes/evdev
// pc104_Angle(Z) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc104angle-z" {
xkb_keycodes "pc104angle" {
<AB02> = 52; // X < Z
<AB03> = 53; // C < X
@ -614,7 +614,7 @@ xkb_keycodes "pc104angle-z" {
};
// pc104_Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide-qu" {
xkb_keycodes "pc104wide" {
include "evdev(pc104wide-rightpart)"
include "evdev(pc104wide-midpart)"
@ -622,11 +622,11 @@ xkb_keycodes "pc104wide-qu" {
};
// pc104_Angle(Z)Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104aw-zqu" {
xkb_keycodes "pc104awide" {
include "evdev(pc104wide-rightpart)"
include "evdev(pc104wide-midpart)"
augment "evdev(pc104angle-z)"
augment "evdev(pc104angle)"
};
// pc104_AngleWing(Quote) ergonomic mod (by DreymaR, 2015)
@ -718,14 +718,14 @@ xkb_keycodes "pc105angle" {
};
// pc105_AngleWide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105aw-sl" {
xkb_keycodes "pc105awide" {
include "evdev(pc105wide-rightpart)"
include "evdev(pc105wide)"
augment "evdev(pc105angle)"
};
// pc105_Wide(Slash) partial ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105wide-rightpart" {
// pc105_Wide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105wide" {
<AE12> = 16; // = < 7
<AE07> = 17; // 7 < 8

View File

@ -413,7 +413,7 @@ xkb_keycodes "thinkpadz60" {
// >>--> OEystein "DreymaR" Bech-Aase (formerly Bech Gadmar), 2017: Additions to xkb/keycodes/xfree86
// pc104_Angle(Z) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc104angle-z" {
xkb_keycodes "pc104angle" {
<AB02> = 52; // X < Z
<AB03> = 53; // C < X
@ -425,7 +425,7 @@ xkb_keycodes "pc104angle-z" {
};
// pc104_Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104wide-qu" {
xkb_keycodes "pc104wide" {
include "xfree86(pc104wide-rightpart)"
include "xfree86(pc104wide-midpart)"
@ -433,11 +433,11 @@ xkb_keycodes "pc104wide-qu" {
};
// pc104_Angle(Z)Wide(Quote) ergonomic mod (by DreymaR, 2013)
xkb_keycodes "pc104aw-zqu" {
xkb_keycodes "pc104awide" {
include "xfree86(pc104wide-rightpart)"
include "xfree86(pc104wide-midpart)"
augment "xfree86(pc104angle-z)"
augment "xfree86(pc104angle)"
};
// pc104_AngleWing(Quote) ergonomic mod (by DreymaR, 2015)
@ -529,14 +529,14 @@ xkb_keycodes "pc105angle" {
};
// pc105_AngleWide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105aw-sl" {
xkb_keycodes "pc105awide" {
include "xfree86(pc105wide-rightpart)"
include "xfree86(pc105wide)"
augment "xfree86(pc105angle)"
};
// pc105_Wide(Slash) partial ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105wide-rightpart" {
// pc105_Wide(Slash) ergonomic mod (by DreymaR, 2011)
xkb_keycodes "pc105wide" {
<AE12> = 16; // = < 7
<AE07> = 17; // 7 < 8

View File

@ -15,8 +15,9 @@
// PC models
! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 \
pc104angle-z pc104wide-qu pc104aw-zqu pc104awing pc105angle pc105aw-sl \
pc104curl-z pc104caw-zqu pc104cawing pc105curl pc105caw-sl
pc104angle pc104wide pc104awide pc104awing \
pc105angle pc105wide pc105awide \
pc104curl-z pc104caw-zqu pc104cawing pc105curl pc105caw-sl
// Jolla devices and keyboards
! $jollamodels = jollasbj
@ -160,15 +161,16 @@
macintosh_old = macintosh(old)
$macs = macintosh
thinkpadz60 = xfree86(thinkpadz60)
pc104angle-z = xfree86(pc104angle-z)
pc104wide-qu = xfree86(pc104wide-qu)
pc104aw-zqu = xfree86(pc104aw-zqu)
pc104angle = xfree86(pc104angle)
pc104wide = xfree86(pc104wide)
pc104awide = xfree86(pc104awide)
pc104awing = xfree86(pc104awing)
pc104curl-z = xfree86(pc104curl-z)
pc104caw-zqu = xfree86(pc104caw-zqu)
pc104cawing = xfree86(pc104cawing)
pc105angle = xfree86(pc105angle)
pc105aw-sl = xfree86(pc105aw-sl)
pc105wide = xfree86(pc105wide)
pc105awide = xfree86(pc105awide)
pc105curl = xfree86(pc105curl)
pc105caw-sl = xfree86(pc105caw-sl)
* = xfree86

View File

@ -5,12 +5,12 @@
pc104 Generic 104-key PC
pc104alt Generic 104-key PC with L-shaped Enter key
pc105 Generic 105-key PC
pc104angle-z Generic 104-key PC Angle(Z)Ergo
pc104wide-qu Generic 104-key PC Wide(Quote)Ergo
pc104aw-zqu Generic 104-key PC Angle(Z)Wide(Quote)Ergo
pc104awing Generic 104-key PC AngleWing(Quote)Ergo
pc105angle Generic 105-key PC (intl.) Angle_Ergo
pc105aw-sl Generic 105-key PC (intl.) AngleWide(/)Ergo
pc104angle Generic 104-key PC Angle(Z) Ergo
pc104wide 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
pc105awide Generic 105-key PC (intl.) AngleWide Ergo
dell101 Dell 101-key PC
latitude Dell Latitude laptop
dellm65 Dell Precision M65 laptop

View File

@ -47,43 +47,43 @@
<!-- >-> DreymaR's BigBagKbdTrix -->
<model>
<configItem>
<name>pc104angle-z</name>
<description>Generic 104-key PC (Angle(Z)Ergo mod)</description>
<name>pc104angle</name>
<description>Generic 104-key PC (Angle(Z) Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc104wide-qu</name>
<description>Generic 104-key PC (Wide(Quote)Ergo mod)</description>
<name>pc104wide</name>
<description>Generic 104-key PC (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc104aw-zqu</name>
<description>Generic 104-key PC (Angle(Z)Wide(Quote)Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc104awing</name>
<description>Generic 104-key PC (AngleWing(Quote)Ergo mod)</description>
<name>pc104awide</name>
<description>Generic 104-key PC (Angle(Z)Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc105angle</name>
<description>Generic 105-key PC (intl.) (Angle_Ergo mod)</description>
<description>Generic 105-key PC (intl.) (Angle Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc105aw-sl</name>
<description>Generic 105-key PC (intl.) (AngleWide(/)Ergo mod)</description>
<name>pc105wide</name>
<description>Generic 105-key PC (intl.) (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc105awide</name>
<description>Generic 105-key PC (intl.) (AngleWide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model> <!-- <-< DreymaR -->

View File

@ -15,8 +15,9 @@
// PC models
! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 \
pc104angle-z pc104wide-qu pc104aw-zqu pc104awing pc105angle pc105aw-sl \
pc104curl-z pc104caw-zqu pc104cawing pc105curl pc105caw-sl
pc104angle pc104wide pc104awide pc104awing \
pc105angle pc105wide pc105awide \
pc104curl-z pc104caw-zqu pc104cawing pc105curl pc105caw-sl
// Jolla devices and keyboards
! $jollamodels = jollasbj
@ -98,16 +99,17 @@
$jollamodels = evdev+jolla(jolla)
olpc = evdev+olpc(olpc)
olpcm = evdev+olpc(olpcm)
pc104angle-z = evdev(pc104angle-z)
pc104wide-qu = evdev(pc104wide-qu)
pc104aw-zqu = evdev(pc104aw-zqu)
pc104angle = evdev(pc104angle)
pc104wide = evdev(pc104wide)
pc104awide = evdev(pc104awide)
pc104awing = evdev(pc104awing)
pc104curl-z = evdev(pc104curl-z)
pc104caw-zqu = evdev(pc104caw-zqu)
pc104cawing = evdev(pc104cawing)
pc105angle = evdev(pc105angle)
pc105aw-sl = evdev(pc105aw-sl)
pc105curl = evdev(pc105curl)
pc105wide = evdev(pc105wide)
pc105awide = evdev(pc105awide)
pc105curl = evdev(pc105curl)
pc105caw-sl = evdev(pc105caw-sl)
* = evdev

View File

@ -5,12 +5,12 @@
pc104 Generic 104-key PC
pc104alt Generic 104-key PC with L-shaped Enter key
pc105 Generic 105-key PC
pc104angle-z Generic 104-key PC Angle(Z)Ergo
pc104wide-qu Generic 104-key PC Wide(Quote)Ergo
pc104aw-zqu Generic 104-key PC Angle(Z)Wide(Quote)Ergo
pc104awing Generic 104-key PC AngleWing(Quote)Ergo
pc105angle Generic 105-key PC (intl.) Angle_Ergo
pc105aw-sl Generic 105-key PC (intl.) AngleWide(/)Ergo
pc104angle Generic 104-key PC Angle(Z) Ergo
pc104wide 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
pc105awide Generic 105-key PC (intl.) AngleWide Ergo
dell101 Dell 101-key PC
latitude Dell Latitude laptop
dellm65 Dell Precision M65 laptop

View File

@ -47,43 +47,43 @@
<!-- >-> DreymaR's BigBagKbdTrix -->
<model>
<configItem>
<name>pc104angle-z</name>
<description>Generic 104-key PC (Angle(Z)Ergo mod)</description>
<name>pc104angle</name>
<description>Generic 104-key PC (Angle(Z) Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc104wide-qu</name>
<description>Generic 104-key PC (Wide(Quote)Ergo mod)</description>
<name>pc104wide</name>
<description>Generic 104-key PC (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc104aw-zqu</name>
<description>Generic 104-key PC (Angle(Z)Wide(Quote)Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc104awing</name>
<description>Generic 104-key PC (AngleWing(Quote)Ergo mod)</description>
<name>pc104awide</name>
<description>Generic 104-key PC (Angle(Z)Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc105angle</name>
<description>Generic 105-key PC (intl.) (Angle_Ergo mod)</description>
<description>Generic 105-key PC (intl.) (Angle Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc105aw-sl</name>
<description>Generic 105-key PC (intl.) (AngleWide(/)Ergo mod)</description>
<name>pc105wide</name>
<description>Generic 105-key PC (intl.) (Wide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model>
<model>
<configItem>
<name>pc105awide</name>
<description>Generic 105-key PC (intl.) (AngleWide Ergo mod)</description>
<vendor>Generic</vendor>
</configItem>
</model> <!-- <-< DreymaR -->