diff --git a/lineage/res/res/values/config.xml b/lineage/res/res/values/config.xml
index cdd8d4e4..89404dde 100644
--- a/lineage/res/res/values/config.xml
+++ b/lineage/res/res/values/config.xml
@@ -168,4 +168,68 @@
For example, a device with Home, Back and Menu keys would set this
config to 7. -->
79
+
+
+ 3
+
+
+ 0
+
+
+ 2
+
+
+ 9
diff --git a/lineage/res/res/values/symbols.xml b/lineage/res/res/values/symbols.xml
index 6ffd51fd..fbce76d6 100644
--- a/lineage/res/res/values/symbols.xml
+++ b/lineage/res/res/values/symbols.xml
@@ -120,6 +120,12 @@
+
+
+
+
+
+
diff --git a/sdk/src/java/org/lineageos/internal/util/DeviceKeysConstants.java b/sdk/src/java/org/lineageos/internal/util/DeviceKeysConstants.java
index 053afa93..17d7e701 100644
--- a/sdk/src/java/org/lineageos/internal/util/DeviceKeysConstants.java
+++ b/sdk/src/java/org/lineageos/internal/util/DeviceKeysConstants.java
@@ -16,7 +16,42 @@
package org.lineageos.internal.util;
+import android.content.ContentResolver;
+import android.os.UserHandle;
+
+import lineageos.providers.LineageSettings;
+
public class DeviceKeysConstants {
+ // Available custom actions to perform on a key press.
+ // Must match values for KEY_HOME_LONG_PRESS_ACTION in:
+ // sdk/src/java/lineageos/providers/LineageSettings.java
+ public enum Action {
+ NOTHING,
+ MENU,
+ APP_SWITCH,
+ SEARCH,
+ VOICE_SEARCH,
+ IN_APP_SEARCH,
+ LAUNCH_CAMERA,
+ SLEEP,
+ LAST_APP,
+ SPLIT_SCREEN,
+ SINGLE_HAND_LEFT,
+ SINGLE_HAND_RIGHT;
+
+ public static Action fromIntSafe(int id) {
+ if (id < NOTHING.ordinal() || id > Action.values().length) {
+ return NOTHING;
+ }
+ return Action.values()[id];
+ }
+
+ public static Action fromSettings(ContentResolver cr, String setting, Action def) {
+ return fromIntSafe(LineageSettings.System.getIntForUser(cr,
+ setting, def.ordinal(), UserHandle.USER_CURRENT));
+ }
+ }
+
// Masks for checking presence of hardware keys.
// Must match values in:
// lineage/res/res/values/config.xml