diff --git a/DeviceParts/res/values/strings.xml b/DeviceParts/res/values/strings.xml
index b8caa3f..f64967c 100644
--- a/DeviceParts/res/values/strings.xml
+++ b/DeviceParts/res/values/strings.xml
@@ -58,6 +58,12 @@
     <string name="choose_app">Choose app</string>
     <string name="category_double_swipe_gesture">II gesture</string>
     <string name="offscreen_gesture_title">Offscreen gestures</string>
+    <string name="category_c_gesture">C gesture</string>
+    <string name="category_e_gesture">E gesture</string>
+    <string name="category_s_gesture">S gesture</string>
+    <string name="category_v_gesture">V gesture</string>
+    <string name="category_w_gesture">W gesture</string>
+    <string name="category_z_gesture">Z gesture</string>
     <string name="category_circle_gesture">O gesture</string>
     <string name="category_down_arrow_gesture">V gesture</string>
     <string name="category_up_arrow_gesture">A gesture</string>
diff --git a/DeviceParts/res/xml/gesture_settings.xml b/DeviceParts/res/xml/gesture_settings.xml
index c7ef445..aa88399 100644
--- a/DeviceParts/res/xml/gesture_settings.xml
+++ b/DeviceParts/res/xml/gesture_settings.xml
@@ -45,53 +45,53 @@
         android:title="@string/offscreen_gesture_title">
 
         <org.omnirom.device.AppSelectListPreference
-            android:key="circle_gesture_app"
-            android:title="@string/category_circle_gesture"
+            android:key="c_gesture_app"
+            android:title="@string/category_c_gesture"
             android:persistent="false" />
 
         <org.omnirom.device.AppSelectListPreference
-            android:key="double_swipe_gesture_app"
-            android:title="@string/category_double_swipe_gesture"
+            android:key="e_gesture_app"
+            android:title="@string/category_e_gesture"
             android:persistent="false" />
 
         <org.omnirom.device.AppSelectListPreference
-            android:key="left_arrow_gesture_app"
-            android:title="@string/category_left_arrow_gesture"
-            android:persistent="false"/>
-
-        <org.omnirom.device.AppSelectListPreference
-            android:key="right_arrow_gesture_app"
-            android:title="@string/category_right_arrow_gesture"
-            android:persistent="false"/>
-
-        <org.omnirom.device.AppSelectListPreference
-            android:key="up_arrow_gesture_app"
-            android:title="@string/category_up_arrow_gesture"
+            android:key="s_gesture_app"
+            android:title="@string/category_s_gesture"
             android:persistent="false" />
 
         <org.omnirom.device.AppSelectListPreference
-            android:key="down_arrow_gesture_app"
-            android:title="@string/category_down_arrow_gesture"
+            android:key="v_gesture_app"
+            android:title="@string/category_v_gesture"
             android:persistent="false"/>
 
         <org.omnirom.device.AppSelectListPreference
-            android:key="down_swipe_gesture_app"
+            android:key="w_gesture_app"
+            android:title="@string/category_w_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="z_gesture_app"
+            android:title="@string/category_z_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="up_gesture_app"
+            android:title="@string/category_up_swipe_gesture"
+            android:persistent="false" />
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="down_gesture_app"
             android:title="@string/category_down_swipe_gesture"
             android:persistent="false"/>
 
         <org.omnirom.device.AppSelectListPreference
-            android:key="up_swipe_gesture_app"
-            android:title="@string/category_up_swipe_gesture"
+            android:key="left_gesture_app"
+            android:title="@string/category_left_arrow_gesture"
             android:persistent="false"/>
 
         <org.omnirom.device.AppSelectListPreference
-            android:key="left_swipe_gesture_app"
-            android:title="@string/category_left_swipe_gesture"
-            android:persistent="false"/>
-
-        <org.omnirom.device.AppSelectListPreference
-            android:key="right_swipe_gesture_app"
-            android:title="@string/category_right_swipe_gesture"
+            android:key="right_gesture_app"
+            android:title="@string/category_right_arrow_gesture"
             android:persistent="false"/>
 
     </PreferenceCategory>
diff --git a/DeviceParts/src/org/omnirom/device/GestureSettings.java b/DeviceParts/src/org/omnirom/device/GestureSettings.java
index 00e1d99..02c7e3b 100644
--- a/DeviceParts/src/org/omnirom/device/GestureSettings.java
+++ b/DeviceParts/src/org/omnirom/device/GestureSettings.java
@@ -55,16 +55,17 @@
 
     public static final String KEY_PROXI_SWITCH = "proxi";
     public static final String KEY_OFF_SCREEN_GESTURE_FEEDBACK_SWITCH = "off_screen_gesture_feedback";
