=== modified file 'mixxx/src/controlobject.cpp'
--- mixxx/src/controlobject.cpp	2009-07-17 05:06:48 +0000
+++ mixxx/src/controlobject.cpp	2009-08-11 15:24:43 +0000
@@ -34,12 +34,14 @@
 
 ControlObject::ControlObject() :
     m_bIgnoreNops(true) {
+    m_bAutoRepeat=true;
 }
 
 ControlObject::ControlObject(ConfigKey key, bool bIgnoreNops) :
     m_dValue(0),
     m_Key(key),
     m_bIgnoreNops(bIgnoreNops) {
+    m_bAutoRepeat=true;
     m_sqCOHashMutex.lock();
     m_sqCOHash.insert(key,this);
     m_sqCOHashMutex.unlock();

=== modified file 'mixxx/src/controlobject.h'
--- mixxx/src/controlobject.h	2009-07-17 05:06:48 +0000
+++ mixxx/src/controlobject.h	2009-08-11 15:07:45 +0000
@@ -98,6 +98,8 @@
     virtual double getValueToWidget(double dValue);
     /** get value (range 0..127) **/
     virtual double GetMidiValue();
+   
+    bool m_bAutoRepeat;
 
 public slots:
     /** Sets the value of the object and updates associated proxy objects. Not thread safe. */

=== modified file 'mixxx/src/mixxxkeyboard.cpp'
--- mixxx/src/mixxxkeyboard.cpp	2009-08-11 07:24:19 +0000
+++ mixxx/src/mixxxkeyboard.cpp	2009-08-11 15:21:56 +0000
@@ -42,7 +42,7 @@
 
         //qDebug() << "press";
 
-        if (!kbdPress(getKeySeq(ke), false))
+        if (!kbdPress(getKeySeq(ke), false,ke->isAutoRepeat()))
             ke->ignore();
         else
         {
@@ -90,7 +90,7 @@
     return false;
 }
 
-bool MixxxKeyboard::kbdPress(QKeySequence k, bool release)
+bool MixxxKeyboard::kbdPress(QKeySequence k, bool release, bool bAuto)
 {
     bool react = false;
 
@@ -107,8 +107,10 @@
             }
             else
             {
-                //qDebug() << "Sending MIDI NOTE_ON";
-                ControlObject::getControl(*pConfigKey)->queueFromMidi(NOTE_ON, 1);
+                if((!bAuto)||ControlObject::getControl(*pConfigKey)->m_bAutoRepeat){
+                    //qDebug() << "Sending MIDI NOTE_ON";
+                    ControlObject::getControl(*pConfigKey)->queueFromMidi(NOTE_ON, 1);
+                }
             }
 
             react = true;

=== modified file 'mixxx/src/mixxxkeyboard.h'
--- mixxx/src/mixxxkeyboard.h	2007-07-16 01:21:42 +0000
+++ mixxx/src/mixxxkeyboard.h	2009-08-11 15:01:56 +0000
@@ -42,7 +42,7 @@
     bool eventFilter(QObject *obj, QEvent *e);
 
 private:
-    bool kbdPress(QKeySequence k, bool release);
+    bool kbdPress(QKeySequence k, bool release,bool auto = false);
     /** Returns a valid QKeySequency with modifier keys from a QKeyEvent */
     QKeySequence getKeySeq(QKeyEvent *e);
     /** List containing keys which is currently pressed */

=== modified file 'mixxx/src/widget/wwidget.cpp'
--- mixxx/src/widget/wwidget.cpp	2009-08-11 07:24:19 +0000
+++ mixxx/src/widget/wwidget.cpp	2009-08-11 15:22:41 +0000
@@ -116,6 +116,13 @@
 	      else if (selectNodeQString(con, "ButtonState").contains("RightButton", Qt::CaseInsensitive))
                     state = Qt::RightButton;
             }
+            if(!selectNode(con,"AutoRepeat").isNull())
+            {
+                if(selectNodeQString(con,"AutoRepeat").contains("false",Qt::CaseInsensitive))
+                    control->m_bAutoRepeat=false;
+                else
+                    control->m_bAutoRepeat=true;
+            }
             // Connect control proxy to widget
             (new ControlObjectThreadWidget(control))->setWidget(this, bEmitOnDownPress, state);
 

