@Override
  public boolean onKey(View v, int keyCode, KeyEvent evt) {

    boolean consumed = false;

    if (keyCode == KeyEvent.KEYCODE_MENU) {
      if (evt.getAction() == KeyEvent.ACTION_DOWN) return super.onKeyDown(keyCode, evt);
      else return super.onKeyUp(keyCode, evt);
    }

    try {
      if (evt.getAction() == KeyEvent.ACTION_DOWN || evt.getAction() == KeyEvent.ACTION_MULTIPLE) {
        consumed = inputHandler.onKeyDown(keyCode, evt);
      } else if (evt.getAction() == KeyEvent.ACTION_UP) {
        consumed = inputHandler.onKeyUp(keyCode, evt);
      }
      resetOnScreenKeys(keyCode);
    } catch (NullPointerException e) {
    }

    return consumed;
  }