Hello All,
I've been tracking this thread for a few days now, and this looks very interesting. I'm interested in 1 to 2 PCBs depending on final price. what with the need for key-switches as well, I can't afford to go in for the cases too.
With regards to simple remapping, I've just pulled down the code and winAVR [my duel boot box spends most of it's life in windows, go figure... : ( ] and it is possible to make gcc spit out a map-file, allowing us to locate the right symbol, and edit the hex file. Using this method it should be possible to distribute an "official" hex firmware and provide a utility that patches in changes to the keymap without requiring non-programmers to brave the world of C (and therefore from having to obtain and maintain tool-chains as well).
I don't do user-interface programming but I can help with sorting out hex-file hacking.
Notes[skip this section if you don't want the details.]: It will be necessary to make sure enough space is allocated for as many layers as is intended to be supported. It may also be necessary to clearly define which other symbols specify layer-shift keys.
To get the symbol map, add the following to LDFLAGS in the makefile: -Xlinker -Map=firmware.map
An example of the relevent section:
.progmem.data 0x000000ac 0x348 keyboard/ergodox/layout/qwerty.o
0x000002a4 _kb_layout_release
0x00000154 _kb_layout_press
0x000000ac _kb_layout
From firmware.hex:
:1000A0002EC200002CC200002AC20000E4E64B2849
we want 00ac, this starts at 00a0, so the relevent chunk of this line is E4 E6 4B 28, the first four keys in the map:
KEY_RightControl; KEY_RightAlt; KEY_PageUp; KEY_ReturnEnter.
matrix.h specifies these as being { k00,k01,k02,k03, which ties up nicely with the right-hand thumb keys in the layer macro above and the matching qwerty keymap.
Note that when replacing this lign in the hex-file, the first part needs to be written back unchanged and the last two chars are a checksum that will need updating for any changes.
Still to determine: Does the teensy loader check any additional checksums? It isn't obvious from the map alone...