diff -rupN seq24-pristine/src/globals.h seq24/src/globals.h
--- seq24-pristine/src/globals.h	2009-06-10 20:56:01.218750000 -0500
+++ seq24/src/globals.h	2009-06-10 20:28:55.265625000 -0500
@@ -331,7 +331,4 @@ const char* const c_interaction_method_d
 
 extern interaction_method_e global_interactionmethod;
 
-// makes printable text from the given key
-// see seq24.cpp for implementation
-char* key2text( unsigned long int val );
 #endif
diff -rupN seq24-pristine/src/mainwnd.cpp seq24/src/mainwnd.cpp
--- seq24-pristine/src/mainwnd.cpp	2009-06-10 20:56:00.859375000 -0500
+++ seq24/src/mainwnd.cpp	2009-06-10 20:29:50.453125000 -0500
@@ -684,7 +684,8 @@ mainwnd::about_dialog( void )
     dialog.set_transient_for(*this);
     dialog.set_name(PACKAGE_NAME);
     dialog.set_version(PACKAGE_VERSION);
-    dialog.set_comments("Interactive MIDI Sequencer");
+    dialog.set_comments("Interactive MIDI Sequencer\n"
+                        VERSION);
 
     dialog.set_copyright(
             "(C) 2002 - 2006 Rob C. Buse\n"
@@ -854,7 +855,7 @@ mainwnd::on_key_press_event(GdkEventKey*
                 {
                     char buf[512];
                     sprintf( buf, "Midi Group Learn: Learned! key:%s (code:%d) "
-                                  "mapped", key2text( a_ev->keyval ), a_ev->keyval );
+                                  "mapped", gdk_keyval_name( a_ev->keyval ), a_ev->keyval );
                     Gtk::MessageDialog dialog(*this,
                            buf, false,
                            Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_OK, true);
@@ -869,7 +870,7 @@ mainwnd::on_key_press_event(GdkEventKey*
                     sprintf( buf, "Midi Group Learn: key:%s (code:%d) not "
                                   "one of the configured mute-group keys, to change "
                                   "see file/options menu or .seq24rc",
-                                  key2text( a_ev->keyval ), a_ev->keyval );
+                                  gdk_keyval_name( a_ev->keyval ), a_ev->keyval );
                     Gtk::MessageDialog errdialog(*this, buf, false,
                            Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
                     errdialog.run();
diff -rupN seq24-pristine/src/midibus_portmidi.cpp seq24/src/midibus_portmidi.cpp
--- seq24-pristine/src/midibus_portmidi.cpp	2009-06-10 20:56:01.359375000 -0500
+++ seq24/src/midibus_portmidi.cpp	2009-06-10 20:32:42.640625000 -0500
@@ -157,7 +157,7 @@ midibus::play( event *a_e24, unsigned ch
 
     event.message = Pm_Message(buffer[0], buffer[1], buffer[2]);
     
-    PmError err = Pm_Write( m_pms, &event, 1 );
+    /*PmError err = */Pm_Write( m_pms, &event, 1 );
 
     unlock();
 }
@@ -482,7 +482,7 @@ mastermidibus::flush()
 mastermidibus::mastermidibus()
 {
     /* temp return */
-    int ret;
+    //int ret;
     
     /* set initial number buses */
     m_num_out_buses = 0;
@@ -677,6 +677,7 @@ mastermidibus::get_midi_out_bus_name( in
 	if ( m_buses_out_active[a_bus] && a_bus < m_num_out_buses ){
 		return m_buses_out[a_bus]->get_name();
 	}
+	return "error...";
 }
 
 
@@ -686,6 +687,7 @@ mastermidibus::get_midi_in_bus_name( int
 	if ( m_buses_in_active[a_bus] && a_bus < m_num_in_buses ){
 		return m_buses_in[a_bus]->get_name();
 	}
+	return "error...";
 }
 
 
@@ -715,7 +717,7 @@ mastermidibus::get_num_in_buses()
 int
 mastermidibus::poll_for_midi( )
 {
-    int ret = 0;
+    //int ret = 0;
 
     while(1)
     {
diff -rupN seq24-pristine/src/options.cpp seq24/src/options.cpp
--- seq24-pristine/src/options.cpp	2009-06-10 20:56:01.421875000 -0500
+++ seq24/src/options.cpp	2009-06-10 20:37:37.828125000 -0500
@@ -68,14 +68,14 @@ public:
     void set( unsigned int val )
     {
         char buf[256] = "";
-        char* special = key2text( val );
+        char* special = gdk_keyval_name( val );
         if (special)
-            sprintf( &buf[strlen(buf)], "%s ", special );
+            sprintf( &buf[strlen(buf)], "%s", special );
         else
-            sprintf( &buf[strlen(buf)], "'%c' ", (char)val );
-        sprintf( &buf[strlen(buf)], "(%u)", val );
+            sprintf( &buf[strlen(buf)], "'%c'", (char)val );
         set_text( buf );
-        set_width_chars( strlen(buf)-3 );
+        int width = strlen(buf)-1;
+        set_width_chars( 1 <= width ? width : 1 );
     }
 
     virtual bool on_key_press_event(GdkEventKey* event)
@@ -234,130 +234,124 @@ options::options (Gtk::Window & parent, 
         vbox->pack_start (*check, false, false);
     }
 
- 
-     // KeyBoard keybinding setup (editor for .seq24rc keybindings.
-     vbox = manage (new VBox ());
-     m_notebook->pages ().push_back (Notebook_Helpers::TabElem (*vbox, "Keyboard"));
-     {
-         Label* label;
-         KeyBindEntry* entry;
-         HBox *hbox;
- 
-         #define AddKey(text, integer) \
-             label = manage (new Label( text )); \
-             hbox->pack_start (*label, false, false, 4); \
-             entry = manage (new KeyBindEntry( KeyBindEntry::location, &integer )); \
-             hbox->pack_start (*entry, false, false, 4);
-         #define AddKeyL(text) \
-             label = manage (new Label( text )); \
-             hbox->pack_start (*label, false, false, 4);
-         #define AddKeyM(text, type, slot) \
-             label = manage (new Label( text )); \
-             hbox->pack_start (*label, false, false, 4); \
-             entry = manage (new KeyBindEntry( type, NULL, m_perf, slot )); \
-             hbox->pack_start (*entry, false, false, 4);
- 
-         hbox = manage (new HBox ());
-         check = manage (new CheckButton ("show key labels on sequences", 0));
-         check->signal_toggled ().
-             connect (bind (mem_fun (*this, &options::input_callback), (int)e_keylabelsonsequence, check));
-         check->set_active (m_perf->m_show_ui_sequence_key);
-         vbox->pack_start (*check, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKey( "stop:", m_perf->m_key_stop );
-         AddKey( "start:", m_perf->m_key_start );
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKey( "bpm dn:", m_perf->m_key_bpm_dn );
-         AddKey( "bpm up:", m_perf->m_key_bpm_up );
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKey( "snpsht1:", m_perf->m_key_snapshot_1 );
-         AddKey( "snpsht2:", m_perf->m_key_snapshot_2 );
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKey( "replace:", m_perf->m_key_replace );
-         AddKey( "queue:", m_perf->m_key_queue );
-         AddKey( "keep queue:", m_perf->m_key_keep_queue );
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKey( "scrnset dn:", m_perf->m_key_screenset_dn );
-         AddKey( "scrnset up:", m_perf->m_key_screenset_up );
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKey( "set plying scrnset:", m_perf->m_key_set_playing_screenset );
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKeyL( "sequence toggle keys >>" );
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         std::map<unsigned int, long>::const_iterator it;
-         int x = 0;
-
-         for (int ss = 0; ss < 32; ++ss)
-         {
-             int s = (ss%8) * 4 + ss/8; // count this way... 0,4,8,16...
-             // FIXME: keycode is not used
-             unsigned int keycode = m_perf->lookup_keyevent_key( s );
-             char buf[16];
-             sprintf( buf, "%d", s );
-             AddKeyM( buf, KeyBindEntry::events, s );
-             ++x;
-             if (x == 8)
-             {
-                 vbox->pack_start (*hbox, false, false);
-                 hbox = manage (new HBox ());
-                 x = 0;
-             }
-         }
-         vbox->pack_start (*hbox, false, false);
-         
-         hbox = manage (new HBox ());
-         AddKeyL( "mute-group slots >>" );
-         vbox->pack_start (*hbox, false, false);
-         
-         hbox = manage (new HBox ());
-         x = 0;
-
-         for (int s = 0; s < 32; ++s)
-         {
-             // FIXME: keycode is not used
-             unsigned int keycode = m_perf->lookup_keygroup_key( s );
-             char buf[16];
-             sprintf( buf, "%d", s );
-             AddKeyM( buf, KeyBindEntry::groups, s );
-             ++x;
-             if (x == 8)
-             {
-                 vbox->pack_start (*hbox, false, false);
-                 hbox = manage (new HBox ());
-                 x = 0;
-             }
-         }
-         vbox->pack_start (*hbox, false, false);
- 
-         hbox = manage (new HBox ());
-         AddKey( "learn (while pressing a mute-group key):",
-                 m_perf->m_key_group_learn );
-         AddKey( "disable:", m_perf->m_key_group_off );
-         AddKey( "enable:", m_perf->m_key_group_on );
-         vbox->pack_start (*hbox, false, false);
-         
-         #undef AddKeyL
-         #undef AddKey
-     }
- 
+    // KeyBoard keybinding setup (editor for .seq24rc keybindings.
+    vbox = manage (new VBox ());
+    m_notebook->pages ().push_back (Notebook_Helpers::TabElem (*vbox, "Keyboard"));
+    {
+        Label* label;
+        KeyBindEntry* entry;
+        HBox *hbox;
+
+        #define AddKey(text, integer) \
+            label = manage (new Label( text )); \
+            hbox->pack_start (*label, false, false, 4); \
+            entry = manage (new KeyBindEntry( KeyBindEntry::location, &integer )); \
+            hbox->pack_start (*entry, false, false, 4);
+        #define AddKeyL(text) \
+            label = manage (new Label( text )); \
+            hbox->pack_start (*label, false, false, 4);
+        #define AddKeyM(text, type, slot) \
+            label = manage (new Label( text )); \
+            hbox->pack_start (*label, false, false, 4); \
+            entry = manage (new KeyBindEntry( type, NULL, m_perf, slot )); \
+            hbox->pack_start (*entry, false, false, 4);
+
+        hbox = manage (new HBox ());
+        check = manage (new CheckButton ("show key labels on sequences", 0));
+        check->signal_toggled ().
+            connect (bind (mem_fun (*this, &options::input_callback), (int)e_keylabelsonsequence, check));
+        check->set_active (m_perf->m_show_ui_sequence_key);
+        vbox->pack_start (*check, false, false);
+
+        hbox = manage (new HBox ());
+        AddKey( "stop:", m_perf->m_key_stop );
+        AddKey( "start:", m_perf->m_key_start );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKey( "bpm dn:", m_perf->m_key_bpm_dn );
+        AddKey( "bpm up:", m_perf->m_key_bpm_up );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKey( "snpsht1:", m_perf->m_key_snapshot_1 );
+        AddKey( "snpsht2:", m_perf->m_key_snapshot_2 );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKey( "replace:", m_perf->m_key_replace );
+        AddKey( "queue:", m_perf->m_key_queue );
+        AddKey( "keep queue:", m_perf->m_key_keep_queue );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKey( "scrnset dn:", m_perf->m_key_screenset_dn );
+        AddKey( "scrnset up:", m_perf->m_key_screenset_up );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKey( "set plying scrnset:", m_perf->m_key_set_playing_screenset );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKeyL( "sequence toggle keys >>" );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        std::map<unsigned int, long>::const_iterator it;
+        int x = 0;
+        for (int ss = 0; ss < 32; ++ss)
+        {
+            int s = (ss%8) * 4 + ss/8; // count this way... 0,4,8,16...
+            //unsigned int keycode = m_perf->lookup_keyevent_key( s );
+            char buf[16];
+            sprintf( buf, "%d", s );
+            AddKeyM( buf, KeyBindEntry::events, s );
+            ++x;
+            if (x == 8)
+            {
+                vbox->pack_start (*hbox, false, false);
+                hbox = manage (new HBox ());
+                x = 0;
+            }
+        }
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKeyL( "mute-group slots >>" );
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        x = 0;
+        for (int s = 0; s < 32; ++s)
+        {
+            //unsigned int keycode = m_perf->lookup_keygroup_key( s );
+            char buf[16];
+            sprintf( buf, "%d", s );
+            AddKeyM( buf, KeyBindEntry::groups, s );
+            ++x;
+            if (x == 8)
+            {
+                vbox->pack_start (*hbox, false, false);
+                hbox = manage (new HBox ());
+                x = 0;
+            }
+        }
+        vbox->pack_start (*hbox, false, false);
+
+        hbox = manage (new HBox ());
+        AddKey( "learn (while pressing a mute-group key):", m_perf->m_key_group_learn );
+        AddKey( "disable:", m_perf->m_key_group_off );
+        AddKey( "enable:", m_perf->m_key_group_on );
+        vbox->pack_start (*hbox, false, false);
+
+        #undef AddKeyL
+        #undef AddKey
+    }
+
     // Jack
 #ifdef JACK_SUPPORT
     VBox *vbox2 = manage (new VBox ());
diff -rupN seq24-pristine/src/optionsfile.cpp seq24/src/optionsfile.cpp
--- seq24-pristine/src/optionsfile.cpp	2009-06-10 20:56:01.281250000 -0500
+++ seq24/src/optionsfile.cpp	2009-06-10 20:39:01.656250000 -0500
@@ -67,22 +67,22 @@ optionsfile::parse( perform *a_perf )
                 
                 &sequence,
                 
-                &a_perf->get_midi_control_toggle(i)->m_active,
-                &a_perf->get_midi_control_toggle(i)->m_inverse_active,
+                (int*)&a_perf->get_midi_control_toggle(i)->m_active,
+                (int*)&a_perf->get_midi_control_toggle(i)->m_inverse_active,
                 &a_perf->get_midi_control_toggle(i)->m_status,
                 &a_perf->get_midi_control_toggle(i)->m_data,
                 &a_perf->get_midi_control_toggle(i)->m_min_value,
                 &a_perf->get_midi_control_toggle(i)->m_max_value,
                 
-                &a_perf->get_midi_control_on(i)->m_active,
-                &a_perf->get_midi_control_on(i)->m_inverse_active,
+                (int*)&a_perf->get_midi_control_on(i)->m_active,
+                (int*)&a_perf->get_midi_control_on(i)->m_inverse_active,
                 &a_perf->get_midi_control_on(i)->m_status,
                 &a_perf->get_midi_control_on(i)->m_data,
                 &a_perf->get_midi_control_on(i)->m_min_value,
                 &a_perf->get_midi_control_on(i)->m_max_value,
                 
-                &a_perf->get_midi_control_off(i)->m_active,
-                &a_perf->get_midi_control_off(i)->m_inverse_active,
+                (int*)&a_perf->get_midi_control_off(i)->m_active,
+                (int*)&a_perf->get_midi_control_off(i)->m_inverse_active,
                 &a_perf->get_midi_control_off(i)->m_status,
                 &a_perf->get_midi_control_off(i)->m_data,
                 &a_perf->get_midi_control_off(i)->m_min_value,
@@ -190,11 +190,11 @@ optionsfile::parse( perform *a_perf )
             &a_perf->m_key_keep_queue);
 
     next_data_line( &file );
-    sscanf( m_line, "%ld", &a_perf->m_show_ui_sequence_key );
+    sscanf( m_line, "%d", (int*)&a_perf->m_show_ui_sequence_key );
     next_data_line( &file );
-    sscanf( m_line, "%ld", &a_perf->m_key_start );
+    sscanf( m_line, "%u", &a_perf->m_key_start );
     next_data_line( &file );
-    sscanf( m_line, "%ld", &a_perf->m_key_stop );
+    sscanf( m_line, "%u", &a_perf->m_key_stop );
 
     line_after( &file, "[jack-transport]" );
     long flag = 0;
@@ -418,48 +418,48 @@ optionsfile::write( perform *a_perf  )
 
     file << "\n\n\n[keyboard-control]\n";
     file << "# Key #, Sequence # \n";
-    file << (a_perf->key_events.size() < c_seqs_in_set ?
-             a_perf->key_events.size() : c_seqs_in_set) << "\n";
+    file << (a_perf->key_events.size() < (size_t)c_seqs_in_set ?
+             a_perf->key_events.size() : (size_t)c_seqs_in_set) << "\n";
 
     for( std::map<unsigned int,long>::const_iterator i = a_perf->key_events.begin();
          i != a_perf->key_events.end(); ++i ){
         
-        sprintf( outs, "%ld  %ld        # %s", i->first, i->second, key2text( i->first ) );
+        sprintf( outs, "%u  %ld        # %s", i->first, i->second, gdk_keyval_name( i->first ) );
         file << string(outs) << "\n";
     }
     file << "\n\n\n[keyboard-group]\n";
     file << "# Key #, group # \n";
-    file << (a_perf->key_groups.size() < c_seqs_in_set ?
-             a_perf->key_groups.size() : c_seqs_in_set) << "\n";
+    file << (a_perf->key_groups.size() < (size_t)c_seqs_in_set ?
+             a_perf->key_groups.size() : (size_t)c_seqs_in_set) << "\n";
 
     for( std::map<unsigned int,long>::const_iterator i = a_perf->key_groups.begin();
          i != a_perf->key_groups.end(); ++i ){
        
-        sprintf( outs, "%ld  %ld        # %s", i->first, i->second, key2text(i->first) );
+        sprintf( outs, "%u  %ld        # %s", i->first, i->second, gdk_keyval_name(i->first) );
         file << string(outs) << "\n";
     }
 
     file << "# bpm up, down\n"
          << a_perf->m_key_bpm_up << " "
          << a_perf->m_key_bpm_dn << "        # "
-         << key2text( a_perf->m_key_bpm_up ) << " "
-         << key2text( a_perf->m_key_bpm_dn ) << "\n";
+         << gdk_keyval_name( a_perf->m_key_bpm_up ) << " "
+         << gdk_keyval_name( a_perf->m_key_bpm_dn ) << "\n";
 
     file << "# screen set up, down, play\n"
          << a_perf->m_key_screenset_up << " "
          << a_perf->m_key_screenset_dn << " "
          << a_perf->m_key_set_playing_screenset << "        # "
-         << key2text( a_perf->m_key_screenset_up ) << " "
-         << key2text( a_perf->m_key_screenset_dn ) << " "
-         << key2text( a_perf->m_key_set_playing_screenset ) << "\n";
+         << gdk_keyval_name( a_perf->m_key_screenset_up ) << " "
+         << gdk_keyval_name( a_perf->m_key_screenset_dn ) << " "
+         << gdk_keyval_name( a_perf->m_key_set_playing_screenset ) << "\n";
 
     file << "# group on, off, learn\n"
          << a_perf->m_key_group_on << " "
          << a_perf->m_key_group_off << " "
          << a_perf->m_key_group_learn << "        # "
-         << key2text( a_perf->m_key_group_on ) << " "
-         << key2text( a_perf->m_key_group_off ) << " "
-         << key2text( a_perf->m_key_group_learn ) << "\n";
+         << gdk_keyval_name( a_perf->m_key_group_on ) << " "
+         << gdk_keyval_name( a_perf->m_key_group_off ) << " "
+         << gdk_keyval_name( a_perf->m_key_group_learn ) << "\n";
    
     file << "# replace, queue, snapshot_1, snapshot 2, keep queue\n" 
          << a_perf->m_key_replace << " "
@@ -467,19 +467,19 @@ optionsfile::write( perform *a_perf  )
          << a_perf->m_key_snapshot_1 << " "
          << a_perf->m_key_snapshot_2 << " "
          << a_perf->m_key_keep_queue << "        # "
-         << key2text( a_perf->m_key_replace ) << " "
-         << key2text( a_perf->m_key_queue ) << " "
-         << key2text( a_perf->m_key_snapshot_1 ) << " "
-         << key2text( a_perf->m_key_snapshot_2 ) << " "
-         << key2text( a_perf->m_key_keep_queue ) << "\n";
+         << gdk_keyval_name( a_perf->m_key_replace ) << " "
+         << gdk_keyval_name( a_perf->m_key_queue ) << " "
+         << gdk_keyval_name( a_perf->m_key_snapshot_1 ) << " "
+         << gdk_keyval_name( a_perf->m_key_snapshot_2 ) << " "
+         << gdk_keyval_name( a_perf->m_key_keep_queue ) << "\n";
 
     file << a_perf->m_show_ui_sequence_key
          << "        # show_ui_sequence_key (1=true/0=false)\n";
     file << a_perf->m_key_start << "        # "
-         << key2text( a_perf->m_key_start )
+         << gdk_keyval_name( a_perf->m_key_start )
          << " start sequencer\n";
     file << a_perf->m_key_stop << "        # "
-         << key2text( a_perf->m_key_stop )
+         << gdk_keyval_name( a_perf->m_key_stop )
          << " stop sequencer\n";
 
     file << "\n\n\n[jack-transport]\n\n"
diff -rupN seq24-pristine/src/perfedit.cpp seq24/src/perfedit.cpp
--- seq24-pristine/src/perfedit.cpp	2009-06-10 20:56:01.046875000 -0500
+++ seq24/src/perfedit.cpp	2009-06-10 20:39:09.453125000 -0500
@@ -260,7 +260,7 @@ perfedit::on_key_press_event(GdkEventKey
     if ( a_ev->type == GDK_KEY_PRESS ){
 
         if ( global_print_keys ){
-            printf( "key_press[%d] == %s\n", a_ev->keyval, key2text( a_ev->keyval ) );
+            printf( "key_press[%d] == %s\n", a_ev->keyval, gdk_keyval_name( a_ev->keyval ) );
         }
         // 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)
diff -rupN seq24-pristine/src/perform.cpp seq24/src/perform.cpp
--- seq24-pristine/src/perform.cpp	2009-06-10 20:56:01.562500000 -0500
+++ seq24/src/perform.cpp	2009-06-10 20:39:48.562500000 -0500
@@ -101,39 +101,40 @@ perform::perform()
     set_key_event( GDK_i, 29 );
     set_key_event( GDK_k, 30 );
     set_key_event( GDK_comma, 31 );
-    set_key_group( 33, 0 );
-    set_key_group( 34, 1 );
-    set_key_group( 163, 2 );
-    set_key_group( 36, 3 );
-    set_key_group( 37, 4 );
-    set_key_group( 38, 5 );
-    set_key_group( 47, 6 );
-    set_key_group( 40, 7 );
-    set_key_group( 81, 8 );
-    set_key_group( 87, 9 );
-    set_key_group( 69, 10 );
-    set_key_group( 82, 11 );
-    set_key_group( 84, 12 );
-    set_key_group( 89, 13 );
-    set_key_group( 85, 14 );
-    set_key_group( 73, 15 );
-    set_key_group( 65, 16 );
-    set_key_group( 83, 17 );
-    set_key_group( 68, 18 );
-    set_key_group( 70, 19 );
-    set_key_group( 71, 20 );
-    set_key_group( 72, 21 );
-    set_key_group( 74, 22 );
-    set_key_group( 75, 23 );
-    set_key_group( 90, 24 );
-    set_key_group( 88, 25 );
-    set_key_group( 67, 26 );
-    set_key_group( 86, 27 );
-    set_key_group( 66, 28 );
-    set_key_group( 78, 29 );
-    set_key_group( 77, 30 );
-    set_key_group( 59, 31 );
     
+    set_key_group( GDK_exclam,  0 );
+    set_key_group( GDK_quotedbl,  1  );
+    set_key_group( GDK_numbersign,  2  );
+    set_key_group( GDK_dollar,  3  );
+    set_key_group( GDK_percent,  4  );
+    set_key_group( GDK_ampersand,  5  );
+    set_key_group( GDK_parenleft,  7  );
+    set_key_group( GDK_slash,  6  );
+    set_key_group( GDK_semicolon,  31 );
+    set_key_group( GDK_A,  16 );
+    set_key_group( GDK_B,  28 );
+    set_key_group( GDK_C,  26 );
+    set_key_group( GDK_D,  18 );
+    set_key_group( GDK_E,  10 );
+    set_key_group( GDK_F,  19 );
+    set_key_group( GDK_G,  20 );
+    set_key_group( GDK_H,  21 );
+    set_key_group( GDK_I,  15 );
+    set_key_group( GDK_J,  22 );
+    set_key_group( GDK_K,  23 );
+    set_key_group( GDK_M,  30 );
+    set_key_group( GDK_N,  29 );
+    set_key_group( GDK_Q,  8  );
+    set_key_group( GDK_R,  11 );
+    set_key_group( GDK_S,  17 );
+    set_key_group( GDK_T,  12 );
+    set_key_group( GDK_U,  14 );
+    set_key_group( GDK_V,  27 );
+    set_key_group( GDK_W,  9  );
+    set_key_group( GDK_X,  25 );
+    set_key_group( GDK_Y,  13 );
+    set_key_group( GDK_Z,  24 );
+
     m_key_bpm_up = GDK_apostrophe;
     m_key_bpm_dn = GDK_semicolon;
 
@@ -141,13 +142,13 @@ perform::perform()
     m_key_queue = GDK_Control_R;
     m_key_snapshot_1 = GDK_Alt_L;
     m_key_snapshot_2 = GDK_Alt_R;
-    m_key_keep_queue = 92;
+    m_key_keep_queue = GDK_backslash;
     
     m_key_screenset_up = GDK_bracketright;
     m_key_screenset_dn = GDK_bracketleft;
-    m_key_set_playing_screenset = 65360;
-    m_key_group_on = 236;
-    m_key_group_off = 39;
+    m_key_set_playing_screenset = GDK_Home;
+    m_key_group_on = GDK_igrave;
+    m_key_group_off = GDK_apostrophe;
     m_key_group_learn = GDK_Insert;
 
     m_key_start  = GDK_space;
@@ -340,14 +341,14 @@ void perform::set_mode_group_learn (void
 {
     set_mode_group_mute();
     m_mode_group_learn = true;
-    for (int x = 0; x < m_notify.size(); ++x)
+    for (size_t x = 0; x < m_notify.size(); ++x)
         m_notify[x]->on_grouplearnchange( true );
     return;
 }
 
 void perform::unset_mode_group_learn (void)
 {
-    for (int x = 0; x < m_notify.size(); ++x)
+    for (size_t x = 0; x < m_notify.size(); ++x)
         m_notify[x]->on_grouplearnchange( false );
     m_mode_group_learn = false;
     return;
@@ -1332,8 +1333,8 @@ perform::output_func(void)
         /* current time */
         long current;
 
-        long stats_loop_start;
-        long stats_loop_finish;
+        long stats_loop_start = 0;
+        long stats_loop_finish = 0;
 
 
         /* difference between last and current */
@@ -1362,10 +1363,11 @@ perform::output_func(void)
 
         bool init_clock = true;
 
+#ifdef JACK_SUPPORT
         double jack_ticks_converted = 0.0;
         double jack_ticks_converted_last = 0.0;
         double jack_ticks_delta = 0.0;
-
+#endif
         for( int i=0; i<100; i++ ){
             stats_all[i] = 0;
             stats_clock[i] = 0;
diff -rupN seq24-pristine/src/seq24.cpp seq24/src/seq24.cpp
--- seq24-pristine/src/seq24.cpp	2009-06-10 20:56:00.937500000 -0500
+++ seq24/src/seq24.cpp	2009-06-10 20:41:01.812500000 -0500
@@ -312,38 +312,3 @@ main (int argc, char *argv[])
 }
 
 
-/* declared in globals.h */
-char* key2text( unsigned long int val )
-{
-    unsigned long int s[] = {GDK_Insert, GDK_Escape, GDK_Return, GDK_Delete,
-                          GDK_BackSpace, GDK_Pause, GDK_Break, GDK_Tab, GDK_Scroll_Lock,
-                          GDK_Left, GDK_Right, GDK_Up, GDK_Down, GDK_Page_Up, GDK_Page_Down,
-                          GDK_Break, GDK_Num_Lock, GDK_F1, GDK_F2, GDK_F3, GDK_F4, GDK_F5,
-                          GDK_F6, GDK_F7, GDK_F8, GDK_F9, GDK_F10, GDK_F11, GDK_F12,
-                          GDK_Shift_L, GDK_Shift_R, GDK_Control_L, GDK_Control_R,
-                          GDK_Caps_Lock, GDK_Alt_L, GDK_Alt_R, GDK_Home, GDK_End, '\n', '\t', 0 };
-    char* str[] = {"Ins", "Esc", "Ret", "Del",
-                   "Bck", "Paus", "Brk", "Tab", "ScLk",
-                   "<-", "->", "Up", "Dn", "PgUp", "PgDn",
-                   "Brk", "NmLk", "F1", "F2", "F3", "F4", "F5",
-                   "F6", "F7", "F8", "F9", "F10", "F11", "F12",
-                   "ShL", "ShR", "CtlL", "CtlR",
-                   "Caps", "AltL", "AltR", "Home", "End", "Ret", "Tab", 0 };
-    unsigned long int* s2 = s;
-    char** str2 = str;
-    while (*s2 != 0) { if (val == s2[0]) return str2[0];  s2++; str2++; }
-    //for ( int x = '!'; x <= '~'; ++x) printf( "ascii: %d  '%c'\n", x, (char)x);
-
-    static char buf[16][16];
-    static int rotate = 0; //lets us use this in iostreams for example...
-    rotate = (rotate + 1) % 16;
-    strcpy( buf[rotate], "??" );
-
-    //printf( "%d %d %d %d - ", val, ' ' <= val, val <= '~', *s2 );
-    if (*s2 == 0 && ' ' <= val && val <= '~')
-    {
-        sprintf( buf[rotate], "'%c'", (char)val );
-    }
-    //printf( "  ret: %s\n", buf[rotate] );
-    return buf[rotate];
-}
diff -rupN seq24-pristine/src/seqroll.cpp seq24/src/seqroll.cpp
--- seq24-pristine/src/seqroll.cpp	2009-06-10 20:56:01.218750000 -0500
+++ seq24/src/seqroll.cpp	2009-06-10 20:46:53.234375000 -0500
@@ -282,7 +282,6 @@ seqroll::redraw()
 
 }
 
-
 void 
 seqroll::redraw_events()
 {
@@ -293,14 +292,12 @@ seqroll::redraw_events()
     force_draw();
 }
 
-
 void
 seqroll::set_ignore_redraw(bool a_ignore)
 {
     m_ignore_redraw = a_ignore;
 }
 
-
 void
 seqroll::draw_background_on_pixmap()
 {
@@ -337,35 +334,35 @@ seqroll::update_background()
     
     for ( int i=0; i< (m_window_y / c_key_y) + 1; i++ )
     {
-         if (global_interactionmethod == e_fruity_interaction)
-         {
-             if (0 == (((c_num_keys - i) - m_scroll_offset_key + ( 12 - m_key )) % 12))
-             {
-                 /* draw horz black lines at C */
-                 m_gc->set_foreground(m_dk_grey);
-                 m_gc->set_line_attributes( 1,
-                                            Gdk::LINE_SOLID,
-                                            Gdk::CAP_NOT_LAST,
-                                            Gdk::JOIN_MITER );
-             }
-             else if (11 == (((c_num_keys - i) - m_scroll_offset_key + ( 12 - m_key )) % 12))
-             {
-                 /* draw horz grey lines for the other notes */
-                 m_gc->set_foreground(m_grey);
-                 m_gc->set_line_attributes( 1,
-                                            Gdk::LINE_ON_OFF_DASH,
-                                            Gdk::CAP_NOT_LAST,
-                                            Gdk::JOIN_MITER );
-             }
-         }
-         
+        if (global_interactionmethod == e_fruity_interaction)
+        {
+            if (0 == (((c_num_keys - i) - m_scroll_offset_key + ( 12 - m_key )) % 12))
+            {
+                /* draw horz black lines at C */
+                m_gc->set_foreground(m_dk_grey);
+                m_gc->set_line_attributes( 1,
+                                           Gdk::LINE_SOLID,
+                                           Gdk::CAP_NOT_LAST,
+                                           Gdk::JOIN_MITER );
+            }
+            else if (11 == (((c_num_keys - i) - m_scroll_offset_key + ( 12 - m_key )) % 12))
+            {
+                /* draw horz grey lines for the other notes */
+                m_gc->set_foreground(m_grey);
+                m_gc->set_line_attributes( 1,
+                                           Gdk::LINE_ON_OFF_DASH,
+                                           Gdk::CAP_NOT_LAST,
+                                           Gdk::JOIN_MITER );
+            }
+        }
+
         m_background->draw_line(m_gc,
                             0,
                             i * c_key_y,
                             m_window_x,
                             i * c_key_y );
-        
-        if ( m_scale != c_scale_off ) {
+
+        if ( m_scale != c_scale_off ){
             
             if ( !c_scales_policy[m_scale][ ((c_num_keys - i)
                                              - m_scroll_offset_key
@@ -478,14 +475,12 @@ seqroll::set_snap( int a_snap )
     reset();
 }
 
-
 void 
 seqroll::set_note_length( int a_note_length )
 {
     m_note_length = a_note_length;
 }
 
-
 /* sets the music scale */
 void 
 seqroll::set_scale( int a_scale )
@@ -1055,20 +1050,20 @@ seqroll::on_key_press_event(GdkEventKey*
 {
     bool ret = false;
 
-     // the start/end key may be the same key (i.e. SPACEBAR)
-     // allow toggling when the same key is mapped to both triggers (i.e. SPACEBAR)
-     bool dont_toggle = m_perform->m_key_start != m_perform->m_key_stop;
-     if ( a_p0->keyval ==  m_perform->m_key_start && (dont_toggle || !is_pattern_playing) ){
- 	    m_perform->position_jack( false );
- 	    m_perform->start( false );
- 	    m_perform->start_jack( );
-         is_pattern_playing=true;
-     }
-     else if ( a_p0->keyval ==  m_perform->m_key_stop && (dont_toggle || is_pattern_playing) ){
-         m_perform->stop_jack();
-         m_perform->stop();
-         is_pattern_playing=false;
-     }
+    // the start/end key may be the same key (i.e. SPACEBAR)
+    // allow toggling when the same key is mapped to both triggers (i.e. SPACEBAR)
+    bool dont_toggle = m_perform->m_key_start != m_perform->m_key_stop;
+    if ( a_p0->keyval ==  m_perform->m_key_start && (dont_toggle || !is_pattern_playing) ){
+        m_perform->position_jack( false );
+        m_perform->start( false );
+        m_perform->start_jack( );
+        is_pattern_playing=true;
+    }
+    else if ( a_p0->keyval ==  m_perform->m_key_stop && (dont_toggle || is_pattern_playing) ){
+        m_perform->stop_jack();
+        m_perform->stop();
+        is_pattern_playing=false;
+    }
 
     if ( a_p0->type == GDK_KEY_PRESS ){
 
diff -rupN seq24-pristine/src/sequence.cpp seq24/src/sequence.cpp
--- seq24-pristine/src/sequence.cpp	2009-06-10 20:56:01.343750000 -0500
+++ seq24/src/sequence.cpp	2009-06-10 20:47:51.390625000 -0500
@@ -1728,11 +1728,10 @@ sequence::stream_event(  event *a_ev  )
     link_new();
 
     if ( m_quanized_rec ){
-	if (a_ev->is_note_off()) {
-	    select_note_events( a_ev->get_timestamp(), a_ev->get_note(),
-			        a_ev->get_timestamp(), a_ev->get_note(), e_select);
+        if (a_ev->is_note_off()) {
+            select_note_events( a_ev->get_timestamp(), a_ev->get_note(),
+            a_ev->get_timestamp(), a_ev->get_note(), e_select);
             quanize_events( EVENT_NOTE_ON, 0, m_snap_tick, 1 , true );
-
 	}
     }
     /* update view */
