Bidirectional communication is just saying that Mach3 (my X-Carve control software) sends AND receives information to/from the pendant.
The pendant displays all 4 axis locations, feedrate, feedrate overide, jog interval, reset status and jog mode...this information is sent from the computer (Mach3 software) to the pendant.
The pendant sends keypress data, joystick movements and touchscreen inputs to the computer...
I used an Arduino Due for the brains of both pendants as it makes USB communication very simple.
I have the Arduino sketch for the first pendant that I can send to get you started, but it is set to only work with Universal G-Code Sender as that is what I was using at the time I made it.