Index: src/LyXRC.h
===================================================================
--- src/LyXRC.h	(revision 35439)
+++ src/LyXRC.h	(working copy)
@@ -110,6 +110,7 @@
 		RC_LANGUAGE_USE_BABEL,
 		RC_LOADSESSION,
 		RC_MACRO_EDIT_STYLE,
+		RC_MAC_DONTSWAP_CTRL_META,
 		RC_MAC_LIKE_WORD_MOVEMENT,
 		RC_MAKE_BACKUP,
 		RC_MARK_FOREIGN_LANGUAGE,
@@ -411,6 +412,8 @@
 	/// all available editors
 	Alternatives editor_alternatives;
 	///
+	bool mac_dontswap_ctrl_meta;
+	///
 	bool mac_like_word_movement;
 	///
 	bool cursor_follows_scrollbar;
Index: src/frontends/qt4/GuiApplication.cpp
===================================================================
--- src/frontends/qt4/GuiApplication.cpp	(revision 35439)
+++ src/frontends/qt4/GuiApplication.cpp	(working copy)
@@ -1988,6 +1988,9 @@
 		return;
 
 #ifdef Q_WS_MACX
+#if QT_VERSION > 0x040600
+	setAttribute(Qt::AA_MacDontSwapCtrlAndMeta,lyxrc.mac_dontswap_ctrl_meta);
+#endif
 	// Create the global default menubar which is shown for the dialogs
 	// and if no GuiView is visible.
 	// This must be done after the session was recovered to know the "last files".
Index: src/frontends/qt4/GuiPrefs.cpp
===================================================================
--- src/frontends/qt4/GuiPrefs.cpp	(revision 35439)
+++ src/frontends/qt4/GuiPrefs.cpp	(working copy)
@@ -464,6 +464,18 @@
 			this, SIGNAL(changed()));
 	connect(scrollzoomValueCO, SIGNAL(activated(int)),
 			this, SIGNAL(changed()));
+
+// GUI_DONTSWAPCB_VISIBLE reveals checkbox for switching Ctrl and Meta on Mac: 
+#ifdef Q_WS_MACX
+#if QT_VERSION > 0x040600
+	connect(dontswapCB, SIGNAL(toggled(bool)),
+		this, SIGNAL(changed()));
+#define GUI_DONTSWAPCB_VISIBLE true
+#endif
+#endif
+#ifndef GUI_DONTSWAPCB_VISIBLE
+	dontswapCB->setVisible(false);
+#endif
 }
 
 
@@ -489,6 +501,9 @@
 	} else {
 		rc.scroll_wheel_zoom = LyXRC::SCROLL_WHEEL_ZOOM_OFF;
 	}
+#ifdef GUI_DONTSWAPCB_VISIBLE
+	rc.mac_dontswap_ctrl_meta  = dontswapCB->isChecked();
+#endif
 }
 
 
@@ -516,6 +531,9 @@
 		scrollzoomValueCO->setCurrentIndex(2);
 		break;
 	}
+#ifdef GUI_DONTSWAPCB_VISIBLE
+	dontswapCB->setChecked(rc.mac_dontswap_ctrl_meta);
+#endif
 }
 
 
Index: src/frontends/qt4/ui/PrefInputUi.ui
===================================================================
--- src/frontends/qt4/ui/PrefInputUi.ui	(revision 35439)
+++ src/frontends/qt4/ui/PrefInputUi.ui	(working copy)
@@ -114,6 +114,16 @@
         </property>
        </widget>
       </item>
+      <item row="3" column="0" colspan="3" >
+       <widget class="QCheckBox" name="dontswapCB" >
+        <property name="text" >
+         <string>Do not swap Meta and Control keys</string>
+        </property>
+        <property name="checked" >
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
Index: src/LyXRC.cpp
===================================================================
--- src/LyXRC.cpp	(revision 35439)
+++ src/LyXRC.cpp	(working copy)
@@ -126,6 +126,7 @@
 	{ "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE },
 	{ "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL },
 	{ "\\load_session", LyXRC::RC_LOADSESSION },
+	{ "\\mac_dontswap_ctrl_meta", LyXRC::RC_MAC_DONTSWAP_CTRL_META },
 	{ "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT },
 	{ "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
 	{ "\\make_backup", LyXRC::RC_MAKE_BACKUP },
@@ -225,6 +226,7 @@
 
 void LyXRC::setDefaults()
 {
+	mac_dontswap_ctrl_meta = false;
 	bind_file = "cua";
 	def_file = "default";
 	ui_file = "default";
@@ -891,6 +893,10 @@
 			lexrc >> paragraph_markers;
 			break;
 
+		case RC_MAC_DONTSWAP_CTRL_META:
+			lexrc >> mac_dontswap_ctrl_meta;
+			break;
+
 		case RC_MAC_LIKE_WORD_MOVEMENT:
 			lexrc >> mac_like_word_movement;
 			break;
@@ -1736,6 +1742,15 @@
 		}
 		if (tag != RC_LAST)
 			break;
+	case RC_MAC_DONTSWAP_CTRL_META:
+		if (ignore_system_lyxrc ||
+		    mac_dontswap_ctrl_meta
+		    != system_lyxrc.mac_dontswap_ctrl_meta) {
+			os << "\\mac_dontswap_ctrl_meta "
+			   << convert<string>(mac_dontswap_ctrl_meta) << '\n';
+		}
+		if (tag != RC_LAST)
+			break;
 	case RC_MAC_LIKE_WORD_MOVEMENT:
 		if (ignore_system_lyxrc ||
 		    mac_like_word_movement
@@ -3049,6 +3064,10 @@
 		str = _("LyX normally doesn't allow the user to scroll further than the bottom of the document. Set to true if you prefer to scroll the bottom of the document to the top of the screen");
 		break;
 
+	case RC_MAC_DONTSWAP_CTRL_META:
+		str = _("Make Apple key act as Meta and Control key as Ctrl.");
+		break;
+
 	case RC_MAC_LIKE_WORD_MOVEMENT:
 		str = _("Use the Mac OS X conventions for the word-level cursor movement");
 		break;