-    public static final String KEY_DOUBLE_SWIPE_APP = "double_swipe_gesture_app";
-    public static final String KEY_CIRCLE_APP = "circle_gesture_app";
-    public static final String KEY_DOWN_ARROW_APP = "down_arrow_gesture_app";
-    public static final String KEY_UP_ARROW_APP = "up_arrow_gesture_app";
-    public static final String KEY_LEFT_ARROW_APP = "left_arrow_gesture_app";
-    public static final String KEY_RIGHT_ARROW_APP = "right_arrow_gesture_app";
-    public static final String KEY_DOWN_SWIPE_APP = "down_swipe_gesture_app";
-    public static final String KEY_UP_SWIPE_APP = "up_swipe_gesture_app";
-    public static final String KEY_LEFT_SWIPE_APP = "left_swipe_gesture_app";
-    public static final String KEY_RIGHT_SWIPE_APP = "right_swipe_gesture_app";
+
+    public static final String KEY_C_APP = "c_gesture_app";
+    public static final String KEY_E_APP = "e_gesture_app";
+    public static final String KEY_V_APP = "v_gesture_app";
+    public static final String KEY_S_APP = "s_gesture_app";
+    public static final String KEY_W_APP = "w_gesture_app";
+    public static final String KEY_Z_APP = "z_gesture_app";
+    public static final String KEY_UP_SWIPE_APP = "up_gesture_app";
+    public static final String KEY_DOWN_SWIPE_APP = "down_gesture_app";
+    public static final String KEY_LEFT_SWIPE_APP = "left_gesture_app";
+    public static final String KEY_RIGHT_SWIPE_APP = "right_gesture_app";
     public static final String KEY_FP_GESTURE_CATEGORY = "key_fp_gesture_category";
     public static final String KEY_FP_GESTURE_DEFAULT_CATEGORY = "gesture_settings";
 
@@ -84,12 +85,12 @@
 
     private TwoStatePreference mProxiSwitch;
     private TwoStatePreference mFpSwipeDownSwitch;
-    private AppSelectListPreference mDoubleSwipeApp;
-    private AppSelectListPreference mCircleApp;
-    private AppSelectListPreference mDownArrowApp;
-    private AppSelectListPreference mUpArrowApp;
-    private AppSelectListPreference mLeftArrowApp;
-    private AppSelectListPreference mRightArrowApp;
+    private AppSelectListPreference mLetterEGesture;
+    private AppSelectListPreference mLetterCGesture;
+    private AppSelectListPreference mLetterVGesture;
+    private AppSelectListPreference mLetterSGesture;
+    private AppSelectListPreference mLetterWGesture;
+    private AppSelectListPreference mLetterZGesture;
     private AppSelectListPreference mDownSwipeApp;
     private AppSelectListPreference mUpSwipeApp;
     private AppSelectListPreference mLeftSwipeApp;
@@ -113,54 +114,54 @@
         mProxiSwitch.setChecked(Settings.System.getInt(getContext().getContentResolver(),
                 Settings.System.OMNI_DEVICE_PROXI_CHECK_ENABLED, 1) != 0);
 
-        mDoubleSwipeApp = (AppSelectListPreference) findPreference(KEY_DOUBLE_SWIPE_APP);
-        mDoubleSwipeApp.setEnabled(isGestureSupported(KEY_DOUBLE_SWIPE_APP));
+        mLetterCGesture = (AppSelectListPreference) findPreference(KEY_C_APP);
+        mLetterCGesture.setEnabled(isGestureSupported(KEY_C_APP));
         String value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_0);
-        mDoubleSwipeApp.setValue(value);
-        mDoubleSwipeApp.setOnPreferenceChangeListener(this);
+        mLetterCGesture.setValue(value);
+        mLetterCGesture.setOnPreferenceChangeListener(this);
 
-        mCircleApp = (AppSelectListPreference) findPreference(KEY_CIRCLE_APP);
-        mCircleApp.setEnabled(isGestureSupported(KEY_CIRCLE_APP));
+        mLetterEGesture = (AppSelectListPreference) findPreference(KEY_E_APP);
+        mLetterEGesture.setEnabled(isGestureSupported(KEY_E_APP));
         value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_1);
-        mCircleApp.setValue(value);
-        mCircleApp.setOnPreferenceChangeListener(this);
+        mLetterEGesture.setValue(value);
+        mLetterEGesture.setOnPreferenceChangeListener(this);
 
-        mDownArrowApp = (AppSelectListPreference) findPreference(KEY_DOWN_ARROW_APP);
-        mDownArrowApp.setEnabled(isGestureSupported(KEY_DOWN_ARROW_APP));
+        mLetterVGesture = (AppSelectListPreference) findPreference(KEY_V_APP);
+        mLetterVGesture.setEnabled(isGestureSupported(KEY_V_APP));
         value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_2);
