I have had no problem using the dbSetControlDevice command.
The game set I am working on is set to recognise available control devices (using dbPerformChecklistControlDevices). It allows the assignment of available device to joystick or wheel and then the calibration of the device.
The game play then allows dynamic selection of keyboard, joystick or wheel to the control device. (I might make some of these classes available in the future.)
The only problem I have run into is when I have two Logitech wheels connected at the same time. One is a Logitech Momo and the other is a Logitech Wingman. When both are connecte, dbPerformChecklistControlDevices recognises both, but when the Momo Wheel is selected with dbSetControlDevice, it's actions are not detected. It doesn't matter which USB ports they are connected to. The Wingman wheel works fine, no matter how many wheels are attached. The Momo wheel works fine if the other is not connected.
In either case, the joystick works fine.
Once the game is running, I can dynamically switch between keyboard, joystick and wheel control without any issues.
What does your code look like? If you dump the results from dbPerformChecklistControlDevices, does it show your device? Are you using the correct index (the first in the list is 1, which flies in the face of standard C array indexing)?
If it might help, I can try to extract the code that works.
Good Luck,
Ancient Lady
Cheers,
Ancient Lady