A more complicated xbee/arduino problem

As I progress my problems are becoming more complex. I fear there might not be a solution I like for this one. I'm building a RC rudder for a stand up paddle board, and I've found an ideal keypad for the project (the little thumb joysticks I built are too fiddly) in the Sparkfun wearable keypad. Unfortunately they elected to multiplex the five switches into three leads, which seems particularly silly since they have an unused wire in the ribbon cable. schematic is here: http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/Switches/China%20Coin%20PIN%20out%20and%20Circuit%20design.pdf

Basically they connect up, down, and center switches to ground to pull pin 5.3 low for down, 5.2 low for up, 5.1 low for center, and the left and right switches are steered by diodes so they connect pin 5.3 to 5.2 for right and 5.3 to 5.1 for left.

Reading the switches with an arduino is fairly easy -- but I want the pin states to be sent via xBee with no arduino connected to the transmitting xbee--just a size consideration, everything needs to fit into a hollow paddle handle. Yes, I could probably squeeze a Pro in there, but you can see the benefits of a bare xbee.

So I configured a transmitter xbee for DI on pins D0, D1, D2, D3 and set a sample rate. Then configured the receiving xBee for DO High on the same pins. And of course it works for up and down since they pull low, but connecting the pins together doesn't change the logic state. When I read the resulting packet (stripping out all the stuff that doesn't change) I get 00 0E for down. 00 0B for up and 00 0F for both left and right.

the center switch gives a strange result, it truncates the packets. There must be something odd about pin D1 on the xbee, but I can figure that out later.

I thought about configuring the pin connected to the 5.3 switch pin to low so it would pull either 5.2 or 5.1 low when the right or left button is pressed, but pressing the down button wouldn't change the state.

Any ideas, other than "get a different keypad".

I did indeed figure out the center switch "problem", it was simply that the hex value of the switch in the packet was OD which showed up as a line break in the hex viewer. All the data was there. I wound up cutting open one of the keypads (they are encased in silicon rubber) to hack the little bugger. the reason for the odd diode multiplexing of the outputs became obvious--it is a control pad for an MP3 player. The up and down arrows are labeled vol+ and vol-, the left/right are FF and Rev, and the center switch is P/Pause, Sparkfun just re-purposed something they probably got for a few pennies as salvage. Clever boys.

I was able to rework the controller with some jumpers and trace cutting so the output is not multiplexed, and then reseal the unit with RTV.

Of course now one of my xBees has decided to brick, and is resistant to all the standard schemes for fixing it. I should have let it alone--it was still working just fine as the transmitter, it just wouldn't go into command mode, but with all my de-bricking efforts it now sends nothing but zeros.