-        mDownArrowApp.setValue(value);
-        mDownArrowApp.setOnPreferenceChangeListener(this);
+        mLetterVGesture.setValue(value);
+        mLetterVGesture.setOnPreferenceChangeListener(this);
 
-        mUpArrowApp = (AppSelectListPreference) findPreference(KEY_UP_ARROW_APP);
-        mUpArrowApp.setEnabled(isGestureSupported(KEY_UP_ARROW_APP));
+        mLetterSGesture = (AppSelectListPreference) findPreference(KEY_S_APP);
+        mLetterSGesture.setEnabled(isGestureSupported(KEY_S_APP));
         value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_3);
-        mUpArrowApp.setValue(value);
-        mUpArrowApp.setOnPreferenceChangeListener(this);
+        mLetterSGesture.setValue(value);
+        mLetterSGesture.setOnPreferenceChangeListener(this);
 
-        mLeftArrowApp = (AppSelectListPreference) findPreference(KEY_LEFT_ARROW_APP);
-        mLeftArrowApp.setEnabled(isGestureSupported(KEY_LEFT_ARROW_APP));
+        mLetterWGesture = (AppSelectListPreference) findPreference(KEY_W_APP);
+        mLetterWGesture.setEnabled(isGestureSupported(KEY_W_APP));
         value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_4);
-        mLeftArrowApp.setValue(value);
-        mLeftArrowApp.setOnPreferenceChangeListener(this);
+        mLetterWGesture.setValue(value);
+        mLetterWGesture.setOnPreferenceChangeListener(this);
 
-        mRightArrowApp = (AppSelectListPreference) findPreference(KEY_RIGHT_ARROW_APP);
-        mRightArrowApp.setEnabled(isGestureSupported(KEY_RIGHT_ARROW_APP));
+        mLetterZGesture = (AppSelectListPreference) findPreference(KEY_Z_APP);
+        mLetterZGesture.setEnabled(isGestureSupported(KEY_Z_APP));
         value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_5);
-        mRightArrowApp.setValue(value);
-        mRightArrowApp.setOnPreferenceChangeListener(this);
-
-        mDownSwipeApp = (AppSelectListPreference) findPreference(KEY_DOWN_SWIPE_APP);
-        mDownSwipeApp.setEnabled(isGestureSupported(KEY_DOWN_SWIPE_APP));
-        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_6);
-        mDownSwipeApp.setValue(value);
-        mDownSwipeApp.setOnPreferenceChangeListener(this);
+        mLetterZGesture.setValue(value);
+        mLetterZGesture.setOnPreferenceChangeListener(this);
 
         mUpSwipeApp = (AppSelectListPreference) findPreference(KEY_UP_SWIPE_APP);
         mUpSwipeApp.setEnabled(isGestureSupported(KEY_UP_SWIPE_APP));
-        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_7);
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_6);
         mUpSwipeApp.setValue(value);
         mUpSwipeApp.setOnPreferenceChangeListener(this);
 
+        mDownSwipeApp = (AppSelectListPreference) findPreference(KEY_DOWN_SWIPE_APP);
+        mDownSwipeApp.setEnabled(isGestureSupported(KEY_DOWN_SWIPE_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_7);
+        mDownSwipeApp.setValue(value);
+        mDownSwipeApp.setOnPreferenceChangeListener(this);
+
         mLeftSwipeApp = (AppSelectListPreference) findPreference(KEY_LEFT_SWIPE_APP);
         mLeftSwipeApp.setEnabled(isGestureSupported(KEY_LEFT_SWIPE_APP));
         value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_8);
@@ -199,45 +200,45 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        if (preference == mDoubleSwipeApp) {
+        if (preference == mLetterCGesture) {
             String value = (String) newValue;
             boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
-            setGestureEnabled(KEY_DOUBLE_SWIPE_APP, !gestureDisabled);
+            setGestureEnabled(KEY_C_APP, !gestureDisabled);
             Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_0, value);
-        } else if (preference == mCircleApp) {
+        } else if (preference == mLetterEGesture) {
             String value = (String) newValue;
             boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
-            setGestureEnabled(KEY_CIRCLE_APP, !gestureDisabled);
+            setGestureEnabled(KEY_E_APP, !gestureDisabled);
             Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_1, value);
-        } else if (preference == mDownArrowApp) {
+        } else if (preference == mLetterVGesture) {
             String value = (String) newValue;
             boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
-            setGestureEnabled(KEY_DOWN_ARROW_APP, !gestureDisabled);
+            setGestureEnabled(KEY_V_APP, !gestureDisabled);
             Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_2, value);
-        } else if (preference == mUpArrowApp) {
+        } else if (preference == mLetterSGesture) {
             String value = (String) newValue;
             boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
-            setGestureEnabled(KEY_UP_ARROW_APP, !gestureDisabled);
+            setGestureEnabled(KEY_S_APP, !gestureDisabled);
             Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_3, value);
