Project update:
1. I added soldering instructions to the prototyping thread for those who are soldering on their own:
http://geekhack.org/index.php?topic=37570.msg717519#msg7175192. I'm working on switch positions guide, hoping to make the layout options clearer...
3. I have a basic programming model:
Layers use inheritance. Every layer can be either a base layer (no parent), or can inherit from one other layer (its parent). Every key on a layer is either inherited (does the same as on the parent layer) or defined (does something else).
A key's definition consists of scancode and action. Scancode defines which key is sent to the PC (can be null, so that a key doesn't send anything).
Action can be one of three options:
a) layer change on key-down event (relative - adds or subtracts a constant from current layer number)
b) layer change on key-up event (the same, but when releasing the key)
c) [not strictly necessary, but simplifies some cases] layer change by n on key-down and -n on key-up, where n is a a defined integer.
The first two actions make pretty much possible including simple fn key (layer +1 on key-down on base layer and -1 on key-up on second layer); conditional scancodes (for example shift changes layer to one which inherits all the keys but escape, which becomes tilde/tick), so when you press ESC together with shift it becomes tilde; binary layer selection (3 keys with MX Lock which act as bits), though this one requires you to define all three keys on all 8 layers to work properly, so action (c) comes useful (define all 3 on base layer as +-1, +-2, +-4, where +- means action (c), which adds on key-down and subtracts on key-up, and inherit them on all other layers).
You can also easily change layers "permanently" by key-click (in cycles). Just define key-down on one layer, which goes to another, then again key-down on another, and so on and then come back to base layer.
Changing layers with a combo should be doable too: fn goes to special layer (and comes back when released), where say, space goes to the desired layer, but on that layer space doesn't do anything, so that layer stays set unless someone presses fn (which on that layer goes to other special layer, where in turn, space goes back to base layer).
Inheritance will make defining things simple, because you won't have to change keys on all layers each time you want to change something if you design inheritance properly. It also makes it possible to compress the layout to fit many layers which support various conditions, combos and stuff.
Tell me what you think.