try just removing all PLATFORM_WINDOWS conditionals in ipmidi code to see if it will...
[ardour.git] / libs / surfaces / mackie / mcp_buttons.cc
index 269d964423e1e2aff4c1a10b2f645f8e9c2113e2..6885acc97e244781ab0a65fb38e875f97a2a69b6 100644 (file)
@@ -34,7 +34,7 @@
 #include "i18n.h"
 
 /* handlers for all buttons, broken into a separate file to avoid clutter in
- * mackie_control_protocol.cc 
+ * mackie_control_protocol.cc
  */
 
 using std::string;
@@ -53,7 +53,7 @@ LedState
 MackieControlProtocol::shift_release (Button &)
 {
        _modifier_state &= ~MODIFIER_SHIFT;
-       return on;
+       return off;
 }
 LedState
 MackieControlProtocol::option_press (Button &)
@@ -65,7 +65,7 @@ LedState
 MackieControlProtocol::option_release (Button &)
 {
        _modifier_state &= ~MODIFIER_OPTION;
-       return on;
+       return off;
 }
 LedState
 MackieControlProtocol::control_press (Button &)
@@ -79,7 +79,7 @@ MackieControlProtocol::control_release (Button &)
 {
        _modifier_state &= ~MODIFIER_CONTROL;
        DEBUG_TRACE (DEBUG::MackieControl, string_compose ("CONTROL Release: modifier state now set to %1\n", _modifier_state));
-       return on;
+       return off;
 }
 LedState
 MackieControlProtocol::cmd_alt_press (Button &)
@@ -91,14 +91,14 @@ LedState
 MackieControlProtocol::cmd_alt_release (Button &)
 {
        _modifier_state &= ~MODIFIER_CMDALT;
-       return on;
+       return off;
 }
 
