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)