diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 70343d4..27718e5 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -207,6 +207,8 @@
     <string name="bars_and_menus_category_power_menu_title">Power menu</string>
     <string name="power_menu_toggle_screenshot_title">Screenshot</string>
     <string name="power_menu_toggle_screenshot_summary">Show screenshot option in Power Menu</string>
+    <string name="power_menu_toggle_screenrecord_title">Screen Record</string>
+    <string name="power_menu_toggle_screenrecord_summary">Show screen Record option in Power Menu</string>
 
     <!-- Active Display Notifications -->
     <string name="ad_settings_title">Active display</string>
diff --git a/res/xml/menus_settings.xml b/res/xml/menus_settings.xml
index 82dec0b..6a5ca69 100644
--- a/res/xml/menus_settings.xml
+++ b/res/xml/menus_settings.xml
@@ -30,6 +30,12 @@
             android:title="@string/power_menu_toggle_screenshot_title"
             android:summary="@string/power_menu_toggle_screenshot_summary"
             android:defaultValue="false" />
+
+    <CheckBoxPreference
+            android:key="power_menu_screenrecord"
+            android:title="@string/power_menu_toggle_screenrecord_title"
+            android:summary="@string/power_menu_toggle_screenrecord_summary"
+            android:defaultValue="false" />
     </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java b/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
index a204673..76630d6 100644
--- a/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
@@ -35,10 +35,13 @@
 public class MenusSettings extends SettingsPreferenceFragment implements
         Preference.OnPreferenceChangeListener {
     private static final String TAG = "MenusSettings";
+    private ContentResolver resolver;
 
     private static final String POWER_MENU_SCREENSHOT = "power_menu_screenshot";
+    private static final String POWER_MENU_SCREENRECORD = "power_menu_screenrecord";
 
     private CheckBoxPreference mScreenshotPowerMenu;
+    private CheckBoxPreference mScreenrecordPowerMenu;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -46,12 +49,24 @@
         addPreferencesFromResource(R.xml.menus_settings);
 
         PreferenceScreen prefSet = getPreferenceScreen();
-        ContentResolver resolver = getActivity().getContentResolver();
+        resolver = getActivity().getContentResolver();
+
+        boolean mHasScreenRecord = getActivity().getResources().getBoolean(
+                com.android.internal.R.bool.config_enableScreenrecordChord);
 
         mScreenshotPowerMenu = (CheckBoxPreference) prefSet.findPreference(POWER_MENU_SCREENSHOT);
         mScreenshotPowerMenu.setChecked(Settings.System.getInt(resolver,
                 Settings.System.SCREENSHOT_IN_POWER_MENU, 0) == 1);
         mScreenshotPowerMenu.setOnPreferenceChangeListener(this);
+
+        mScreenrecordPowerMenu = (CheckBoxPreference) prefSet.findPreference(POWER_MENU_SCREENRECORD);
+        if(mHasScreenRecord) {
+            mScreenrecordPowerMenu.setChecked(Settings.System.getInt(resolver,
+                    Settings.System.SCREENRECORD_IN_POWER_MENU, 0) == 1);
+            mScreenrecordPowerMenu.setOnPreferenceChangeListener(this);
+        } else {
+            prefSet.removePreference(mScreenrecordPowerMenu);
+        }
     }
 
     @Override
@@ -60,10 +75,12 @@
     }
 
     public boolean onPreferenceChange(Preference preference, Object objValue) {
-        ContentResolver resolver = getActivity().getContentResolver();
         if (preference == mScreenshotPowerMenu) {
             boolean value = (Boolean) objValue;
             Settings.System.putInt(resolver, Settings.System.SCREENSHOT_IN_POWER_MENU, value ? 1 : 0);
+        } else if (preference == mScreenrecordPowerMenu) {
+            boolean value = (Boolean) objValue;
+            Settings.System.putInt(resolver, Settings.System.SCREENRECORD_IN_POWER_MENU, value ? 1 : 0);
         } else {
             return false;
         }
