If the mod is used as a model, yes – H and M etc would still be switched. That switches the actual key positions around as if it were the physical keys, and not just what's mapped to them. More specifically, in the model definition each "physical" scan code from the keyboard driver is mapped to a key name which may be a position (<AC01>, <AC02>, <AC03> etc) or an alias (<BKSL>, <LSGT>, <ENTR> etc). By shuffling the positions around, I can make a "physical" model that's WideAngleWhatHaveYou for instance. Then that affects all layouts, because those map glyphs to the various shift levels of the key names.
"Geometry" is really just for help images. But if it isn't defined at all, the layout can't be activated with setxkbmap. Also, those images are useful especially for new users.
The reason for switching to QWERTY would be if it's a multi-user computer. But in those cases one could just use the Curl modded layouts. Or run a logon script for each user that calls setxkb with the model they want. Or something.
Other than that, I expect most multi-layout users to be locale users. I myself might have both the English and Norwegian Colemak[eD] active for instance, and if I were to write much Greek I'd also have the phonetic Greek Colemak. I'd like all of those to be Curl modded of course, and for that a Curl modded "model" would be ideal as with that I could use any Colemak layout without worries.
I've started preparing, and it's going to be a lot of models we'd need even when trimming off some of the less useful combinations! But it's not so bad for the user, as they'll only have to call the one(s) they want and it can be done with a shortstring:
4n) XKBmodel='pc104' ;; # Generic ANSI-101/104-key
4a) XKBmodel='pc104angle-z' ;; # w/ Angle(Z) ergo mod
4w) XKBmodel='pc104wide-qu' ;; # w/ Wide(Quote) ergo mod
4aw) XKBmodel='pc104awide-zqu' ;; # w/ Angle(Z)Wide(Quote) ergo mod
4af) XKBmodel='pc104aframe' ;; # w/ AngleFrame(Quote) ergo mod
4v) XKBmodel='pc104curla-vz' ;; # w/ Curl(Dvbg)Angle(Z) ergo mod
4b) XKBmodel='pc104curla-bz' ;; # w/ Curl(Dbg)Angle(Z) ergo mod
4vw) XKBmodel='pc104caw-vzqu' ;; # w/ Curl(Dvbg)Angle(Z)Wide(Quote) mod
4bw) XKBmodel='pc104caw-bzqu' ;; # w/ Curl(Dbg)Angle(Z)Wide(Quote) mod
4vf) XKBmodel='pc104caframe-v' ;; # w/ Curl(Dvbg)AngleFrame(Quote) mod
4bf) XKBmodel='pc104caframe-b' ;; # w/ Curl(Dbg)AngleFrame(Quote) mod
4c) XKBmodel='pc104curla-vmz' ;; # w/ Curl(DvbgHm)Angle(Z) ergo mod
4d) XKBmodel='pc104curla-bkz' ;; # w/ Curl(DbgHk)Angle(Z) ergo mod
4cw) XKBmodel='pc104caw-vmzqu' ;; # w/ Curl(DvbgHm)Angle(Z)Wide(Quote) mod
4dw) XKBmodel='pc104caw-bkzqu' ;; # w/ Curl(DbgHk)Angle(Z)Wide(Quote) mod
4cf) XKBmodel='pc104caframe-vm' ;; # w/ Curl(DvbgHm)AngleFrame(Quote) mod
4df) XKBmodel='pc104caframe-bk' ;; # w/ Curl(DbgHk)AngleFrame(Quote) mod
5n) XKBmodel='pc105' ;; # Generic ISO-102/105-key
5a) XKBmodel='pc105angle-lg' ;; # w/ Angle(LSGT) ergo mod
5aw) XKBmodel='pc105awide-sl' ;; # w/ AngleWide(Slash) ergo mod
5v) XKBmodel='pc105curla-v' ;; # w/ Curl(Dvbg)Angle ergo mod
5b) XKBmodel='pc105curla-b' ;; # w/ Curl(Dbg)Angle ergo mod
5vw) XKBmodel='pc105caw-vsl' ;; # w/ Curl(Dvbg)AngleWide(Slash) mod
5bw) XKBmodel='pc105caw-bsl' ;; # w/ Curl(Dbg)AngleWide(Slash) mod
5c) XKBmodel='pc105curla-vm' ;; # w/ Curl(DvbgHm)Angle ergo mod
5d) XKBmodel='pc105curla-bk' ;; # w/ Curl(DbgHk)Angle ergo mod
5cw) XKBmodel='pc105caw-vmsl' ;; # w/ Curl(DvbgHm)AngleWide(Slash) mod
5dw) XKBmodel='pc105caw-bksl' ;; # w/ Curl(DbgHk)AngleWide(Slash) mod
With this, there's the option to get
• Angle, Wide, AngleWide and in the case of ANSI boards AngleFrame mods
• The left-side or full mod, for both DvbgHm('v/c') and DbgHk('b/d') Curl mods
• Curl mods combined with either Angle, AngleWide or AngleFrame mods
That's 20 extra models to provide the Curls ... phew! (6+4 each of the left-hand and full mods.) Now, to actually implement all that...
Last edited by DreymaR (29-Jan-2015 12:36:08)