diff --git a/.kcm_touchpad.metadata b/.kcm_touchpad.metadata
new file mode 100644
index 0000000..eadf6b8
--- /dev/null
+++ b/.kcm_touchpad.metadata
@@ -0,0 +1 @@
+e5cdf487940030c2aec83498d324fd4c7af2ea47 SOURCES/mishaaq-kcm_touchpad-00370b5.tar.gz
diff --git a/README.md b/README.md
deleted file mode 100644
index 0e7897f..0000000
--- a/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-The master branch has no content
-
-Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6
-
-If you find this file in a distro specific branch, it means that no content has been checked in yet
diff --git a/SOURCES/kcm_touchpad-0.3.1-disable-smart-mode-settings.patch b/SOURCES/kcm_touchpad-0.3.1-disable-smart-mode-settings.patch
new file mode 100644
index 0000000..bbd0334
--- /dev/null
+++ b/SOURCES/kcm_touchpad-0.3.1-disable-smart-mode-settings.patch
@@ -0,0 +1,13 @@
+Index: kcm-touchpad-0.3.1/kcmtouchpad.cpp
+===================================================================
+--- kcm-touchpad-0.3.1.orig/kcmtouchpad.cpp 2010-04-11 20:34:50.509642139 -0400
++++ kcm-touchpad-0.3.1/kcmtouchpad.cpp 2010-04-11 20:35:50.388643170 -0400
+@@ -79,6 +79,8 @@
+ // "Touchpad Allow Moving" check box
+ connect(ui->TouchpadOffWOMoveCB, SIGNAL(toggled(bool)), this, SLOT(touchpadAllowedMoving(bool)));
+
++ // Kubuntu patch; don't show this, since the feature isn't there yet.
++ ui->SmartModeGB->setHidden(true);
+ //connect(ui->SmartModeEnableCB, SIGNAL(toggled(bool)), this, SLOT(smartModeEnabled(bool)));
+ //connect(ui->SmartModeDelayS, SIGNAL(valueChanged(int)), this, SLOT(smartModeDelayChanged(int)));
+
diff --git a/SOURCES/kcm_touchpad-0.3.1-fix-circular-scrolling.patch b/SOURCES/kcm_touchpad-0.3.1-fix-circular-scrolling.patch
new file mode 100644
index 0000000..06cc0c6
--- /dev/null
+++ b/SOURCES/kcm_touchpad-0.3.1-fix-circular-scrolling.patch
@@ -0,0 +1,35 @@
+Index: kcm-touchpad-0.3.1/kcmtouchpad.cpp
+===================================================================
+--- kcm-touchpad-0.3.1.orig/kcmtouchpad.cpp 2010-07-19 11:41:02.128000002 -0400
++++ kcm-touchpad-0.3.1/kcmtouchpad.cpp 2010-07-19 11:42:52.032000003 -0400
+@@ -505,7 +505,7 @@
+ Touchpad::set_parameter("CircularScrolling", ui->ScrollCircularEnableCB->isChecked());
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_DIST)) {
+- Touchpad::set_parameter("CircScrollDelta", ui->ScrollCircularSpeedS->value());
++ Touchpad::set_parameter("CircScrollDelta", ui->ScrollCircularSpeedS->value() / 100.0f);
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_TRIGGER)) {
+ Touchpad::set_parameter("CircScrollTrigger", ui->ScrollCircularCornersCBB->currentIndex());
+@@ -764,7 +764,7 @@
+ Touchpad::set_parameter("CircularScrolling", config.readEntry("CircularScrolling", -1));
+ }
+ if (propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_DIST)) {
+- Touchpad::set_parameter("CircScrollDelta", config.readEntry("CircScrollDelta", -1));
++ Touchpad::set_parameter("CircScrollDelta", config.readEntry("CircScrollDelta", -1) / 100.0f);
+ }
+ if (propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_TRIGGER)) {
+ Touchpad::set_parameter("CircScrollTrigger", (Synaptics::ScrollTrigger)config.readEntry("CircScrollTrigger", -1));
+Index: kcm-touchpad-0.3.1/kcmtouchpadwidget.ui
+===================================================================
+--- kcm-touchpad-0.3.1.orig/kcmtouchpadwidget.ui 2010-07-19 11:41:11.892000001 -0400
++++ kcm-touchpad-0.3.1/kcmtouchpadwidget.ui 2010-07-19 11:43:20.840000002 -0400
+@@ -796,7 +796,7 @@
+ Move angle (radians) of finger to generate a scroll event.
+
+
+- 30
++ 1
+
+
+ 300
diff --git a/SOURCES/kcm_touchpad-0.3.1-fix-high-sensitivity.patch b/SOURCES/kcm_touchpad-0.3.1-fix-high-sensitivity.patch
new file mode 100644
index 0000000..bf49431
--- /dev/null
+++ b/SOURCES/kcm_touchpad-0.3.1-fix-high-sensitivity.patch
@@ -0,0 +1,29 @@
+diff -Nur kcm-touchpad-0.3.1.orig/kcmtouchpadwidget.ui kcm-touchpad-0.3.1/kcmtouchpadwidget.ui
+--- kcm-touchpad-0.3.1.orig/kcmtouchpadwidget.ui 2010-01-12 14:02:07.000000000 +0100
++++ kcm-touchpad-0.3.1/kcmtouchpadwidget.ui 2010-04-24 00:56:02.175243897 +0200
+@@ -376,10 +376,10 @@
+ Move distance of the finger for a vertical scroll event.
+
+
+- 0
++ 1
+
+
+- 400
++ 401
+
+
+ 50
+@@ -557,10 +557,10 @@
+ Move distance of the finger for a horizontal scroll event.
+
+
+- 0
++ 1
+
+
+- 400
++ 401
+
+
+ 50
diff --git a/SOURCES/kcm_touchpad-0.3.1-load-error-checking.patch b/SOURCES/kcm_touchpad-0.3.1-load-error-checking.patch
new file mode 100644
index 0000000..f1319b1
--- /dev/null
+++ b/SOURCES/kcm_touchpad-0.3.1-load-error-checking.patch
@@ -0,0 +1,194 @@
+diff -Nur kcm-touchpad-0.3.1.orig/kcmtouchpad.cpp kcm-touchpad-0.3.1/kcmtouchpad.cpp
+--- kcm-touchpad-0.3.1.orig/kcmtouchpad.cpp 2010-04-24 00:21:40.000000000 +0200
++++ kcm-touchpad-0.3.1/kcmtouchpad.cpp 2010-04-24 00:49:46.345242942 +0200
+@@ -176,6 +176,17 @@
+ }
+ }
+
++const void* TouchpadConfig::get_parameter(const char* name)
++{
++ const void* result = Touchpad::get_parameter(name);
++ if (!result) {
++ setup_failed = true;
++ setEnabled(false);
++ }
++
++ return result;
++}
++
+ /*
+ * This function is called when loading module.
+ * It loads configuration from file "kcmtouchpadrc".
+@@ -190,64 +201,134 @@
+ // loads every entry of configuration and sets corresponding widget
+ // when configuration doesn't exist collect actual value from driver
+
++ const void* value;
++
+ if (this->propertiesList.contains(SYNAPTICS_PROP_OFF)) {
+- ui->TouchpadOnRB->setChecked(!config.readEntry("TouchpadOff", !(int)*(char*)Touchpad::get_parameter("TouchpadOff")));
+- ui->TouchpadOffWOMoveCB->setCheckState(config.readEntry("TouchpadOff", (int)*(char*)Touchpad::get_parameter("TouchpadOff")) == 2 ? Qt::Checked : Qt::Unchecked);
++ value = get_parameter("TouchpadOff");
++ if (!value) return;
++ ui->TouchpadOnRB->setChecked(!config.readEntry("TouchpadOff", !(int)*(char*)value));
++
++ value = get_parameter("TouchpadOff");
++ if (!value) return;
++ ui->TouchpadOffWOMoveCB->setCheckState(config.readEntry("TouchpadOff", (int)*(char*)value) == 2 ? Qt::Checked : Qt::Unchecked);
+ }
+
+ //ui->SmartModeEnableCB->setCheckState(config.readEntry("SmartModeEnabled", false) ? Qt::Checked : Qt::Unchecked);
+ //ui->SmartModeDelayS->setValue(config.readEntry("SmartModeDelay", 1000));
+
+ if (this->propertiesList.contains(SYNAPTICS_PROP_FINGER)) {
+- ui->SensitivityValueS->setValue(config.readEntry("FingerLow", *(int*)Touchpad::get_parameter("FingerLow") / 10));
++ value = get_parameter("FingerLow");
++ if (!value) return;
++ ui->SensitivityValueS->setValue(config.readEntry("FingerLow", *(int*)value / 10));
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_SCROLL_EDGE)) {
+- ui->ScrollVertEnableCB->setCheckState(config.readEntry("VertEdgeScroll", (int)*(char*)Touchpad::get_parameter("VertEdgeScroll")) ? Qt::Checked : Qt::Unchecked);
+- ui->ScrollHorizEnableCB->setCheckState(config.readEntry("HorizEdgeScroll", (int)*(char*)Touchpad::get_parameter("HorizEdgeScroll")) ? Qt::Checked : Qt::Unchecked);
++ value = get_parameter("VertEdgeScroll");
++ if (!value) return;
++ ui->ScrollVertEnableCB->setCheckState(config.readEntry("VertEdgeScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked);
++
++ value = get_parameter("HorizEdgeScroll");
++ if (!value) return;
++ ui->ScrollHorizEnableCB->setCheckState(config.readEntry("HorizEdgeScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked);
++
+ if (this->propertiesList.contains(SYNAPTICS_PROP_COASTING_SPEED)) {
+- ui->ScrollCoastingCornerEnableCB->setCheckState(config.readEntry("CornerCoasting", (int)*(char*)Touchpad::get_parameter("CornerCoasting")) ? Qt::Checked : Qt::Unchecked);
++ value = get_parameter("CornerCoasting");
++ if (!value) return;
++ ui->ScrollCoastingCornerEnableCB->setCheckState(config.readEntry("CornerCoasting", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked);
+ }
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_SCROLL_DISTANCE)) {
+- ui->ScrollVertSpeedS->setValue(config.readEntry("VertScrollDelta", *(int*)Touchpad::get_parameter("VertScrollDelta")));
+- ui->ScrollHorizSpeedS->setValue(config.readEntry("HorizScrollDelta", *(int*)Touchpad::get_parameter("HorizScrollDelta")));
++ value = get_parameter("VertScrollDelta");
++ if (!value) return;
++ ui->ScrollVertSpeedS->setValue(config.readEntry("VertScrollDelta", *(int*)value));
++
++ value = get_parameter("HorizScrollDelta");
++ if (!value) return;
++ ui->ScrollHorizSpeedS->setValue(config.readEntry("HorizScrollDelta", *(int*)value));
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_SCROLL_TWOFINGER)) {
+- ui->ScrollVertTFEnableCB->setCheckState(config.readEntry("VertTwoFingerScroll", (int)*(char*)Touchpad::get_parameter("VertTwoFingerScroll")) ? Qt::Checked : Qt::Unchecked);
+- ui->ScrollHorizTFEnableCB->setCheckState(config.readEntry("HorizTwoFingerScroll", (int)*(char*)Touchpad::get_parameter("HorizTwoFingerScroll")) ? Qt::Checked : Qt::Unchecked);
++ value = get_parameter("VertTwoFingerScroll");
++ if (!value) return;
++ ui->ScrollVertTFEnableCB->setCheckState(config.readEntry("VertTwoFingerScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked);
++
++ value = get_parameter("HorizTwoFingerScroll");
++ if (!value) return;
++ ui->ScrollHorizTFEnableCB->setCheckState(config.readEntry("HorizTwoFingerScroll", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked);
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_COASTING_SPEED)) {
+- ui->ScrollCoastingEnableCB->setCheckState(config.readEntry("CoastingSpeed", *(double*)Touchpad::get_parameter("CoastingSpeed")) ? Qt::Checked : Qt::Unchecked);
+- ui->ScrollCoastingSpeedS->setValue(config.readEntry("CoastingSpeed", *(double*)Touchpad::get_parameter("CoastingSpeed")) * 100.0f);
++ value = get_parameter("CoastingSpeed");
++ if (!value) return;
++ ui->ScrollCoastingEnableCB->setCheckState(config.readEntry("CoastingSpeed", *(double*)value) ? Qt::Checked : Qt::Unchecked);
++
++ value = get_parameter("CoastingSpeed");
++ if (!value) return;
++ ui->ScrollCoastingSpeedS->setValue(config.readEntry("CoastingSpeed", *(double*)value) * 100.0f);
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING)) {
+- ui->ScrollCircularEnableCB->setCheckState(config.readEntry("CircularScrolling", (int)*(char*)Touchpad::get_parameter("CircularScrolling")) ? Qt::Checked : Qt::Unchecked);
++ value = get_parameter("CircularScrolling");
++ if (!value) return;
++ ui->ScrollCircularEnableCB->setCheckState(config.readEntry("CircularScrolling", (int)*(char*)value) ? Qt::Checked : Qt::Unchecked);
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_DIST)) {
+- ui->ScrollCircularSpeedS->setValue(config.readEntry("CircScrollDelta", *(double*)Touchpad::get_parameter("CircScrollDelta")));
++ value = get_parameter("CircScrollDelta");
++ if (!value) return;
++ ui->ScrollCircularSpeedS->setValue(config.readEntry("CircScrollDelta", *(double*)value));
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_CIRCULAR_SCROLLING_TRIGGER)) {
+- ui->ScrollCircularCornersCBB->setCurrentIndex(config.readEntry("CircScrollTrigger", (int)*(char*)Touchpad::get_parameter("CircScrollTrigger")));
++ value = get_parameter("CircScrollTrigger");
++ if (!value) return;
++ ui->ScrollCircularCornersCBB->setCurrentIndex(config.readEntry("CircScrollTrigger", (int)*(char*)value));
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_TIME)) {
+- ui->TappingEnableCB->setCheckState(config.readEntry("MaxTapTime", *(int*)Touchpad::get_parameter("MaxTapTime")) ? Qt::Checked : Qt::Unchecked);
++ value = get_parameter("MaxTapTime");
++ if (!value) return;
++ ui->TappingEnableCB->setCheckState(config.readEntry("MaxTapTime", *(int*)value) ? Qt::Checked : Qt::Unchecked);
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_MOVE)) {
+- ui->TappingMaxMoveValueS->setValue(config.readEntry("MaxTapMove", *(int*)Touchpad::get_parameter("MaxTapMove")));
++ value = get_parameter("MaxTapMove");
++ if (!value) return;
++ ui->TappingMaxMoveValueS->setValue(config.readEntry("MaxTapMove", *(int*)value));
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_DURATIONS)) {
+- ui->TappingTimeoutValueS->setValue(config.readEntry("SingleTapTimeout", *(int*)Touchpad::get_parameter("SingleTapTimeout")));
+- ui->TappingDoubleTimeValueS->setValue(config.readEntry("MaxDoubleTapTime", *(int*)Touchpad::get_parameter("MaxDoubleTapTime")));
+- ui->TappingClickTimeValueS->setValue(config.readEntry("ClickTime", *(int*)Touchpad::get_parameter("ClickTime")));
++ value = get_parameter("SingleTapTimeout");
++ if (!value) return;
++ ui->TappingTimeoutValueS->setValue(config.readEntry("SingleTapTimeout", *(int*)value));
++
++ value = get_parameter("MaxDoubleTapTime");
++ if (!value) return;
++ ui->TappingDoubleTimeValueS->setValue(config.readEntry("MaxDoubleTapTime", *(int*)value));
++
++ value = get_parameter("ClickTime");
++ if (!value) return;
++ ui->TappingClickTimeValueS->setValue(config.readEntry("ClickTime", *(int*)value));
+ }
+ if (this->propertiesList.contains(SYNAPTICS_PROP_TAP_ACTION)) {
+- tappingButtonsMap[Synaptics::OneFinger] = config.readEntry("TapButton1", (int)*(char*)Touchpad::get_parameter("TapButton1"));
+- tappingButtonsMap[Synaptics::TwoFingers] = config.readEntry("TapButton2", (int)*(char*)Touchpad::get_parameter("TapButton2"));
+- tappingButtonsMap[Synaptics::ThreeFingers] = config.readEntry("TapButton3", (int)*(char*)Touchpad::get_parameter("TapButton3"));
+- tappingButtonsMap[Synaptics::RightTop] = config.readEntry("RTCornerButton", (int)*(char*)Touchpad::get_parameter("RTCornerButton"));
+- tappingButtonsMap[Synaptics::RightBottom] = config.readEntry("RBCornerButton", (int)*(char*)Touchpad::get_parameter("RBCornerButton"));
+- tappingButtonsMap[Synaptics::LeftTop] = config.readEntry("LTCornerButton", (int)*(char*)Touchpad::get_parameter("LTCornerButton"));
+- tappingButtonsMap[Synaptics::LeftBottom] = config.readEntry("LBCornerButton", (int)*(char*)Touchpad::get_parameter("LBCornerButton"));
++ value = get_parameter("TapButton1");
++ if (!value) return;
++ tappingButtonsMap[Synaptics::OneFinger] = config.readEntry("TapButton1", (int)*(char*)value);
++
++ value = get_parameter("TapButton2");
++ if (!value) return;
++ tappingButtonsMap[Synaptics::TwoFingers] = config.readEntry("TapButton2", (int)*(char*)value);
++
++ value = get_parameter("TapButton3");
++ if (!value) return;
++ tappingButtonsMap[Synaptics::ThreeFingers] = config.readEntry("TapButton3", (int)*(char*)value);
++
++ value = get_parameter("RTCornerButton");
++ if (!value) return;
++ tappingButtonsMap[Synaptics::RightTop] = config.readEntry("RTCornerButton", (int)*(char*)value);
++
++ value = get_parameter("RBCornerButton");
++ if (!value) return;
++ tappingButtonsMap[Synaptics::RightBottom] = config.readEntry("RBCornerButton", (int)*(char*)value);
++
++ value = get_parameter("LTCornerButton");
++ if (!value) return;
++ tappingButtonsMap[Synaptics::LeftTop] = config.readEntry("LTCornerButton", (int)*(char*)value);
++
++ value = get_parameter("LBCornerButton");
++ if (!value) return;
++ tappingButtonsMap[Synaptics::LeftBottom] = config.readEntry("LBCornerButton", (int)*(char*)value);
+ }
+ }
+
+diff -Nur kcm-touchpad-0.3.1.orig/kcmtouchpad.h kcm-touchpad-0.3.1/kcmtouchpad.h
+--- kcm-touchpad-0.3.1.orig/kcmtouchpad.h 2010-01-12 14:02:07.000000000 +0100
++++ kcm-touchpad-0.3.1/kcmtouchpad.h 2010-04-24 00:57:57.305243725 +0200
+@@ -56,6 +56,7 @@
+ bool apply();
+ static void applySensitivity(int val);
+ void enableProperties();
++ const void* get_parameter(const char* name);
+
+ Ui_TouchpadConfigWidget* ui;
+
diff --git a/SOURCES/kcm_touchpad-0.3.1-new-systemsettings-layout.patch b/SOURCES/kcm_touchpad-0.3.1-new-systemsettings-layout.patch
new file mode 100644
index 0000000..ba9882d
--- /dev/null
+++ b/SOURCES/kcm_touchpad-0.3.1-new-systemsettings-layout.patch
@@ -0,0 +1,12 @@
+diff -Nur mishaaq-kcm_touchpad-00370b5/touchpad.desktop mishaaq-kcm_touchpad-00370b5-fedora/touchpad.desktop
+--- mishaaq-kcm_touchpad-00370b5/touchpad.desktop 2010-01-12 06:02:07.000000000 -0700
++++ mishaaq-kcm_touchpad-00370b5-fedora/touchpad.desktop 2010-09-07 23:32:08.672140805 -0700
+@@ -10,7 +10,7 @@
+ X-KDE-Init-Symbol=touchpad
+ X-KDE-ParentApp=kcontrol
+
+-X-KDE-System-Settings-Parent-Category=keyboard-and-mouse
++X-KDE-System-Settings-Parent-Category=input-devices
+ X-KDE-Weight=50
+
+ Name=Touchpad
diff --git a/SOURCES/kcm_touchpad-0.3.1-scrollbar.patch b/SOURCES/kcm_touchpad-0.3.1-scrollbar.patch
new file mode 100644
index 0000000..a435c25
--- /dev/null
+++ b/SOURCES/kcm_touchpad-0.3.1-scrollbar.patch
@@ -0,0 +1,42 @@
+diff -ur mishaaq-kcm_touchpad-00370b5/kcmtouchpadwidget.ui mishaaq-kcm_touchpad-00370b5-scrollbar/kcmtouchpadwidget.ui
+--- mishaaq-kcm_touchpad-00370b5/kcmtouchpadwidget.ui 2010-01-12 14:02:07.000000000 +0100
++++ mishaaq-kcm_touchpad-00370b5-scrollbar/kcmtouchpadwidget.ui 2011-02-08 11:23:16.000000000 +0100
+@@ -322,6 +322,27 @@
+ Scrolling
+
+
++
++ 0
++
++ -
++
++
++ QFrame::NoFrame
++
++
++ Qt::ScrollBarAlwaysOff
++
++
++
++
++ 0
++ 0
++ 505
++ 484
++
++
++
+
-
+
+
+@@ -844,6 +865,10 @@
+
+
+
++
++
++
++
+
+
+ Tapping
diff --git a/SPECS/kcm_touchpad.spec b/SPECS/kcm_touchpad.spec
new file mode 100644
index 0000000..7dc9041
--- /dev/null
+++ b/SPECS/kcm_touchpad.spec
@@ -0,0 +1,120 @@
+Name: kcm_touchpad
+Version: 0.3.1
+Release: 9%{?dist}
+Summary: Synaptics driver based touchpads kcontrol module
+
+Group: User Interfaces/Desktops
+License: GPLv2
+URL: http://kde-apps.org/content/show.php/kcm_touchpad?content=113335
+Source0: http://download.github.com/mishaaq-kcm_touchpad-00370b5.tar.gz
+Patch0: kcm_touchpad-0.3.1-scrollbar.patch
+# Kubuntu patches:
+Patch1: kcm_touchpad-0.3.1-disable-smart-mode-settings.patch
+Patch2: kcm_touchpad-0.3.1-load-error-checking.patch
+Patch3: kcm_touchpad-0.3.1-fix-high-sensitivity.patch
+Patch4: kcm_touchpad-0.3.1-fix-circular-scrolling.patch
+# This one is basically the same as Kubuntu's patch 05:
+Patch5: kcm_touchpad-0.3.1-new-systemsettings-layout.patch
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildRequires: kdelibs4-devel gettext
+
+# need kcmshell4 from kdebase-runtime at least
+Requires: kdebase-runtime%{?_kde4_version: >= %{_kde4_version}}
+
+
+%description
+A KDE System Settings module to to configure synaptics based touchpads.
+
+
+%prep
+%setup -q -n mishaaq-kcm_touchpad-00370b5
+%patch0 -p1 -b .scrollbar
+%patch1 -p1 -b .disable-smart-mode-settings
+%patch2 -p1 -b .load-error-checking
+%patch3 -p1 -b .fix-high-sensitivity
+%patch4 -p1 -b .fix-circular-scrolling
+%patch5 -p1 -b .new-systemsettings-layout
+
+
+%build
+mkdir -p %{_target_platform}
+pushd %{_target_platform}
+%{cmake_kde4} ..
+popd
+
+make %{?_smp_mflags} -C %{_target_platform}
+
+
+%install
+rm -rf %{buildroot}
+make install/fast DESTDIR=%{buildroot} -C %{_target_platform}
+
+rm -rf %{buildroot}%{_kde4_docdir}/%{name}/
+
+%find_lang %{name}
+
+%clean
+rm -rf %{buildroot}
+
+%files -f %{name}.lang
+%defattr(-,root,root,-)
+%doc AUTHORS LICENSE README
+%{_kde4_libdir}/kde4/kcm_touchpad.so
+%{_kde4_datadir}/kde4/services/touchpad.desktop
+
+
+%changelog
+* Thu Feb 14 2013 Fedora Release Engineering - 0.3.1-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Thu Jul 19 2012 Fedora Release Engineering - 0.3.1-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Fri Jan 13 2012 Fedora Release Engineering - 0.3.1-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Tue Feb 08 2011 Kevin Kofler - 0.3.1-6
+- Merge bugfixes from Kubuntu, fixes circular scrolling and more (#633353)
+- Drop default kcmtouchpadrc, use driver defaults (#611611)
+- Make the Scrolling tab use a vertical scrollbar if needed (#600121)
+
+* Mon Feb 07 2011 Fedora Release Engineering - 0.3.1-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Thu Oct 28 2010 Rex Dieter - 0.3.1-4
+- Requires: kdebase-runtime
+- cmake cosmetics
+
+* Tue Sep 7 2010 Ryan Rix - 0.3.1-3
+- Update the category to adhere to new SC 4.5 systemsettings layout. Will now
+ appear under the "input devices" section.
+
+* Sat Jun 5 2010 Ryan Rix - 0.3.1-2
+- Ship a default config file For Greater Justice
+
+* Sat Feb 20 2010 Ryan Rix - 0.3.1-1
+- New source
+
+* Tue Nov 24 2009 Kevin Kofler - 0.3.0-6
+- Rebuild for Qt 4.6.0 RC1 in F13 (was built against Beta 1 with unstable ABI)
+
+* Thu Nov 12 2009 Ryan Rix < phrkonaleash [AT] gmail dot com > - 0.3.0-5
+- I'm just going to remove that BR.
+
+* Thu Nov 12 2009 Ryan Rix < phrkonaleash [AT] gmail dot com > - 0.3.0-4
+- Bumpint spec, fixing that build require :9
+
+* Thu Nov 12 2009 Ryan Rix < phrkonaleash [AT] gmail dot com > - 0.3.0-3
+- Added specific build require for libXi-devel because it was dying in dist-f10.
+
+* Wed Nov 4 2009 Ryan Rix < phrkonaleash [AT] gmail dot com > - 0.3.0-2
+- Update source URL and category
+
+* Tue Nov 3 2009 Ryan Rix < phrkonaleash [AT] gmail dot com > - 0.3.0-1
+- Updated source.
+- Updated BR
+- Removed now unnecessary Patch0
+
+* Fri Oct 16 2009 Ryan Rix < phrkonaleash [AT] gmail dot com > - 0.2.1-1
+- initial package