-LedState 
+LedState
 MackieControlProtocol::left_press (Button &)
 {
        Sorted sorted = get_sorted_routes();
-       uint32_t strip_cnt = n_strips (); 
+       uint32_t strip_cnt = n_strips ();
 
        DEBUG_TRACE (DEBUG::MackieControl, string_compose ("bank left with current initial = %1 nstrips = %2 tracks/busses = %3\n",
                                                           _current_initial_bank, strip_cnt, sorted.size()));
@@ -112,13 +112,13 @@ MackieControlProtocol::left_press (Button &)
        return on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::left_release (Button &)
 {
        return off;
 }
 
-LedState 
+LedState
 MackieControlProtocol::right_press (Button &)
 {
        Sorted sorted = get_sorted_routes();
@@ -141,10 +141,10 @@ MackieControlProtocol::right_press (Button &)
        return on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::right_release (Button &)
 {
-       if (_zoom_mode) {
+       if (zoom_mode()) {
 
        }
 
@@ -154,20 +154,20 @@ MackieControlProtocol::right_release (Button &)
 LedState
 MackieControlProtocol::cursor_left_press (Button& )
 {
-       if (_zoom_mode) {
+       if (zoom_mode()) {
 
-               if (_modifier_state & MODIFIER_OPTION) {
+               if (main_modifier_state() & MODIFIER_OPTION) {
                        /* reset selected tracks to default vertical zoom */
                } else {
                        ZoomOut (); /* EMIT SIGNAL */
                }
        } else {
                float page_fraction;
-               if (_modifier_state == MODIFIER_CONTROL) {
+               if (main_modifier_state() == MODIFIER_CONTROL) {
                        page_fraction = 1.0;
-               } else if (_modifier_state == MODIFIER_OPTION) {
+               } else if (main_modifier_state() == MODIFIER_OPTION) {
                        page_fraction = 0.1;
-               } else if (_modifier_state == MODIFIER_SHIFT) {
+               } else if (main_modifier_state() == MODIFIER_SHIFT) {
                        page_fraction = 2.0;
                } else {
                        page_fraction = 0.25;
@@ -188,20 +188,20 @@ MackieControlProtocol::cursor_left_release (Button&)
 LedState
 MackieControlProtocol::cursor_right_press (Button& )
 {
-       if (_zoom_mode) {
-               
-               if (_modifier_state & MODIFIER_OPTION) {
+       if (zoom_mode()) {
+
+               if (main_modifier_state() & MODIFIER_OPTION) {
                        /* reset selected tracks to default vertical zoom */
                } else {
                        ZoomIn (); /* EMIT SIGNAL */
                }
        } else {
                float page_fraction;
-               if (_modifier_state == MODIFIER_CONTROL) {
+               if (main_modifier_state() == MODIFIER_CONTROL) {
                        page_fraction = 1.0;
-               } else if (_modifier_state == MODIFIER_OPTION) {
+               } else if (main_modifier_state() == MODIFIER_OPTION) {
                        page_fraction = 0.1;
-               } else if (_modifier_state == MODIFIER_SHIFT) {
+               } else if (main_modifier_state() == MODIFIER_SHIFT) {
                        page_fraction = 2.0;
                } else {
                        page_fraction = 0.25;
@@ -209,7 +209,7 @@ MackieControlProtocol::cursor_right_press (Button& )
 
                ScrollTimeline (page_fraction);
        }
-                       
+
        return off;
 }
 
@@ -222,9 +222,9 @@ MackieControlProtocol::cursor_right_release (Button&)
 LedState
 MackieControlProtocol::cursor_up_press (Button&)
 {
-       if (_zoom_mode) {
-               
-               if (_modifier_state & MODIFIER_CONTROL) {
+       if (zoom_mode()) {
+
+               if (main_modifier_state() & MODIFIER_CONTROL) {
                        VerticalZoomInSelected (); /* EMIT SIGNAL */
                } else {
                        VerticalZoomInAll (); /* EMIT SIGNAL */
@@ -244,8 +244,8 @@ MackieControlProtocol::cursor_up_release (Button&)
 LedState
 MackieControlProtocol::cursor_down_press (Button&)
 {
-       if (_zoom_mode) {
-               if (_modifier_state & MODIFIER_OPTION) {
+       if (zoom_mode()) {
+               if (main_modifier_state() & MODIFIER_OPTION) {
                        VerticalZoomOutSelected (); /* EMIT SIGNAL */
                } else {
                        VerticalZoomOutAll (); /* EMIT SIGNAL */
@@ -262,7 +262,7 @@ MackieControlProtocol::cursor_down_release (Button&)
        return off;
 }
 
-LedState 
+LedState
 MackieControlProtocol::channel_left_press (Button &)
 {
        Sorted sorted = get_sorted_routes();
@@ -274,13 +274,13 @@ MackieControlProtocol::channel_left_press (Button &)
        }
 }
 
-LedState 
+LedState
 MackieControlProtocol::channel_left_release (Button &)
 {
        return off;
 }
 
-LedState 
+LedState
 MackieControlProtocol::channel_right_press (Button &)
 {
        Sorted sorted = get_sorted_routes();
@@ -292,35 +292,41 @@ MackieControlProtocol::channel_right_press (Button &)
        }
 }
 
-LedState 
+LedState
 MackieControlProtocol::channel_right_release (Button &)
 {
        return off;
 }
 
-Mackie::LedState 
+Mackie::LedState
 MackieControlProtocol::zoom_press (Mackie::Button &)
 {
-       _zoom_mode = !_zoom_mode;
-       return (_zoom_mode ? on : off);
+       return none;
 }
 
-Mackie::LedState 
+Mackie::LedState
 MackieControlProtocol::zoom_release (Mackie::Button &)
 {
-       return (_zoom_mode ? on : off);
+       if (_modifier_state & MODIFIER_ZOOM) {
+               _modifier_state &= ~MODIFIER_ZOOM;
+       } else {
+               _modifier_state |= MODIFIER_ZOOM;
+       }
+
+       return (zoom_mode() ? on : off);
 }
 
-Mackie::LedState 
+Mackie::LedState
 MackieControlProtocol::scrub_press (Mackie::Button &)
 {
        if (!surfaces.empty()) {
-               surfaces.front()->next_jog_mode ();
+               // surfaces.front()->next_jog_mode ();
+               _master_surface->next_jog_mode ();
        }
        return none;
 }
 
-Mackie::LedState 
+Mackie::LedState
 MackieControlProtocol::scrub_release (Mackie::Button &)
 {
        return none;
@@ -329,7 +335,7 @@ MackieControlProtocol::scrub_release (Mackie::Button &)
 LedState
 MackieControlProtocol::undo_press (Button&)
 {
-       if (_modifier_state & MODIFIER_SHIFT) {
+       if (main_modifier_state() & MODIFIER_SHIFT) {
                Redo(); /* EMIT SIGNAL */
        } else {
                Undo(); /* EMIT SIGNAL */
@@ -343,33 +349,33 @@ MackieControlProtocol::undo_release (Button&)
        return off;
 }
 
-LedState 
+LedState
 MackieControlProtocol::drop_press (Button &)
 {
        session->remove_last_capture();
        return on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::drop_release (Button &)
 {
        return off;
 }
 
-LedState 
+LedState
 MackieControlProtocol::save_press (Button &)
 {
        session->save_state ("");
        return on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::save_release (Button &)
 {
        return off;
 }
 
-LedState 
+LedState
 MackieControlProtocol::timecode_beats_press (Button &)
 {
        switch (_timecode_type) {
@@ -388,7 +394,7 @@ MackieControlProtocol::timecode_beats_press (Button &)
        return on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::timecode_beats_release (Button &)
 {
        return off;
@@ -397,7 +403,7 @@ MackieControlProtocol::timecode_beats_release (Button &)
 /////////////////////////////////////
 // Functions
 /////////////////////////////////////
-LedState 
+LedState
 MackieControlProtocol::marker_press (Button &)
 {
        string markername;
@@ -408,7 +414,7 @@ MackieControlProtocol::marker_press (Button &)
        return on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::marker_release (Button &)
 {
        return off;
@@ -418,20 +424,20 @@ MackieControlProtocol::marker_release (Button &)
 // Transport Buttons
 /////////////////////////////////////
 
-LedState 
+LedState
 MackieControlProtocol::stop_press (Button &)
 {
        transport_stop ();
        return on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::stop_release (Button &)
 {
        return session->transport_stopped();
 }
 
-LedState 
+LedState
 MackieControlProtocol::play_press (Button &)
 {
        /* if we're already rolling at normal speed, and we're pressed
@@ -442,29 +448,29 @@ MackieControlProtocol::play_press (Button &)
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::play_release (Button &)
 {
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::record_press (Button &)
 {
        rec_enable_toggle ();
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::record_release (Button &)
 {
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::rewind_press (Button &)
 {
-       if (_modifier_state == MODIFIER_CONTROL) {
+       if (main_modifier_state() == MODIFIER_CONTROL) {
                goto_start ();
        } else {
                rewind ();
@@ -472,16 +478,16 @@ MackieControlProtocol::rewind_press (Button &)
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::rewind_release (Button &)
 {
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::ffwd_press (Button &)
 {
-       if (_modifier_state == MODIFIER_CONTROL) {
+       if (main_modifier_state() == MODIFIER_CONTROL) {
                goto_end();
        } else {
                ffwd ();
@@ -489,31 +495,27 @@ MackieControlProtocol::ffwd_press (Button &)
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::ffwd_release (Button &)
 {
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::loop_press (Button &)
 {
-       if (_modifier_state & MODIFIER_CONTROL) {
-               set_view_mode (Loop);
-               return on;
-       } else {
-               session->request_play_loop (!session->get_play_loop());
-               return none;
-       }
+       bool was_on = session->get_play_loop();
+       session->request_play_loop (!was_on);
+       return was_on ? off : on;
 }
 
-LedState 
+LedState
 MackieControlProtocol::loop_release (Button &)
 {
        return none;
 }
 
-LedState 
+LedState
 MackieControlProtocol::clicking_press (Button &)
 {
        bool state = !Config->get_clicking();
@@ -521,7 +523,7 @@ MackieControlProtocol::clicking_press (Button &)
        return state;
 }
 
-LedState 
+LedState
 MackieControlProtocol::clicking_release (Button &)
 {
        return Config->get_clicking();
@@ -540,147 +542,165 @@ LedState MackieControlProtocol::global_solo_release (Button &)
 }
 
 LedState
-MackieControlProtocol::enter_press (Button &) 
-{ 
+MackieControlProtocol::enter_press (Button &)
+{
        Enter(); /* EMIT SIGNAL */
        return off;
 }
 
 LedState
-MackieControlProtocol::enter_release (Button &) 
-{ 
+MackieControlProtocol::enter_release (Button &)
+{
        return off;
 }
 
 LedState
-MackieControlProtocol::F1_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::bank_release (Button& b, uint32_t basic_bank_num)
+{
+       uint32_t bank_num = basic_bank_num;
+
+       if (b.long_press_count() > 0) {
+               bank_num = 8 + basic_bank_num;
+       }
+
+       switch_banks (n_strips() * bank_num);
+
+       return on;
 }
+
 LedState
-MackieControlProtocol::F1_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F1_press (Button &b)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F2_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F1_release (Button &b)
+{
+       return bank_release (b, 0);
 }
 LedState
-MackieControlProtocol::F2_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F2_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F3_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F2_release (Button &b)
+{
+       return bank_release (b, 1);
 }
 LedState
-MackieControlProtocol::F3_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F3_press (Button &)
+{
+       return off;
+}
+LedState
+MackieControlProtocol::F3_release (Button &b)
+{
+       return bank_release (b, 2);
 }
 LedState
-MackieControlProtocol::F4_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F4_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F4_release (Button &
-{ 
-       return off; 
+MackieControlProtocol::F4_release (Button &b)
+{
+       return bank_release (b, 3);
 }
 LedState
-MackieControlProtocol::F5_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F5_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F5_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F5_release (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F6_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F6_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F6_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F6_release (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F7_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F7_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F7_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F7_release (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::F8_press (Button &) 
-{ 
+MackieControlProtocol::F8_press (Button &)
+{
        CloseDialog (); /* EMIT SIGNAL */
-       return off; 
+       return off;
 }
 LedState
-MackieControlProtocol::F8_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::F8_release (Button &)
+{
+       return off;
 }
 
 /* UNIMPLEMENTED */
 
 LedState
-MackieControlProtocol::pan_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::pan_press (Button &)
+{
+       set_pot_mode (Pan);
+       return none;
 }
 LedState
-MackieControlProtocol::pan_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::pan_release (Button &)
+{
+       return none;
 }
 LedState
-MackieControlProtocol::plugin_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::plugin_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::plugin_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::plugin_release (Button &)
+{
+       set_view_mode (Plugins);
+       return none; /* LED state set by set_view_mode */
 }
 LedState
-MackieControlProtocol::eq_press (Button &) 
-{ 
-       set_view_mode (EQ);
-       return on;
+MackieControlProtocol::eq_press (Button &)
+{
+       //set_view_mode (EQ);
+       // not implemented yet, turn off (see comments for send button)
+       return off;
 }
 LedState
-MackieControlProtocol::eq_release (Button &) 
-{ 
+MackieControlProtocol::eq_release (Button &)
+{
        return none;
 }
 LedState
-MackieControlProtocol::dyn_press (Button &) 
-{ 
-       set_view_mode (Dynamics);
-       return on;
+MackieControlProtocol::dyn_press (Button &)
+{
+       //set_view_mode (Dynamics);
+       // same as send
+       return off;
 }
 LedState
-MackieControlProtocol::dyn_release (Button &) 
-{ 
+MackieControlProtocol::dyn_release (Button &)
+{
        return none;
 }
 LedState
-MackieControlProtocol::flip_press (Button &) 
-{ 
+MackieControlProtocol::flip_press (Button &)
+{
        if (_flip_mode != Normal) {
                set_flip_mode (Normal);
        } else {
@@ -689,61 +709,61 @@ MackieControlProtocol::flip_press (Button &)
        return ((_flip_mode != Normal) ? on : off);
 }
 LedState
-MackieControlProtocol::flip_release (Button &) 
-{ 
+MackieControlProtocol::flip_release (Button &)
+{
        return none;
 }
 LedState
-MackieControlProtocol::name_value_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::name_value_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::name_value_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::name_value_release (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::touch_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::touch_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::touch_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::touch_release (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::cancel_press (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::cancel_press (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::cancel_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::cancel_release (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::user_a_press (Button &) 
-{ 
+MackieControlProtocol::user_a_press (Button &)
+{
        transport_play (session->transport_speed() == 1.0);
-       return off; 
+       return off;
 }
 LedState
-MackieControlProtocol::user_a_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::user_a_release (Button &)
+{
+       return off;
 }
 LedState
-MackieControlProtocol::user_b_press (Button &) 
-{ 
+MackieControlProtocol::user_b_press (Button &)
+{
        transport_stop();
-       return off; 
+       return off;
 }
 LedState
-MackieControlProtocol::user_b_release (Button &) 
-{ 
-       return off; 
+MackieControlProtocol::user_b_release (Button &)
+{
+       return off;
 }
 
 LedState
@@ -751,7 +771,7 @@ MackieControlProtocol::master_fader_touch_press (Mackie::Button &)
 {
        DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::master_fader_touch_press\n");
 
-       Fader* master_fader = surfaces.front()->master_fader();
+       Fader* master_fader = _master_surface->master_fader();
 
        boost::shared_ptr<AutomationControl> ac = master_fader->control ();
 
@@ -765,7 +785,7 @@ MackieControlProtocol::master_fader_touch_release (Mackie::Button &)
 {
        DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::master_fader_touch_release\n");
 
-       Fader* master_fader = surfaces.front()->master_fader();
+       Fader* master_fader = _master_surface->master_fader();
 
        master_fader->set_in_use (false);
        master_fader->stop_touch (transport_frame(), true);
@@ -773,209 +793,213 @@ MackieControlProtocol::master_fader_touch_release (Mackie::Button &)
        return none;
 }
 
-Mackie::LedState 
-MackieControlProtocol::read_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::read_press (Mackie::Button&)
 {
        _metering_active = !_metering_active;
        notify_metering_state_changed ();
        return _metering_active;
 }
-Mackie::LedState 
-MackieControlProtocol::read_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::read_release (Mackie::Button&)
 {
        return _metering_active;
 }
-Mackie::LedState 
-MackieControlProtocol::write_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::write_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::write_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::write_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::clearsolo_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::clearsolo_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::clearsolo_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::clearsolo_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::track_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::track_press (Mackie::Button&)
 {
-
+       set_pot_mode (Trim);
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::track_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::track_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::send_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::send_press (Mackie::Button&)
 {
-// code moved here from "sends_press"
-       set_view_mode (Sends);
-       return on;
-//     return none;
+       set_pot_mode (Send);
+       return none;
 }
-Mackie::LedState 
-MackieControlProtocol::send_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::send_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::miditracks_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::miditracks_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::miditracks_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::miditracks_release (Mackie::Button&)
 {
+       set_view_mode (MidiTracks);
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::inputs_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::inputs_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::inputs_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::inputs_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::audiotracks_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::audiotracks_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::audiotracks_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::audiotracks_release (Mackie::Button&)
 {
+       set_view_mode (AudioTracks);
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::audioinstruments_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::audioinstruments_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::audioinstruments_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::audioinstruments_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::aux_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::aux_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::aux_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::aux_release (Mackie::Button&)
 {
+       set_view_mode (Auxes);
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::busses_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::busses_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::busses_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::busses_release (Mackie::Button&)
 {
+       set_view_mode (Busses);
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::outputs_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::outputs_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::outputs_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::outputs_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::user_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::user_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::user_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::user_release (Mackie::Button&)
 {
+       set_view_mode (Selected);
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::trim_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::trim_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::trim_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::trim_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::latch_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::latch_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::latch_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::latch_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::grp_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::grp_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::grp_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::grp_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::nudge_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::nudge_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::nudge_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::nudge_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::replace_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::replace_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::replace_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::replace_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::click_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::click_press (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::click_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::click_release (Mackie::Button&)
 {
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::view_press (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::view_press (Mackie::Button&)
 {
+       set_view_mode (Mixer);
        return none;
 }
-Mackie::LedState 
-MackieControlProtocol::view_release (Mackie::Button&) 
+Mackie::LedState
+MackieControlProtocol::view_release (Mackie::Button&)
 {
        return none;
 }