-        } else if (preference == mLeftArrowApp) {
+        } else if (preference == mLetterWGesture) {
             String value = (String) newValue;
             boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
-            setGestureEnabled(KEY_LEFT_ARROW_APP, !gestureDisabled);
+            setGestureEnabled(KEY_W_APP, !gestureDisabled);
             Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_4, value);
-        } else if (preference == mRightArrowApp) {
+        } else if (preference == mLetterZGesture) {
             String value = (String) newValue;
             boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
-            setGestureEnabled(KEY_RIGHT_ARROW_APP, !gestureDisabled);
+            setGestureEnabled(KEY_Z_APP, !gestureDisabled);
             Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_5, value);
-        } else if (preference == mDownSwipeApp) {
-            String value = (String) newValue;
-            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
-            setGestureEnabled(KEY_DOWN_SWIPE_APP, !gestureDisabled);
-            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_6, value);
         } else if (preference == mUpSwipeApp) {
             String value = (String) newValue;
             boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
             setGestureEnabled(KEY_UP_SWIPE_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_6, value);
+        } else if (preference == mDownSwipeApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_DOWN_SWIPE_APP, !gestureDisabled);
             Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_7, value);
         } else if (preference == mLeftSwipeApp) {
             String value = (String) newValue;
@@ -258,26 +259,26 @@
 
     public static String getGestureFile(String key) {
         switch(key) {
-            case KEY_CIRCLE_APP:
-                return "/proc/touchpanel/letter_o_enable";
-            case KEY_DOUBLE_SWIPE_APP:
-                return "/proc/touchpanel/double_swipe_enable";
-            case KEY_DOWN_ARROW_APP:
-                return "/proc/touchpanel/down_arrow_enable";
-            case KEY_UP_ARROW_APP:
-                return "/proc/touchpanel/up_arrow_enable";
-            case KEY_LEFT_ARROW_APP:
-                return "/proc/touchpanel/left_arrow_enable";
-            case KEY_RIGHT_ARROW_APP:
-                return "/proc/touchpanel/right_arrow_enable";
-            case KEY_DOWN_SWIPE_APP:
-                return "/proc/touchpanel/down_swipe_enable";
+            case KEY_C_APP:
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_c_mode";
+            case KEY_E_APP:
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_e_mode";
+            case KEY_V_APP:
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_v_mode";
+            case KEY_S_APP:
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_s_mode";
+            case KEY_W_APP:
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_w_mode";
+            case KEY_Z_APP:
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_z_mode";
             case KEY_UP_SWIPE_APP:
-                return "/proc/touchpanel/up_swipe_enable";
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_up_mode";
+            case KEY_DOWN_SWIPE_APP:
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_down_mode";
             case KEY_LEFT_SWIPE_APP:
-                return "/proc/touchpanel/left_swipe_enable";
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_left_mode";
             case KEY_RIGHT_SWIPE_APP:
-                return "/proc/touchpanel/right_swipe_enable";
+                return "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_right_mode";
         }
         return null;
     }
@@ -348,12 +349,12 @@
 
         @Override
         protected void onPostExecute(Void feed) {
-            mDoubleSwipeApp.setPackageList(mInstalledPackages);
-            mCircleApp.setPackageList(mInstalledPackages);
-            mDownArrowApp.setPackageList(mInstalledPackages);
-            mUpArrowApp.setPackageList(mInstalledPackages);
-            mLeftArrowApp.setPackageList(mInstalledPackages);
-            mRightArrowApp.setPackageList(mInstalledPackages);
+            mLetterEGesture.setPackageList(mInstalledPackages);
+            mLetterCGesture.setPackageList(mInstalledPackages);
+            mLetterVGesture.setPackageList(mInstalledPackages);
+            mLetterSGesture.setPackageList(mInstalledPackages);
+            mLetterWGesture.setPackageList(mInstalledPackages);
+            mLetterZGesture.setPackageList(mInstalledPackages);
             mDownSwipeApp.setPackageList(mInstalledPackages);
             mUpSwipeApp.setPackageList(mInstalledPackages);
             mLeftSwipeApp.setPackageList(mInstalledPackages);
diff --git a/DeviceParts/src/org/omnirom/device/KeyHandler.java b/DeviceParts/src/org/omnirom/device/KeyHandler.java
index c591afa..99466ea 100644
--- a/DeviceParts/src/org/omnirom/device/KeyHandler.java
+++ b/DeviceParts/src/org/omnirom/device/KeyHandler.java
@@ -72,63 +72,57 @@
     private static final boolean DEBUG_SENSOR = true;
 
     protected static final int GESTURE_REQUEST = 1;
-    private static final int GESTURE_WAKELOCK_DURATION = 2000;
+    private static final int GESTURE_WAKELOCK_DURATION = 1000;
 
-    private static final int GESTURE_CIRCLE_SCANCODE = 250;
-    private static final int GESTURE_V_SCANCODE = 252;
-    private static final int GESTURE_II_SCANCODE = 251;
-    private static final int GESTURE_LEFT_V_SCANCODE = 253;
-    private static final int GESTURE_RIGHT_V_SCANCODE = 254;
-    private static final int GESTURE_A_SCANCODE = 255;
-    private static final int GESTURE_RIGHT_SWIPE_SCANCODE = 63;
-    private static final int GESTURE_LEFT_SWIPE_SCANCODE = 64;
-    private static final int GESTURE_DOWN_SWIPE_SCANCODE = 65;
-    private static final int GESTURE_UP_SWIPE_SCANCODE = 66;
+    private static final int KEY_GESTURE_UP_SWIPE = 258;
+    private static final int KEY_GESTURE_DOWN_SWIPE = 259;
+    private static final int KEY_GESTURE_LEFT_SWIPE = 260;
+    private static final int KEY_GESTURE_RIGHT_SWIPE = 261;
+    private static final int KEY_GESTURE_C = 269;
+    private static final int KEY_GESTURE_E = 263;
+    private static final int KEY_GESTURE_S = 267;
+    private static final int KEY_GESTURE_V = 268;
+    private static final int KEY_GESTURE_W = 266;
+    private static final int KEY_GESTURE_Z = 270;
 
     private static final int KEY_DOUBLE_TAP = 143;
     private static final int KEY_HOME = 102;
     private static final int KEY_BACK = 158;
     private static final int KEY_RECENTS = 580;
-    private static final int KEY_SLIDER_TOP = 601;
-    private static final int KEY_SLIDER_CENTER = 602;
-    private static final int KEY_SLIDER_BOTTOM = 603;
 
     private static final int MIN_PULSE_INTERVAL_MS = 2500;
     private static final String DOZE_INTENT = "com.android.systemui.doze.pulse";
     private static final int HANDWAVE_MAX_DELTA_MS = 1000;
     private static final int POCKET_MIN_DELTA_MS = 5000;
-    private static final int FP_GESTURE_LONG_PRESS = 305;
+    private static final int FP_GESTURE_LONG_PRESS = 188;
 
     private static final int[] sSupportedGestures = new int[]{
-        GESTURE_II_SCANCODE,
-        GESTURE_CIRCLE_SCANCODE,
-        GESTURE_V_SCANCODE,
-        GESTURE_A_SCANCODE,
-        GESTURE_LEFT_V_SCANCODE,
-        GESTURE_RIGHT_V_SCANCODE,
-        GESTURE_DOWN_SWIPE_SCANCODE,
-        GESTURE_UP_SWIPE_SCANCODE,
-        GESTURE_LEFT_SWIPE_SCANCODE,
-        GESTURE_RIGHT_SWIPE_SCANCODE,
-        KEY_DOUBLE_TAP,
-        KEY_SLIDER_TOP,
-        KEY_SLIDER_CENTER,
-        KEY_SLIDER_BOTTOM,
+        KEY_GESTURE_C,
+        KEY_GESTURE_E,
+        KEY_GESTURE_V,
+        KEY_GESTURE_S,
+        KEY_GESTURE_W,
+        KEY_GESTURE_Z,
+        KEY_GESTURE_UP_SWIPE,
+        KEY_GESTURE_DOWN_SWIPE,
+        KEY_GESTURE_LEFT_SWIPE,
+        KEY_GESTURE_RIGHT_SWIPE,
+        //KEY_DOUBLE_TAP,
         FP_GESTURE_LONG_PRESS
     };
 
     private static final int[] sProxiCheckedGestures = new int[]{
-        GESTURE_II_SCANCODE,
-        GESTURE_CIRCLE_SCANCODE,
-        GESTURE_V_SCANCODE,
-        GESTURE_A_SCANCODE,
-        GESTURE_LEFT_V_SCANCODE,
-        GESTURE_RIGHT_V_SCANCODE,
-        GESTURE_DOWN_SWIPE_SCANCODE,
-        GESTURE_UP_SWIPE_SCANCODE,
-        GESTURE_LEFT_SWIPE_SCANCODE,
-        GESTURE_RIGHT_SWIPE_SCANCODE,
-        KEY_DOUBLE_TAP
+        KEY_GESTURE_C,
+        KEY_GESTURE_E,
+        KEY_GESTURE_V,
+        KEY_GESTURE_S,
+        KEY_GESTURE_W,
+        KEY_GESTURE_Z,
+        KEY_GESTURE_UP_SWIPE,
+        KEY_GESTURE_DOWN_SWIPE,
+        KEY_GESTURE_LEFT_SWIPE,
+        KEY_GESTURE_RIGHT_SWIPE
+        //KEY_DOUBLE_TAP
     };
 
     protected final Context mContext;
@@ -155,8 +149,6 @@
     private boolean isFpgesture;
     private boolean isOPCameraAvail;
     private boolean mRestoreUser;
-    private boolean mToggleTorch = false;
-    private boolean mTorchState = false;
 
     private SensorEventListener mProximitySensor = new SensorEventListener() {
         @Override
@@ -268,9 +260,7 @@
         mNoMan = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
         mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
-        //mTiltSensor = getSensor(mSensorManager, "oneplus.sensor.op_motion_detect");
         mTiltSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_TILT_DETECTOR);
-        //mPocketSensor = getSensor(mSensorManager, "oneplus.sensor.pocket");
         mPocketSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
         IntentFilter systemStateFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
         systemStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
@@ -425,30 +415,6 @@
         }
     }
 
