Index: src/orca/settings.py
===================================================================
--- src/orca/settings.py	(revision 4071)
+++ src/orca/settings.py	(working copy)
@@ -219,7 +219,7 @@
 #
 DESKTOP_MODIFIER_KEYS = ["Insert", "KP_Insert"]
 LAPTOP_MODIFIER_KEYS  = ["Caps_Lock"]
-orcaModifierKeys      = DESKTOP_MODIFIER_KEYS
+orcaModifierKeys      = ["Insert", "KP_Insert"]
 
 # A new modifier to use (set by the press of any key in the
 # orcaModifierKeys list) to represent the Orca modifier.
Index: src/orca/orca-setup.glade
===================================================================
--- src/orca/orca-setup.glade	(revision 4071)
+++ src/orca/orca-setup.glade	(working copy)
@@ -4763,13 +4763,13 @@
 			  <property name="yalign">0.5</property>
 			  <property name="xpad">0</property>
 			  <property name="ypad">0</property>
-			  <property name="mnemonic_widget">orcaModKeyEntry</property>
+			  <property name="mnemonic_widget">orcaModKeyCombo</property>
 			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
 			  <property name="width_chars">-1</property>
 			  <property name="single_line_mode">False</property>
 			  <property name="angle">0</property>
 			  <accessibility>
-			    <atkrelation target="orcaModKeyEntry" type="label-for"/>
+			    <atkrelation target="orcaModKeyCombo" type="label-for"/>
 			  </accessibility>
 			</widget>
 			<packing>
@@ -4780,19 +4780,23 @@
 		      </child>
 
 		      <child>
-			<widget class="GtkEntry" id="orcaModKeyEntry">
+     			<widget class="GtkComboBox" id="orcaModKeyCombo">
 			  <property name="visible">True</property>
-			  <property name="tooltip" translatable="yes">Orca Modifier Keys</property>
-			  <property name="can_focus">True</property>
-			  <property name="editable">False</property>
-			  <property name="visibility">True</property>
-			  <property name="max_length">0</property>
-			  <property name="text" translatable="yes"></property>
-			  <property name="has_frame">True</property>
-			  <property name="invisible_char">●</property>
-			  <property name="activates_default">False</property>
+			  <property name="items" translatable="yes">Insert+KP_Insert
+Insert
+KP_Insert
+Caps_Lock
+Alt Gr
+Caps_Lock+Alt Gr
+Manually Overridden</property>
+			  <property name="add_tearoffs">False</property>
+			  <property name="focus_on_click">True</property>
+			  <accessibility>
+                              <atkrelation target="orcaModKeyLabel" type="labelled-by"/>
+			  </accessibility>
+			  <signal name="changed" handler="orcaModKeyChanged" last_modification_time="Thu, 11 Jul 2008 18:3:02 GMT"/>
 			</widget>
-			<packing>
+	    		<packing>
 			  <property name="padding">0</property>
 			  <property name="expand">True</property>
 			  <property name="fill">True</property>
Index: src/orca/orca_prefs.py
===================================================================
--- src/orca/orca_prefs.py	(revision 4071)
+++ src/orca/orca_prefs.py	(working copy)
@@ -226,14 +226,6 @@
         else:
             return "orca.settings.GENERAL_KEYBOARD_LAYOUT_LAPTOP"
 
