onButton* works on any control that capture general mouse events, such as map controls. action is specifically for button type controls and should be what you use for buttons, if only because then you can use ctrlActivate to force the button pressed via a script (not saying you want to use ctrlActivate, but...).