public void ApplyPreset(ControllerKeyMap target, NSTControllerPresets copyFrom)
        {
            ControllerKeyMap source = ControllerKeyMap.presets[(int)copyFrom];

            for (int i = 0; i < mapping.keyMaps.Length; i++)
            {
                mapping.keyMaps[i] = source.keyMaps[i];
            }

            keyPresets = copyFrom;
        }
        public bool CompareToPreset(NSTControllerPresets selected)
        {
            ControllerKeyMap selectedPreset = ControllerKeyMap.presets[(int)selected];

            // return false if any key mapping doesn't match
            for (int i = 0; i < mapping.keyMaps.Length; i++)
            {
                if (mapping.keyMaps[i] != selectedPreset.keyMaps[i])
                {
                    return(false);
                }
            }

            return(true);
        }
 /// <summary>
 /// Set keymap for TabPage.
 /// </summary>
 /// <param name="idx">The TabPage index.</param>
 /// <param name="controllerId">The controller instance guid.</param>
 /// <param name="keymap">The keymap will set to.</param>
 /// <returns>The original keymap of the controller.</returns>
 public ControllerKeyMap SetKeyMap(int idx, string controllerId, ControllerKeyMap keymap)
 {
     TabPage tab = tpSetting.TabPages[idx];
     if (null == tab)
         return null;
     return SetKeyMap(tab.Name, controllerId, keymap);
 }
 /// <summary>
 /// Set keymap for a controller.
 /// </summary>
 /// <param name="name">The controller identity.</param>
 /// <param name="keymap">The keymap will set to.</param>
 /// <returns>The original keymap of the controller.</returns>
 public ControllerKeyMap SetKeyMap(string name, ControllerKeyMap keymap)
 {
     TabPage tab = tpSetting.TabPages[name];
     if (null == tab)
         return null;
     return SetKeyMap(name, null, keymap);
 }
 /// <summary>
 /// Set keymap for a controller.
 /// </summary>
 /// <param name="name">The controller identity.</param>
 /// <param name="controllerId">The controller instance guid.</param>
 /// <param name="keymap">The keymap will set to.</param>
 /// <returns>The original keymap of the controller.</returns>
 public ControllerKeyMap SetKeyMap(string name, string controllerId, ControllerKeyMap keymap)
 {
     TabPage tab = tpSetting.TabPages[name];
     if (null == tab)
         return null;
     ControllerSettingPanel csp = tab.Controls[name] as ControllerSettingPanel;
     ControllerKeyMap originalKeymap = csp.GetKeyMap();
     csp.SetKeyMap(keymap);
     csp.ControllerId = controllerId;
     return originalKeymap;
 }
        public void SetKeyMap(ControllerKeyMap map)
        {
            ControllerKeyMap.Enumerator en = map.GetEnumerator();
            while (en.MoveNext()) {
                string action = en.Current.Key.ToUpper();
                ListViewItem item = lvKeyMap.Items[action];
                if (null == item) {
                    item = lvKeyMap.Items.Add(action);
                    item.Name = action;
                    item.SubItems.Add(new ListViewItem.ListViewSubItem(item, "-"));
                    item.SubItems.Add(new ListViewItem.ListViewSubItem(item, "-"));

                }
                ControllerKey[] keys = en.Current.Value;
                if (null != keys && keys.Length > 0) {
                    int n = item.SubItems.Count - 1;
                    n = n > keys.Length ? keys.Length : n;
                    for (int i = 0; i < n; i++)
                        item.SubItems[i + 1].Text = keys[i].ToString();
                }
            }
        }
 public ControllerKeyMap GetKeyMap()
 {
     ControllerKeyMap map = new ControllerKeyMap();
     for (int i = 0; i < lvKeyMap.Items.Count; i++) {
         ListViewItem item = lvKeyMap.Items[i];
         ControllerKey[] keys = new ControllerKey[2];
         keys[0] = ControllerKey.FromString(item.SubItems[1].Text);
         keys[1] = ControllerKey.FromString(item.SubItems[2].Text);
         map.Add(item.Text.ToLower(), keys);
     }
     return map;
 }