[Lenovo Vibe Z2 Pro ROMs, Kernels, Recoveries, & Ot] moneytoo:
Trying to find reason why the navigation keys do not vibrate I found that they do not vibrate because of missing policy flag in a key press handling function (WindowManagerPolicy.FLAG_VIRTUAL). I tried editing the keyboard layouts but no luck. Maybe the touch panel driver sets it (dunno, I didn't look that deep)? I really miss this haptic feedback so I can at least use something like that in Xposed...

XposedHelpers.findAndHookMethod("com.android.internal.policy.impl.PhoneWindowManager", lpparam.classLoader, "interceptKeyBeforeQueueing", KeyEvent.class, int.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
int keyCode = ((KeyEvent) param.args[0]).getKeyCode();
int flag = (int) param.args[1];

if (keyCode == KeyEvent.KEYCODE_MENU || keyCode == KeyEvent.KEYCODE_HOME || keyCode == KeyEvent.KEYCODE_BACK)
param.args[1] = flag | 2;
}
});

I also attempted factory/master reset of the phone from Settings/Backup & reset and got following FC (using 3 day old build from source):

12-21 18:59:51.908 3881-3881/com.android.settings D/SubSettings: Launching fragment com.android.settings.MasterClear
12-21 18:59:51.952 3881-3881/com.android.settings D/AndroidRuntime: Shutting down VM
12-21 18:59:51.953 3881-3881/com.android.settings E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.settings, PID: 3881
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.SubSettings}: java.lang.IllegalArgumentException: Failed to find storage device at /storage/sdcard1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
at android.app.ActivityThread.access$900(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:114)
Caused by: java.lang.IllegalArgumentException: Failed to find storage device at /storage/sdcard1
at android.os.Environment.isExternalStorageRemovable(Environment.java:831)
at com.android.settings.MasterClear.establishInitialState(MasterClear.java:183)
at com.android.settings.MasterClear.onCreateView(MasterClear.java:225)
at android.app.Fragment.performCreateView(Fragment.java:2053)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:894)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1049)
at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1869)
at android.app.Activity.performCreateCommon(Activity.java:5985)
at android.app.Activity.performCreate(Activity.java:5992)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)*
at android.app.ActivityThread.access$900(ActivityThread.java:154)*
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)*
at android.os.Handler.dispatchMessage(Handler.java:102)*
at android.os.Looper.loop(Looper.java:135)*
at android.app.ActivityThread.main(ActivityThread.java:5294)*
at java.lang.reflect.Method.invoke(Native Method)*
at java.lang.reflect.Method.invoke(Method.java:372)*
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)*
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)*
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:114)*
12-21 18:59:51.958 878-1983/system_process W/ActivityManager: Force finishing activity 1 com.android.settings/.SubSettings
12-21 18:59:51.964 878-1983/system_process W/ActivityManager: Force finishing activity 2 com.android.settings/.SubSettings