-    def _getOrcaModifierKeysString(self, orcaModifierKeys):
-        """Returns a string that represents the Orca modifier keys passed in."""
-
-        if orcaModifierKeys == settings.DESKTOP_MODIFIER_KEYS:
-            return "orca.settings.DESKTOP_MODIFIER_KEYS"
-        else:
-            return "orca.settings.LAPTOP_MODIFIER_KEYS"
-
     def _getSpokenTextAttributesString(self, enabledSpokenTextAttributes):
         """ Returns a string that represents the enabled spoken text attributes 
         passed in.
@@ -710,7 +702,7 @@
             elif key == "keyboardLayout":
                 value = self._getKeyboardLayoutString(prefsDict[key])
             elif key == "orcaModifierKeys":
-                value = self._getOrcaModifierKeysString(prefsDict[key])
+                value = str(prefsDict[key])
             elif key == "enabledSpokenTextAttributes":
                 value = self._getSpokenTextAttributesString(prefsDict[key])
             elif key == "enabledBrailledTextAttributes":
Index: src/orca/orca_gui_prefs.py
===================================================================
--- src/orca/orca_gui_prefs.py	(revision 4071)
+++ src/orca/orca_gui_prefs.py	(working copy)
@@ -2235,9 +2235,23 @@
         if not self.keyBindingsModel.iter_has_child(iterUnbound):
             self.keyBindingsModel.remove(iterUnbound)
 
-        self.orcaModKeyEntry = self.widgets.get_widget("orcaModKeyEntry")
-        self.orcaModKeyEntry.set_text(
-            str(settings.orcaModifierKeys)[1:-1].replace("'",""))
+        keys = settings.orcaModifierKeys
+        if keys == ["Insert", "KP_Insert"]:
+            index = 0
+        elif keys == ["Insert"]:
+            index = 1
+        elif keys == ["KP_Insert"]:
+            index = 2
+        elif keys == ["Caps_Lock"]:
+            index = 3
+        elif keys == ["ISO_Level3_Shift"]:
+            index = 4
+        elif keys == ["Caps_Lock", "ISO_Level3_Shift"]:
+            index = 5
+        else:
+            index = 6
+            
+        self.get_widget("orcaModKeyCombo").set_active(index)
 
         self._markModified()
 
@@ -3540,6 +3554,34 @@
             mag.setZoomerColorInversion(value)
         self.prefsDict["enableMagZoomerColorInversion"] = value
 
+    def orcaModKeyChanged(self, widget):
+        """Signal handler for the "changed" signal for the orcaModKeyCombo
+           GtkComboBox widget. Set the 'orcaModifierKeys' preference to the
+           new value.
+
+        Arguments:
+        - widget: the component that generated the signal.
+        """
+
+        keys = widget.get_active_text()
+        if keys == _("Insert"):
+            keys = ["Insert"]
+        elif keys == _("KP_Insert"):
+            keys = ["KP_Insert"]
+        elif keys == _("Caps_Lock"):
+            keys = ["Caps_Lock"]
+        elif keys == _("Alt Gr"):
+            keys = ["ISO_Level3_Shift"]
+        elif keys == _("Insert+KP_Insert"):
+            keys = ["Insert", "KP_Insert"]
+        elif keys == _("Caps_Lock+Alt Gr"):
+            keys = ["Caps_Lock", "ISO_Level3_Shift"]
+        elif keys == _("Manually Overridden"):
+            keys = settings.orcaModifierKeys
+        #saving the chosen option in our settings.
+        self.prefsDict["orcaModifierKeys"] = keys
+        
+
     def keyModifiedToggle(self, cell, path, model, col):
         """When the user changes a checkbox field (boolean field)"""
 
@@ -3741,14 +3783,11 @@
             if widget.get_label() == _("_Desktop"):
                 self.prefsDict["keyboardLayout"] = \
                     settings.GENERAL_KEYBOARD_LAYOUT_DESKTOP
-                self.prefsDict["orcaModifierKeys"] = \
-                    settings.DESKTOP_MODIFIER_KEYS
             else:
                 self.prefsDict["keyboardLayout"] = \
                     settings.GENERAL_KEYBOARD_LAYOUT_LAPTOP
-                self.prefsDict["orcaModifierKeys"] = \
-                    settings.LAPTOP_MODIFIER_KEYS
 
+
     def pronunciationAddButtonClicked(self, widget):
         """Signal handler for the "clicked" signal for the
         pronunciationAddButton GtkButton widget. The user has clicked
