Hi, this utility would be really helpful.. I have built a new system using Windows 10 and found that it often shifts around usb devices. I tried preparing a configuration file, but I always get the following error when doing /Remap:
Unexpected problem encountered. System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.
   in ControllerRemap.ControllerEntries._Closure$__4._Lambda$__12(ControllerEntry j)
   in System.Linq.Enumerable.WhereListIterator`1.MoveNext()
   in System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   in ControllerRemap.ControllerEntries.get_InternalFindByID(String index, Boolean IgnoreInstance)
   in ControllerRemap.CFGFileMame.Scan()
   in ControllerRemap.CFGFiles.Scan()
   in ControllerRemap.Program.Main()
This is what I get when I list devices:
Joystick Device List (Devices are in enumeration order) ...
   1.  'ATRAK Device #1', ID=2
   2.  'Controller (XBOX 360 For Windows)', ID=4
   3.  'Ultimarc Ultra-Stik Player 2', ID=1
   4.  'UHID Gamepad Device #1', ID=3
   5.  'Ultimarc Ultra-Stik Player 1', ID=0
Mouse Device List (Devices are in enumeration order) ...
   1.  ''
   2.  'HID#VID_1241_PID_1111#7_36822904_0_0000#'
   3.  'HID#VID_D209_PID_0301_MI_01#9_a81f0c9_0_0000#'
   4.  'HID#VID_D209_PID_1501_MI_03_Col01#8_1fc8b79d_0_0000#'
   5.  'HID#VID_D209_PID_1501_MI_03_Col02#8_1fc8b79d_0_0001#'
   6.  'HID#VID_D209_PID_1601_MI_02#7_6f69e7b_0_0000#'
   7.  'HID#VID_D209_PID_0501_MI_01#8_3a7f8b52_0_0000#'
   8.  'HID#VID_046D_PID_C52B_MI_01_Col01#7_b4c835b_0_0000#'
   9.  'HID#VID_D209_PID_0502_MI_01#8_24588317_0_0000#'
   10.  ''
End of list
And this is the result of /save:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfControllerEntry xmlns:i="
http://www.w3.org/2001/XMLSchema-instance" xmlns="
http://schemas.datacontract.org/2004/07/ControllerRemap">
  <ControllerEntry>
    <DeviceID>2</DeviceID>
    <EnumerationPos>1</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>ATRAK Device #1</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>4</DeviceID>
    <EnumerationPos>2</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>Controller (XBOX 360 For Windows)</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>1</DeviceID>
    <EnumerationPos>3</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>Ultimarc Ultra-Stik Player 2</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>3</DeviceID>
    <EnumerationPos>4</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>UHID Gamepad Device #1</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>5</EnumerationPos>
    <IsJoystick>true</IsJoystick>
    <IsMouse>false</IsMouse>
    <Name>Ultimarc Ultra-Stik Player 1</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>10</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name i:nil="true" />
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>9</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_0502_MI_01#8_24588317_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>8</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_046D_PID_C52B_MI_01_Col01#7_b4c835b_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>7</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_0501_MI_01#8_3a7f8b52_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>6</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_1601_MI_02#7_6f69e7b_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>5</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_1501_MI_03_Col02#8_1fc8b79d_0_0001#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>4</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_1501_MI_03_Col01#8_1fc8b79d_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>3</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_D209_PID_0301_MI_01#9_a81f0c9_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>2</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name>HID#VID_1241_PID_1111#7_36822904_0_0000#</Name>
  </ControllerEntry>
  <ControllerEntry>
    <DeviceID>0</DeviceID>
    <EnumerationPos>1</EnumerationPos>
    <IsJoystick>false</IsJoystick>
    <IsMouse>true</IsMouse>
    <Name i:nil="true" />
  </ControllerEntry>
</ArrayOfControllerEntry>
My devices are all connected to a 7 port D-Link HUB; I suspect it is the source of two "empty" devices that I believe are confusing the enumeration. Any suggestion?
Thank you.