DeviceParts: Add DT2W Support
diff --git a/DeviceParts/src/org/omnirom/device/KeyHandler.java b/DeviceParts/src/org/omnirom/device/KeyHandler.java
index 99466ea..aacded0 100644
--- a/DeviceParts/src/org/omnirom/device/KeyHandler.java
+++ b/DeviceParts/src/org/omnirom/device/KeyHandler.java
@@ -49,6 +49,7 @@
 import android.os.Vibrator;
 import android.provider.Settings;
 import android.provider.Settings.Global;
+import android.provider.Settings.Secure;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.SubscriptionInfo;
@@ -96,6 +97,8 @@
     private static final int POCKET_MIN_DELTA_MS = 5000;
     private static final int FP_GESTURE_LONG_PRESS = 188;
 
+    private static final String DT2W_CONTROL_PATH = "/sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/dclick_mode";
+
     private static final int[] sSupportedGestures = new int[]{
         KEY_GESTURE_C,
         KEY_GESTURE_E,
@@ -107,7 +110,7 @@
         KEY_GESTURE_DOWN_SWIPE,
         KEY_GESTURE_LEFT_SWIPE,
         KEY_GESTURE_RIGHT_SWIPE,
-        //KEY_DOUBLE_TAP,
+        KEY_DOUBLE_TAP,
         FP_GESTURE_LONG_PRESS
     };
 
@@ -121,8 +124,8 @@
         KEY_GESTURE_UP_SWIPE,
         KEY_GESTURE_DOWN_SWIPE,
         KEY_GESTURE_LEFT_SWIPE,
-        KEY_GESTURE_RIGHT_SWIPE
-        //KEY_DOUBLE_TAP
+        KEY_GESTURE_RIGHT_SWIPE,
+        KEY_DOUBLE_TAP
     };
 
     protected final Context mContext;
@@ -149,6 +152,7 @@
     private boolean isFpgesture;
     private boolean isOPCameraAvail;
     private boolean mRestoreUser;
+    private boolean mDoubleTapToWake;
 
     private SensorEventListener mProximitySensor = new SensorEventListener() {
         @Override
@@ -201,6 +205,9 @@
             mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor(
                     Settings.System.OMNI_DEVICE_FEATURE_SETTINGS),
                     false, this);
+            mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
+                    Settings.Secure.DOUBLE_TAP_TO_WAKE),
+                    false, this);
             update();
             updateDozeSettings();
         }
@@ -224,6 +231,9 @@
             mUseProxiCheck = Settings.System.getIntForUser(
                     mContext.getContentResolver(), Settings.System.OMNI_DEVICE_PROXI_CHECK_ENABLED, 1,
                     UserHandle.USER_CURRENT) == 1;
+            mDoubleTapToWake = Settings.Secure.getInt(
+                    mContext.getContentResolver(), Settings.Secure.DOUBLE_TAP_TO_WAKE, 1) == 1;
+                    updateDoubleTapToWake();
         }
     }
 
@@ -401,6 +411,13 @@
         }
     }
 
+    private void updateDoubleTapToWake() {
+        Log.i(TAG, "udateDoubleTapToWake " + mDoubleTapToWake);
+        if (Utils.fileWritable(DT2W_CONTROL_PATH)) {
+            Utils.writeValue(DT2W_CONTROL_PATH, mDoubleTapToWake ? "1" : "0");
+        }
+    }
+
     private void onDisplayOff() {
         if (DEBUG) Log.i(TAG, "Display off");
         if (enableProxiSensor()) {
diff --git a/prebuilt/system/etc/init/init.qcom.rc b/prebuilt/system/etc/init/init.qcom.rc
index 198323a..ac70ade 100644
--- a/prebuilt/system/etc/init/init.qcom.rc
+++ b/prebuilt/system/etc/init/init.qcom.rc
@@ -38,3 +38,6 @@
 
     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
+
+    chown system system /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/dclick_mode
+    chmod 0660 /sys/devices/platform/soc/c80000.i2c/i2c-4/4-0038/dclick_mode