A Leonardo appearing as a keyboard to an FTDI host controller

A coworker would like to be able to send keyboard commands (from labview on a desktop) to a PCB host controller under test. The PCB under test uses an FTDI “Vinculum-II Embedded Dual USB Host Controller IC”. In Labview, he would like to send a character out of the serial port (such as “m”) and have the FTDI host controller receive the “m” as if the button was pressed on keyboard.
Naturally, my first thought was to use a Leonardo and load in an example program that makes it appear as a keyboard. This works great when the Leonardo is attached to a desktop PC, I can repeatedly send out an “m” every three seconds. (for testing) But, when the Leonardo is attached to the FTDI host controller, it does not receive any commands. As a sanity check, a USB keyboard attached to the FTDI host controller works great. I did disable the USB serial port on the Leonardo using this method (in case it confuses the FTDI host controller):

I use an AVRISP MK-II to program the Leonardo now, since the USB serial port is not functional.
There is a lot of data when I look at the USB D+ and D- with a Saleae Logic analyzer.
Here is my simple test program:

#include "Keyboard.h"

void setup() {
  // initialize digital pin LED_BUILTIN as an output.

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(2000);                       // wait for a second
  Keyboard.write('m');  //

The Leonardo does not have to be used. Since he only needs one, this might work:

But, it would be nice to know what I’m doing wrong with the Leonardo. Any thoughts?
Matt Meerian

I would suspect that the problem comes from the enumeration phase of the USB connection. If the Leanardo does not identify itself as a keyboard, the host probably doesn't know what it is. I am no USB expert, but an article such as: USB - a brief tutorial for embedded engineers
may halpe you understand how USB works and why you have a problem.