switch controllers with programmable macros