Hi there!
I have joined this forum because, as a proud Linux user, I couldn't stand all the mentions of "only MS Windows/Mac" in https://colemak.com/Multilingual, regarding the "magic combining special character generator" (AltGr-[\]). Well, I have some good news for Linux users: it can be done!
Here is the xkb source code I came up with.
Basically it uses an extra modifier (ISO_Level5) which is similar to AltGr and enables a 5th level of characters (this is done for example in the Canadian Multilingual layout, which uses AltGr as Level3 switch and Control_R as Level5 switch).
Rather than using an ISO_Level5_Shift, which requires holding the key while pressing the other, it is possible to use an ISO_Level5_Latch, which behaves like a dead key that will affect the next key to be pressed. Yay, just what was needed!
I have tested it and it seems to work. But be warned, it is kind of buggy:
It requires following a strict <AltGr down> <[\] down> <[\] up> <AltGr up> sequence; if you release AltGr before [\] it doesn't work. Weird.
For some reason, AltGr-[\] + Shift-[\] leaves this Level5 switch on, so the following character will be affected as well unless you press AltGr-[\] again to toggle it off. This makes the generation of ¦ extra hard, so I have added it as AltGr-Shift-[\] as a workaround.
Personally, though, I think that this "magical modifier dead key" complicates things and that a better solution would be to get rid of it and just use AltGr and AltGr-Shift everywhere. I have thought of an alternative AltGr layout that does this, but I'll leave that for another post.
The layout also includes the map from Caps Lock to Backspace. (It auto-repeats out of the box; I read somewhere that it didn't but I tried it and it does for me.)
As a bonus feature, I added a narrow non-breaking space, which is the thousand and unit separator recommended by the SI bureau and the standard in some languages such as Spanish (compare the excessively separated 10 000 000 with the awesomely well-kerned 10000000, which you can't see in this forum because the software it runs on thinks it's OK to delete U+202F characters >:( ), and also required in French to separate punctuation, I think. It's in AltGr-[\] + Shift-space.
Additionally, I mapped the extra ISO key some keyboards have between shift and Z as an extra AltGr. Honestly, I didn't see myself typing ñ by pressing AltGr with my thumb and N with my index, it feels kind of awkward. So why not add a second AltGr for the other hand if available?
Finally, I want to add that AltGr-[.] [L] works out of the box for me (produces an Ŀ) so the "only MS Windows/Mac" label may be removed. (I don't think anyone uses this character though; rather, they use two regular L's with a "·" in between, which is mapped to Shift-[3] in Spanish keyboards.)
Cheers!