Exemple #1
0
bool
mainwnd::on_key_press_event(GdkEventKey* a_ev)
{

    if( m_entry_notes->has_focus()){
        m_entry_notes->event( (GdkEvent*) a_ev );
        return false;
    }
    else
    {
        if ( a_ev->type == GDK_KEY_PRESS ){

            if ( global_print_keys ){
                printf( "key_press[%d]\n", a_ev->keyval ); 
            }
            
            if ( a_ev->keyval == m_mainperf->m_key_bpm_dn ){
                m_mainperf->set_bpm( m_mainperf->get_bpm() - 1 );  
                m_adjust_bpm->set_value(  m_mainperf->get_bpm() );
            }
            
            if ( a_ev->keyval ==  m_mainperf->m_key_bpm_up ){
                m_mainperf->set_bpm( m_mainperf->get_bpm() + 1 );   
                m_adjust_bpm->set_value(  m_mainperf->get_bpm() );
            }
            
            if ( a_ev->keyval == m_mainperf->m_key_replace )
            {
                m_mainperf->set_sequence_control_status( c_status_replace );
            }
            
            if (a_ev->keyval ==  m_mainperf->m_key_queue )
            {
                m_mainperf->set_sequence_control_status( c_status_queue );
            }
            
            if ( a_ev->keyval == m_mainperf->m_key_snapshot_1 ||
                 a_ev->keyval == m_mainperf->m_key_snapshot_2 )
            {
                m_mainperf->set_sequence_control_status( c_status_snapshot );
            }
            
            if ( a_ev->keyval == m_mainperf->m_key_screenset_dn ){

                m_mainperf->set_screenset(  m_mainperf->get_screenset() - 1 );  
                m_main_wid->set_screenset(  m_mainperf->get_screenset() );  
                m_adjust_ss->set_value( m_mainperf->get_screenset()  );	
                m_entry_notes->set_text( * m_mainperf->get_screen_set_notepad(m_mainperf->get_screenset()  )); 
            }
            
            if ( a_ev->keyval == m_mainperf->m_key_screenset_up ){

                m_mainperf->set_screenset(  m_mainperf->get_screenset() + 1 );  
                m_main_wid->set_screenset(  m_mainperf->get_screenset() );  
                m_adjust_ss->set_value( m_mainperf->get_screenset()  );	
                m_entry_notes->set_text( * m_mainperf->get_screen_set_notepad(m_mainperf->get_screenset()  )); 
            }
            
            if ( a_ev->keyval == m_mainperf->m_key_start )
            {
                start_playing();            
            }

            if ( a_ev->keyval == m_mainperf->m_key_stop )
            {
                stop_playing();            
            }


            if( m_mainperf->get_key_events()->count( a_ev->keyval) != 0 ){
                
                sequence_key(  (*m_mainperf->get_key_events())[a_ev->keyval] );
            }
        }
    }
    
    return false;
}
Exemple #2
0
bool
mainwnd::on_key_press_event(GdkEventKey* a_ev)
{
    Gtk::Window::on_key_press_event(a_ev);

    // control and modifier key combinations matching
    if ( a_ev->type == GDK_KEY_PRESS ){

        if ( global_print_keys ){
            printf( "key_press[%d]\n", a_ev->keyval );
            fflush( stdout );
        }

        if ( a_ev->keyval == m_mainperf->m_key_bpm_dn ){
            m_mainperf->set_bpm( m_mainperf->get_bpm() - 1 );
            m_adjust_bpm->set_value(  m_mainperf->get_bpm() );
        }

        if ( a_ev->keyval ==  m_mainperf->m_key_bpm_up ){
            m_mainperf->set_bpm( m_mainperf->get_bpm() + 1 );
            m_adjust_bpm->set_value(  m_mainperf->get_bpm() );
        }

        if ( a_ev->keyval == m_mainperf->m_key_replace )
        {
            m_mainperf->set_sequence_control_status( c_status_replace );
        }

        if ((a_ev->keyval ==  m_mainperf->m_key_queue )
                || (a_ev->keyval == m_mainperf->m_key_keep_queue ))
        {
            m_mainperf->set_sequence_control_status( c_status_queue );
        }

        if ( a_ev->keyval == m_mainperf->m_key_snapshot_1 ||
                a_ev->keyval == m_mainperf->m_key_snapshot_2 )
        {
            m_mainperf->set_sequence_control_status( c_status_snapshot );
        }

        if ( a_ev->keyval == m_mainperf->m_key_screenset_dn ){

            m_mainperf->set_screenset(  m_mainperf->get_screenset() - 1 );
            m_main_wid->set_screenset(  m_mainperf->get_screenset() );
            m_adjust_ss->set_value( m_mainperf->get_screenset()  );
            m_entry_notes->set_text(*m_mainperf->get_screen_set_notepad(
                        m_mainperf->get_screenset()));
        }

        if ( a_ev->keyval == m_mainperf->m_key_screenset_up ){

            m_mainperf->set_screenset(  m_mainperf->get_screenset() + 1 );
            m_main_wid->set_screenset(  m_mainperf->get_screenset() );
            m_adjust_ss->set_value( m_mainperf->get_screenset()  );
            m_entry_notes->set_text(*m_mainperf->get_screen_set_notepad(
                        m_mainperf->get_screenset()));
        }

        if ( a_ev->keyval == m_mainperf->m_key_set_playing_screenset ){
            m_mainperf->set_playing_screenset();
        }

        if ( a_ev->keyval == m_mainperf->m_key_group_on ){
            m_mainperf->set_mode_group_mute();
        }

        if ( a_ev->keyval == m_mainperf->m_key_group_off ){
            m_mainperf->unset_mode_group_mute();
        }

        if ( a_ev->keyval == m_mainperf->m_key_group_learn ){
            m_mainperf->set_mode_group_learn();
        }

        // activate mute group key
        if (m_mainperf->get_key_groups()->count( a_ev->keyval ) != 0 )
        {
            m_mainperf->select_and_mute_group(
                    m_mainperf->lookup_keygroup_group(a_ev->keyval));
        }

        // mute group learn
        if (m_mainperf->is_learn_mode() &&
                a_ev->keyval != m_mainperf->m_key_group_learn)
        {
            if( m_mainperf->get_key_groups()->count( a_ev->keyval ) != 0 )
            {
                std::ostringstream os;
                os << "Key \""
                    << gdk_keyval_name(a_ev->keyval)
                    << "\" (code = "
                    << a_ev->keyval
                    << ") successfully mapped.";

                Gtk::MessageDialog dialog(*this,
                        "MIDI mute group learn success", false,
                        Gtk::MESSAGE_INFO, Gtk::BUTTONS_OK, true);
                dialog.set_secondary_text(os.str(), false);
                dialog.run();

                // we miss the keyup msg for learn, force set it off
                m_mainperf->unset_mode_group_learn();
            }
            else
            {
                std::ostringstream os;
                os << "Key \""
                    << gdk_keyval_name(a_ev->keyval)
                    << "\" (code = "
                    << a_ev->keyval
                    << ") is not one of the configured mute-group keys.\n"
                    << "To change this see File/Options menu or .seq24rc";

                Gtk::MessageDialog dialog(*this,
                        "MIDI mute group learn failed", false,
                        Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);

                dialog.set_secondary_text(os.str(), false);
                dialog.run();
                // we miss the keyup msg for learn, force set it
                m_mainperf->unset_mode_group_learn();
            }
        }

        // the start/end key may be the same key (i.e. SPACE)
        // allow toggling when the same key is mapped to both
        // triggers (i.e. SPACEBAR)

        /* dont_toggle is true IF start/end keys are different*/
        bool dont_toggle = m_mainperf->m_key_start != m_mainperf->m_key_stop;

        printf("=====================\nMAINWND:\ndon't toggle is %d\nm_key_start is %d\nm_key_stop is %d\n",dont_toggle,m_mainperf->m_key_start,m_mainperf->m_key_stop);
        printf("keyvl = %d\nis_pattern_plying is %d\n",a_ev->keyval,is_pattern_playing);

        if ( a_ev->keyval == m_mainperf->m_key_start
                && (dont_toggle || !is_pattern_playing))
        {
        	printf("calling start_playing\n");
            start_playing();
        	printf("=====================\n");
        }
        else if ( a_ev->keyval == m_mainperf->m_key_stop
                && (dont_toggle || is_pattern_playing))
        {
            stop_playing();
        }

        /* toggle sequence mute/unmute using keyboard keys... */
        if (m_mainperf->get_key_events()->count( a_ev->keyval) != 0)
        {
            sequence_key(m_mainperf->lookup_keyevent_seq( a_ev->keyval));
        }

        if(m_mainperf->get_setlist_mode()){
        	printf("Setlist mode is true, m_key_leftarrow = %d, as an int = %d\n",m_mainperf->m_key_leftarrow,(int) m_mainperf->m_key_leftarrow);
            if ( a_ev->keyval == m_mainperf->m_key_leftarrow ){
            	//printf("left arrow pressed\n");
            	setlist_jump(-1);
            }
            if ( a_ev->keyval == m_mainperf->m_key_rightarrow ){
            	//printf("right arrow pressed\n");
            	setlist_jump(1);
            }
        }
        else{
        	printf("Setlist mode is false\n");
        }
    }
    return false;
}