//------------------------------------------------------------------------------ // Locate a key definition by key identifier only // NOTE: Group are searched from upper group(menus,..) to lower group (aircraft) //------------------------------------------------------------------------------ CKeyDefinition* CKeyMap::FindKeyDefinitionById (Tag id) { CKeyDefinition *rc = NULL; for (U_INT k=0; k< oset.size();k++) { CKeySet *ks = oset[k]; CKeyDefinition* kdf = ks->GetKeyByTag(id); if (0 == kdf) continue; return kdf; } return 0; }
//------------------------------------------------------------------------- // Change group callback if key is redirected //------------------------------------------------------------------------- // Activate key in group (simulate a key stroke) // The group is taken from the Keydef in case of redirection //------------------------------------------------------------------------- bool CKeyMap::Stroke(Tag grp,Tag kid) { //--- find the Key set --------------------------- CKeySet *ks = FindKeySetById (grp); if (0 == ks) return false; CKeyDefinition *kdf = ks->GetKeyByTag(kid); if (0 == kdf) return false; //--- Group Redirection -------------------------- Tag ngp = kdf->GetSet(); ks = FindKeySetById (ngp); KeyGroupCB cb = ks->GetCB(); return (cb)(kdf,kdf->GetCode()) ; }