-    private void disableTorch() {
-        if (mTorchState) {
-            mToggleTorch = true;
-            mTorchState = false;
-            toggleTorch();
-        }
-    }
-
-    private void toggleTorch() {
-        IStatusBarService service = getStatusBarService();
-        if (service != null) {
-            try {
-                if (mToggleTorch) {
-                    service.toggleCameraFlashState(mTorchState);
-                    mToggleTorch = false;
-                } else {
-                    service.toggleCameraFlash();
-                }
-            } catch (RemoteException e) {
-                // do nothing.
-            }
-        }
-    }
-
     private Intent createIntent(String value) {
         ComponentName componentName = ComponentName.unflattenFromString(value);
         Intent intent = new Intent(Intent.ACTION_MAIN);
@@ -462,8 +428,15 @@
     private boolean launchSpecialActions(String value) {
         if (value.equals(AppSelectListPreference.TORCH_ENTRY)) {
             mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION);
-            toggleTorch();
-            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            IStatusBarService service = getStatusBarService();
+            if (service != null) {
+                try {
+                    service.toggleCameraFlash();
+                    OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+                } catch (RemoteException e) {
+                    // do nothing.
+                }
+            }
             return true;
         } else if (value.equals(AppSelectListPreference.MUSIC_PLAY_ENTRY)) {
             mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION);
@@ -518,34 +491,34 @@
 
     private String getGestureValueForScanCode(int scanCode) {
         switch(scanCode) {
-            case GESTURE_II_SCANCODE:
+            case KEY_GESTURE_C:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_0, UserHandle.USER_CURRENT);
-            case GESTURE_CIRCLE_SCANCODE:
+            case KEY_GESTURE_E:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_1, UserHandle.USER_CURRENT);
-            case GESTURE_V_SCANCODE:
+            case KEY_GESTURE_V:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_2, UserHandle.USER_CURRENT);
-            case GESTURE_A_SCANCODE:
+            case KEY_GESTURE_S:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_3, UserHandle.USER_CURRENT);
-            case GESTURE_LEFT_V_SCANCODE:
+            case KEY_GESTURE_W:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_4, UserHandle.USER_CURRENT);
-            case GESTURE_RIGHT_V_SCANCODE:
+            case KEY_GESTURE_Z:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_5, UserHandle.USER_CURRENT);
-            case GESTURE_DOWN_SWIPE_SCANCODE:
+            case KEY_GESTURE_UP_SWIPE:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_6, UserHandle.USER_CURRENT);
-            case GESTURE_UP_SWIPE_SCANCODE:
+            case KEY_GESTURE_DOWN_SWIPE:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_7, UserHandle.USER_CURRENT);
-            case GESTURE_LEFT_SWIPE_SCANCODE:
+            case KEY_GESTURE_LEFT_SWIPE:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_8, UserHandle.USER_CURRENT);
-            case GESTURE_RIGHT_SWIPE_SCANCODE:
+            case KEY_GESTURE_RIGHT_SWIPE:
                 return Settings.System.getStringForUser(mContext.getContentResolver(),
                     GestureSettings.DEVICE_GESTURE_MAPPING_9, UserHandle.USER_CURRENT);
         }
