diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index 2721544..37d6ccd 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -519,6 +519,36 @@ class Script(default.Script):
                 #
                 _("Speaks entire document."))
 
+        self.inputEventHandlers["panBrailleLeftHandler"] = \
+            input_event.InputEventHandler(
+                Script.panBrailleLeft,
+                # Translators: a refreshable braille display is an
+                # external hardware device that presents braille
+                # character to the user.  There are a limited number
+                # of cells on the display (typically 40 cells).  Orca
+                # provides the feature to build up a longer logical
+                # line and allow the user to press buttons on the
+                # braille display so they can pan left and right over
+                # this line.
+                #
+                _("Pans the braille display to the left."),
+                False) # Do not enable learn mode for this action
+
+        self.inputEventHandlers["panBrailleRightHandler"] = \
+            input_event.InputEventHandler(
+                Script.panBrailleRight,
+                # Translators: a refreshable braille display is an
+                # external hardware device that presents braille
+                # character to the user.  There are a limited number
+                # of cells on the display (typically 40 cells).  Orca
+                # provides the feature to build up a longer logical
+                # line and allow the user to press buttons on the
+                # braille display so they can pan left and right over
+                # this line.
+                #
+                _("Pans the braille display to the right."),
+                False) # Do not enable learn mode for this action
+
     def getListeners(self):
         """Sets up the AT-SPI event listeners for this script.
         """
@@ -2170,7 +2200,8 @@ class Script(default.Script):
         if index < 0:
             self.currentLineContents = self.getLineContentsAtOffset(obj,
                                                                     offset)
-        self.speakContents(self.currentLineContents)
+        if not isinstance(orca_state.lastInputEvent, input_event.BrailleEvent):
+            self.speakContents(self.currentLineContents)
         self.updateBraille(obj)
 
     def updateBraille(self, obj, extraRegion=None):
@@ -2480,6 +2511,38 @@ class Script(default.Script):
 
         self.speakContents(self.getLineContentsAtOffset(obj, characterOffset))
 
+    def panBrailleLeft(self, inputEvent=None, panAmount=0):
+        """In document content, we want to use the panning keys to browse the
+        entire document.
+        """
+        if self.flatReviewContext \
+           or self.isAriaWidget(orca_state.locusOfFocus) \
+           or not self.inDocumentContent() \
+           or not braille.beginningIsShowing:
+            default.Script.panBrailleLeft(self, inputEvent, panAmount)
+        else:
+            self.goPreviousLine(inputEvent)
+            while braille.panRight():
+                pass
+            braille.refresh(False)
+        return True
+
+    def panBrailleRight(self, inputEvent=None, panAmount=0):
+        """In document content, we want to use the panning keys to browse the
+        entire document.
+        """
+        if self.flatReviewContext \
+           or self.isAriaWidget(orca_state.locusOfFocus) \
+           or not self.inDocumentContent() \
+           or not braille.endIsShowing:
+            default.Script.panBrailleRight(self, inputEvent, panAmount)
+        else:
+            self.goNextLine(inputEvent)
+            while braille.panLeft():
+                pass
+            braille.refresh(False)
+        return True
+
     ####################################################################
     #                                                                  #
     # Methods for debugging.                                           #
@@ -6115,7 +6178,8 @@ class Script(default.Script):
                or self.getLineContentsAtOffset(obj, characterOffset)
         obj, characterOffset = line[0][0], line[0][1]
         self.setCaretPosition(obj, characterOffset)
-        self.speakCharacterAtOffset(obj, characterOffset)
+        if not isinstance(orca_state.lastInputEvent, input_event.BrailleEvent):
+            self.speakCharacterAtOffset(obj, characterOffset)
         self.updateBraille(obj)
 
     def goEndOfLine(self, inputEvent):
@@ -6126,7 +6190,8 @@ class Script(default.Script):
                or self.getLineContentsAtOffset(obj, characterOffset)
         obj, characterOffset = line[-1][0], line[-1][2] - 1
         self.setCaretPosition(obj, characterOffset)
-        self.speakCharacterAtOffset(obj, characterOffset)
+        if not isinstance(orca_state.lastInputEvent, input_event.BrailleEvent):
+            self.speakCharacterAtOffset(obj, characterOffset)
         self.updateBraille(obj)
 
     def goTopOfFile(self, inputEvent):
