A couple of issues with the BCF2000 which probably apply to other control surfaces too.
1) If the contoller is disconnected or powered down (such as always seems to happen in chaotic temporary lighting setups!), QLC+ does not listen or send to it again until the input and feedback boxes respectively are unticked and re-ticked.
2) When in design mode, inputs from external controllers are ignored, so the controller can get out of sync with QLC+. When you switch to operate mode, re-synchronisation happens on a per-control basis as they are moved onscreen (sync to QLC+) or on the controller (sync to controller). Because you cannot move on-screen controls in design mode, I suggest that it would be nice if QLC+ resynchronised itself to the control surface rather than vice versa. However, I appreciate that this might be *hard* because the control surface only reports its values when controls are moved. I imagine a way round this would be to have something (in a separate thread?) listening to the contol surface all the time and maintaining a record of its state which is then dumped wholesale to the virtual console when you go into operate mode.
This might be a lot of work for a small gain - I appreciate that and am just throwing ideas around!