@@ -595,9 +568,4 @@
     IStatusBarService getStatusBarService() {
         return IStatusBarService.Stub.asInterface(ServiceManager.getService("statusbar"));
     }
-
-    @Override
-    public boolean getCustomProxiIsNear(SensorEvent event) {
-        return event.values[0] == 1;
-    }
 }
diff --git a/DeviceParts/src/org/omnirom/device/Startup.java b/DeviceParts/src/org/omnirom/device/Startup.java
index 5920134..b853564 100644
--- a/DeviceParts/src/org/omnirom/device/Startup.java
+++ b/DeviceParts/src/org/omnirom/device/Startup.java
@@ -66,7 +66,7 @@
             Settings.System.putString(context.getContentResolver(), mapping, value);
         }
         boolean enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
-        restore(getGestureFile(GestureSettings.KEY_DOUBLE_SWIPE_APP), enabled);
+        restore(getGestureFile(GestureSettings.KEY_C_APP), enabled);
 
         // circle -> camera
         mapping = GestureSettings.DEVICE_GESTURE_MAPPING_1;
@@ -76,7 +76,7 @@
             Settings.System.putString(context.getContentResolver(), mapping, value);
         }
         enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
-        restore(getGestureFile(GestureSettings.KEY_CIRCLE_APP), enabled);
+        restore(getGestureFile(GestureSettings.KEY_E_APP), enabled);
 
         // down arrow -> flashlight
         mapping = GestureSettings.DEVICE_GESTURE_MAPPING_2;
