Java Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class KeyListenerExample {

  Display d;

  Shell s;

  KeyListenerExample() {

    d = new Display();
    s = new Shell(d);

    s.setSize(250, 200);
    s.setText("A KeyListener Example");
    s.setLayout(new RowLayout());

    final Combo c = new Combo(s, SWT.DROP_DOWN | SWT.BORDER);
    c.add("Lions");
    c.add("Tigers");
    c.add("Bears");
    c.add("Oh My!");

    c.addKeyListener(new KeyListener() {
      String selectedItem = "";

      public void keyPressed(KeyEvent e) {
        if (c.getText().length() > 0) {
          return;
        }
        String key = Character.toString(e.character);
        String[] items = c.getItems();
        for (int i = 0; i < items.length; i++) {
          if (items[i].toLowerCase().startsWith(key.toLowerCase())) {
            c.select(i);
            selectedItem = items[i];
            return;
          }
        }
      }

      public void keyReleased(KeyEvent e) {
        if (selectedItem.length() > 0)
          c.setText(selectedItem);
        selectedItem = "";
      }
    });
    s.open();
    while (!s.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }

  public static void main() {
    new KeyListenerExample();
  }

}