I very seriously doubt that users are switching WiFi networks so often that they need a dedicated button for it. Holding down MODE and tapping RESET takes maybe an extra second. Giving up an entire user accessible button to save that second just seems silly to me. In fact, it might even take the same amount of time or be faster when you think about it.
Right now you have to hold the MODE button for three seconds, but if the default RESET+MODE state is SmartConfig it should be almost instant. Once you let go of RESET just wait for that first blue pulse of the LED and you’re good to go!
I think the best way to go would be this: Move SmartConfig to the bootloader, then add a series of
#define statements that will allow a user to control the functionality of the button in their sketches. You say that you use SmartConfig all the time for testing, but with the current issues I’d rather have the MODE button directly reboot into DFU or Restore mode at times. This would solve that.
#define MODE_USER #define MODE_SMARTCONF #define MODE_DFU #define MODE_RESTORE
As it stands, it shouldn’t be hard to solder a wire onto one of the exposed MODE pads or even remove the switch all together. I like the idea of remapping it to one of the inputs, but you’d need a way to write that data into an area that was accessible from the bootloader, since it needs to know what port and pin to look for. This would also solve the issue of automatically going into JTAG or DFU mode without user interaction.