public boolean onKeyEvent(KeyEvent event,ActionProcessor actionProcessor,KeyboardActionListener keyboardActionListener){
  long extendedKeyCode=KeyComboPreference.keyEventToExtendedKeyCode(event);
  if (!mTriggerKeys.contains(extendedKeyCode)) {
    return false;
  }
  if (event.getAction() == KeyEvent.ACTION_DOWN) {
    if (mPressedKeys.isEmpty()) {
      actionProcessor.process(mAction);
      if (keyboardActionListener != null) {
        keyboardActionListener.onKeyboardAction(mAssignedKeysResId);
      }
    }
    mPressedKeys.add(extendedKeyCode);
  }
 else   if (event.getAction() == KeyEvent.ACTION_UP) {
    mPressedKeys.remove(extendedKeyCode);
  }
  return true;
}

public boolean onKeyEvent ( KeyEvent event , ActionProcessor actionProcessor , KeyboardActionListener keyboardActionListener ) { long extendedKeyCode = KeyComboPreference . keyEventToExtendedKeyCode ( event ) ; if ( ! mTriggerKeys . contains ( extendedKeyCode ) ) { return false ; } if ( event . getAction ( ) == KeyEvent . ACTION_DOWN ) { if ( mPressedKeys . isEmpty ( ) ) { actionProcessor . process ( mAction ) ; if ( keyboardActionListener != null ) { keyboardActionListener . onKeyboardAction ( mAssignedKeysResId ) ; } } mPressedKeys . add ( extendedKeyCode ) ; } else if ( event . getAction ( ) == KeyEvent . ACTION_UP ) { mPressedKeys . remove ( extendedKeyCode ) ; } return true ; }
process keys assigned to trigger maction . action is sent to processor on the first key pressed down . no other key in the group will trigger until after all keys in that group have been released .
