Thanks, BlackWidow. I thought about separate modules as well - I think the most elegant way to implement them would be daisy-chain style, with each module having a USB in and USB out port. You could connect your mouse to the unused input port. It would be expensive to produce them as individual boards but it would give you a lot of flexibility. I'm not sure what the limit would be to the number of USB boards you could daisy-chain together, though.
Re: Oobly, it would be easy to make a TKL-type model, or have socketed switches so that users could easily do it themselves. Perhaps you could have just 3 socketed switches and have the keys on either side of the up arrow key function as "forward" and "back" keys for web browsing like some laptop keyboards have.
Regack, your idea for a ribbon cable actually sounds like the best way to do this. The 3x5 boards could be produced as separate units with pins to connect ribbon cables, and the main 60% board could have 4 connectors, allowing up to 4 sub-boards to be connected. The connections would be hidden inside the case. You would need to get a case to match the number of modules in use, but it would keep things tidy.
Making cases of different lengths should be pretty simple, since the case would just be a rectangular frame mounted on a base panel. You could make the frame out of 4 segments, only varying the width of the horizontal pieces to accommodate the number of sub-boards in use.
You could possibly use edge connectors something similar to what MS used on the X6:Show Image(http://www.everythingusb.com/images/list/ms-sidewinder-x6-magnetic.jpg)
Problem is it doesn't have many contacts. The X6 uses magnets to hold the numpad in place. The connector is shorter than a USB and has a little freedom in flex.
Mezzanine connectors are probably better for this project, actually. Can just run the existing row lines out both ends and have 3 column lines (from the controller) to each side and possibly some LED lines. That's 8 + LED's, so it can be fairly small.
Show Image(http://i.imgur.com/4pqEZwkl.jpg)Show Image(http://i.imgur.com/AfpgVzLl.jpg)