protected MKey AddKey(string displayName, string key, List <KeyCode> keys) { MKey mKey = new MKey(displayName, key, keys[0]); foreach (KeyCode k in keys) { mKey.AddOrReplaceKey(keys.IndexOf(k), k); } myMapperTypes.Add(mKey); BlockPropertiseChangedEvent += () => { keys.Clear(); for (int i = 0; i < mKey.KeysCount; i++) { keys.Add(mKey.GetKey(i)); } }; mKey.KeysChanged += () => { keys.Clear(); for (int i = 0; i < mKey.KeysCount; i++) { keys.Add(mKey.GetKey(i)); } }; return(mKey); }