diff --git a/src/orca/orca.py b/src/orca/orca.py
index 544ed25..9e717f5 100644
--- a/src/orca/orca.py
+++ b/src/orca/orca.py
@@ -409,9 +409,9 @@ def isModifierKey(event_string):
 
     modifierKeys = [ 'Alt_L', 'Alt_R', 'Control_L', 'Control_R', \
                      'Shift_L', 'Shift_R', 'Meta_L', 'Meta_R' ]
-    modifierKeys.extend(settings.orcaModifierKeys)
 
-    reply = event_string in modifierKeys
+    reply = event_string in modifierKeys or (not orca_state.bypassNextCommand \
+        and event_string in settings.orcaModifierKeys)
     debug.println(debug.LEVEL_FINEST,
                   "orca.isModifierKey: returning: %s" % reply)
     return reply
@@ -427,8 +427,8 @@ def isLockingKey(event_string):
 
     lockingKeys = [ "Caps_Lock", "Num_Lock", "Scroll_Lock" ]
 
-    reply = event_string in lockingKeys \
-            and not event_string in settings.orcaModifierKeys
+    reply = event_string in lockingKeys or not (orca_state.bypassNextCommand 
+        or event_string in settings.orcaModifierKeys)
     debug.println(debug.LEVEL_FINEST,
                   "orca.isLockingKey: returning: %s" % reply)
     return reply
@@ -484,7 +484,8 @@ def isNavigationKey(event_string):
 
     navigationKeys = [ "Left", "Right", "Up", "Down" ]
 
-    reply = (event_string in navigationKeys) or _orcaModifierPressed
+    reply = (event_string in navigationKeys) or \
+        (_orcaModifierPressed and not orca_state.bypassNextCommand)
 
     debug.println(debug.LEVEL_FINEST,
                   "orca.isNavigationKey: returning: %s" % reply)
@@ -829,8 +829,10 @@ def _processKeyboardEvent(event):
     elif isOrcaModifier \
         and (keyboardEvent.type == pyatspi.KEY_RELEASED_EVENT):
         _orcaModifierPressed = False
+        if orca_state.bypassNextCommand:
+            restoreXmodmapMods()
 
-    if _orcaModifierPressed:
+    if _orcaModifierPressed and not orca_state.bypassNextCommand:
         keyboardEvent.modifiers = keyboardEvent.modifiers \
                                   | settings.ORCA_MODIFIER_MASK
 
@@ -883,9 +885,11 @@ def _processKeyboardEvent(event):
                 consumed = True
 
             if not consumed \
-               and not isModifierKey(keyboardEvent.event_string) \
                and keyboardEvent.type == pyatspi.KEY_PRESSED_EVENT:
+                if orca_state.bypassNextCommand:
+                    modifyXmodmapMods()
                 orca_state.bypassNextCommand = False
+
     except:
         debug.printException(debug.LEVEL_SEVERE)
 