@@ -86,12 +86,17 @@
             Settings.System.putString(context.getContentResolver(), mapping, value);
         }
         enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
-        restore(getGestureFile(GestureSettings.KEY_DOWN_ARROW_APP), enabled);
+        restore(getGestureFile(GestureSettings.KEY_V_APP), enabled);
 
         // up arrow
+        mapping = GestureSettings.DEVICE_GESTURE_MAPPING_3;
+        if (TextUtils.isEmpty(value)) {
+            value = AppSelectListPreference.TORCH_ENTRY;
+            Settings.System.putString(context.getContentResolver(), mapping, value);
+        }
         value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_3);
         enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
-        restore(getGestureFile(GestureSettings.KEY_UP_ARROW_APP), enabled);
+        restore(getGestureFile(GestureSettings.KEY_S_APP), enabled);
 
         // left arrow -> music prev
         mapping = GestureSettings.DEVICE_GESTURE_MAPPING_4;
@@ -101,7 +106,7 @@
             Settings.System.putString(context.getContentResolver(), mapping, value);
         }
         enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
-        restore(getGestureFile(GestureSettings.KEY_LEFT_ARROW_APP), enabled);
+        restore(getGestureFile(GestureSettings.KEY_W_APP), enabled);
 
         // right arrow -> music next
         mapping = GestureSettings.DEVICE_GESTURE_MAPPING_5;
@@ -111,18 +116,18 @@
             Settings.System.putString(context.getContentResolver(), mapping, value);
         }
         enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
-        restore(getGestureFile(GestureSettings.KEY_RIGHT_ARROW_APP), enabled);
-
-        // down swipe
-        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_6);
-        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
-        restore(getGestureFile(GestureSettings.KEY_DOWN_SWIPE_APP), enabled);
+        restore(getGestureFile(GestureSettings.KEY_Z_APP), enabled);
 
         // up swipe
-        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_7);
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_6);
         enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
         restore(getGestureFile(GestureSettings.KEY_UP_SWIPE_APP), enabled);
 
+        // down swipe
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_7);
+        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_DOWN_SWIPE_APP), enabled);
+
         // left swipe
         value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_8);
         enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
diff --git a/keylayout/fts_ts.kl b/keylayout/fts_ts.kl
index 089d86e..0f8d162 100644
--- a/keylayout/fts_ts.kl
+++ b/keylayout/fts_ts.kl
@@ -1,11 +1,15 @@
-key 116    GESTURE_DOUBLE_CLICK          WAKE    VIRTUAL
-key 103    GESTURE_SWIPE_UP          WAKE    VIRTUAL
+#key 116    GESTURE_DOUBLE_CLICK          WAKE    VIRTUAL
+#key 103    GESTURE_SWIPE_UP          WAKE    VIRTUAL
 key 158    BACK               VIRTUAL
-key 139    APP_SWITCH         VIRTUAL
+#key 139    APP_SWITCH         VIRTUAL
 key 102    HOME               VIRTUAL
