I appreciate any insight people can share into these issues. I’m trying to figure out what is possible and what is not possible. I know I’ve mentioned the ErgoDox a lot, but it’s really just a common reference point to discuss some of these issues (how to connect multiple circuit boards to a single controller, how many keys can be connected via I2C, how to configure complex matrix layouts, etc.).
1) In the ErgoDox, how is the thumb cluster connected to the matrix? Are the thumb cluster rows and columns considered extensions of existing rows and columns, or does it have its own? Is there a good discussion of the design decisions made when creating the ErgoDox that would explain why the specific matrix configuration was made?
2) My understanding is that the 4 wires in the cable that connects the two halves of the ErgoDox are for I2C (SDA and SCL) and power (PWR and GND). What are the limitations of what gets passed through the I2C bus? How many keys, rows and columns? i.e. How many keys could you have in the left hand half? How does the matrix get converted into something easily passed through the I2C bus, and how does the Teensy interpret it? Is it essentially that the left hand keys are connected to the Teensy through I2C while the right-hand matrix is connected directly to Teensy connectors? What’s the best resource for understanding what is happening with the connections?
3) Microsoft says (on
http://www.microsoft.com/appliedsciences/content/projects/AntiGhostingExplained.aspx) that their ‘advanced anti-ghosting technology leverages multi-touch technology to prevent key ghosting’ and that ‘by using standard manufacturing techniques and avoiding diodes and large printed circuit boards, this technology remains inexpensive to produce’. What are they doing that avoids the use of diodes? Is there something that DIYers can do that similarly would avoid the need for diodes? or are they likely using more than two wires per switch, something we using standard switches would not be able to do? Has anyone taken apart a Microsoft keyboard to see what they’re doing?
4) Let’s say I wanted to connect 3 or more devices together to the same controller? For example, let’s say you have the ErgoDox, which is two devices, and you wanted to add a keypad. Presumably you’d want to connect it to the right side and connect somehow to the I2C bus. But what if you also wanted to connect something through the left side? Would you need a dedicated i/o expander for the new device, and then somehow merge it into the I2C bus? Would that left-connected device then connect via a cable that was similarly 4 wires (2 for I2C and 2 for power)?
5) Let’s say I had an ErgoDox and wanted to add USB connections to either side. This would necessitate the need to create a USB hub inside the keyboard. The USB output from the Teensy would be directly connected to the hub, and the other ports would be connected, with the hub outputting to an external mini USB port. If I wanted some of the USB ports to be on the left, however, I’d need to send extra connections via the cable though - 4 for USB if I’m not mistaken. However, since two of the wires are also PWR and GND, in theory could I just have 6 wires in the cable? PWR, GND, I2C SDA, I2C SCL, USB Data+, and USB Data-? or if I wanted to keep the 4 wires, I guess I could rig some kind of I2C over USB configuration? If I wanted to allow connection of USB devices to the Teensy, such as for a mouse-like device, then this could be done using LUFA? Has anyone done this?
Thanks,
Philip