-key 17     GESTURE_W      WAKE    VIRTUAL
-key 31     GESTURE_S      WAKE    VIRTUAL
-key 18     GESTURE_E      WAKE    VIRTUAL
-key 46     GESTURE_C      WAKE    VIRTUAL
-key 44     GESTURE_Z      WAKE    VIRTUAL
-key 47     GESTURE_V      WAKE    VIRTUAL
+key 258     GESTURE_UP_SWIPE          WAKE    VIRTUAL
+key 259     GESTURE_DOWN_SWIPE        WAKE    VIRTUAL
+key 260     GESTURE_LEFT_SWIPE        WAKE    VIRTUAL
+key 261     GESTURE_RIGHT_SWIPE       WAKE    VIRTUAL
+key 266     GESTURE_W      WAKE    VIRTUAL
+key 267     GESTURE_S      WAKE    VIRTUAL
+key 263     GESTURE_E      WAKE    VIRTUAL
+key 269     GESTURE_C      WAKE    VIRTUAL
+key 270     GESTURE_Z      WAKE    VIRTUAL
+key 268     GESTURE_V      WAKE    VIRTUAL
\ No newline at end of file
diff --git a/keylayout/goodixfp.kl b/keylayout/goodixfp.kl
index 3ec1325..b06d453 100644
--- a/keylayout/goodixfp.kl
+++ b/keylayout/goodixfp.kl
@@ -1,10 +1,4 @@
-key 102   HOME                      VIRTUAL
-key 103   SYSTEM_NAVIGATION_UP      GESTURE
-key 105   SYSTEM_NAVIGATION_LEFT    GESTURE
-key 106   SYSTEM_NAVIGATION_RIGHT   GESTURE
-key 108   SYSTEM_NAVIGATION_DOWN    GESTURE
-
-key 187   FINGERPRINT_TAP           GESTURE
-key 188   FINGERPRINT_DTAP          GESTURE
-key 189   FINGERPRINT_LONGPRESS     GESTURE
-key 192   FINGERPRINT_EARLYWAKEUP   GESTURE
+key 103   SYSTEM_NAVIGATION_UP
+key 108   SYSTEM_NAVIGATION_DOWN
+key 105   SYSTEM_NAVIGATION_LEFT
+key 106   SYSTEM_NAVIGATION_RIGHT
\ No newline at end of file
diff --git a/prebuilt/system/etc/init/init.qcom.rc b/prebuilt/system/etc/init/init.qcom.rc
index 77d8b60..198323a 100644
--- a/prebuilt/system/etc/init/init.qcom.rc
+++ b/prebuilt/system/etc/init/init.qcom.rc
@@ -2,4 +2,39 @@
     mount none /system/etc/audio_policy_configuration.xml /vendor/etc/audio/audio_policy_configuration.xml bind
     mount none /system/etc/fstab.qcom /vendor/etc/fstab.qcom bind
     mount none /system/lib/modules/wlan.ko /vendor/lib/modules/qca_cld3_wlan.ko bind
-    mount none /system/lib64/hw/lights.msmnile.so /vendor/lib64/hw/lights.msmnile.so bind
\ No newline at end of file
+    mount none /system/lib64/hw/lights.msmnile.so /vendor/lib64/hw/lights.msmnile.so bind
+
+on boot
+    # Gestures
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_c_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_c_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_e_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_e_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_v_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_v_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_s_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_s_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_w_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_w_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_z_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_z_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_left_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_left_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_right_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_right_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_up_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_up_mode
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_down_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/fts_gesture_down_mode
diff --git a/sepolicy/private/file.te b/sepolicy/private/file.te
index b99e56a..d5662e6 100644
--- a/sepolicy/private/file.te
+++ b/sepolicy/private/file.te
@@ -2,4 +2,17 @@
 type asdf_file, file_type;
 type demoapp_file, file_type;
 type voucher_file, file_type;
-type xrom_file, file_type;
\ No newline at end of file
+type xrom_file, file_type;
+
+# Offscreen Gestures
+type fts_gesture_mode, fs_type;
+type fts_gesture_c_mode, fs_type;
+type fts_gesture_e_mode, fs_type;
+type fts_gesture_v_mode, fs_type;
+type fts_gesture_s_mode, fs_type;
+type fts_gesture_w_mode, fs_type;
+type fts_gesture_z_mode, fs_type;
+type fts_gesture_left_mode, fs_type;
+type fts_gesture_right_mode, fs_type;
+type fts_gesture_up_mode, fs_type;
+type fts_gesture_down_mode, fs_type;
\ No newline at end of file
diff --git a/sepolicy/private/system_app.te b/sepolicy/private/system_app.te
new file mode 100644
index 0000000..ca8d554
--- /dev/null
+++ b/sepolicy/private/system_app.te
@@ -0,0 +1,27 @@
+allow system_app {
+  fts_gesture_mode
+  -fts_gesture_c_mode
+  -fts_gesture_e_mode
+  -fts_gesture_v_mode
+  -fts_gesture_s_mode
+  -fts_gesture_w_mode
+  -fts_gesture_z_mode
+  -fts_gesture_up_mode
+  -fts_gesture_down_mode
+  -fts_gesture_left_mode
+  -fts_gesture_right_mode
+}:file { open write };
+
+allow system_app {
+  fts_gesture_mode
+  -fts_gesture_c_mode
+  -fts_gesture_e_mode
+  -fts_gesture_v_mode
+  -fts_gesture_s_mode
+  -fts_gesture_w_mode
+  -fts_gesture_z_mode
+  -fts_gesture_up_mode
+  -fts_gesture_down_mode
+  -fts_gesture_left_mode
+  -fts_gesture_right_mode
+}:file getattr;
\ No newline at end of file
