Index: src/orca/default.py
===================================================================
--- src/orca/default.py	(revision 3477)
+++ src/orca/default.py	(working copy)
@@ -1586,6 +1586,20 @@
                 0,
                 self.inputEventHandlers["cycleZoomerTypeHandler"]))
 
+        keyBindings.add(
+            keybindings.KeyBinding(
+                None,
+                0,
+                0,
+                self.inputEventHandlers["panBrailleLeftHandler"]))
+
+        keyBindings.add(
+            keybindings.KeyBinding(
+                None,
+                0,
+                0,
+                self.inputEventHandlers["panBrailleRightHandler"]))
+
         keyBindings = settings.overrideKeyBindings(self, keyBindings)
 
         return keyBindings
@@ -1707,7 +1721,9 @@
         - obj: an accessible
         """
         return obj and \
-            obj.getRole() in (pyatspi.ROLE_TEXT, pyatspi.ROLE_PARAGRAPH)
+            obj.getRole() in (pyatspi.ROLE_TEXT,
+                              pyatspi.ROLE_PARAGRAPH,
+                              pyatspi.ROLE_TERMINAL)
 
     def getText(self, obj, startOffset, endOffset):
         """Returns the substring of the given object's text specialization.
@@ -3767,6 +3783,7 @@
             self.updateBrailleReview(self.targetCursorCell)
         elif braille.beginningIsShowing and orca_state.locusOfFocus \
              and self.isTextArea(orca_state.locusOfFocus):
+
             # If we're at the beginning of a line of a multiline text
             # area, then force it's caret to the end of the previous
             # line.  The assumption here is that we're currently
@@ -3779,8 +3796,20 @@
             [lineString, startOffset, endOffset] = text.getTextAtOffset(
                 text.caretOffset,
                 pyatspi.TEXT_BOUNDARY_LINE_START)
+            movedCaret = False
             if startOffset > 0:
-                text.setCaretOffset(startOffset - 1)
+                movedCaret = text.setCaretOffset(startOffset - 1)
+
+            # If we didn't move the caret and we're in a terminal, we
+            # jump into flat review to review the text.  See 
+            # http://bugzilla.gnome.org/show_bug.cgi?id=482294.
+            #
+            if (not movedCaret) \
+               and (orca_state.locusOfFocus.getRole() \
+                    == pyatspi.ROLE_TERMINAL):
+                context = self.getFlatReviewContext()
+                context.goBegin(flat_review.Context.LINE)
+                self.reviewPreviousCharacter(inputEvent)
         else:
             braille.panLeft(panAmount)
             braille.refresh(False)
Index: src/orca/braillegenerator.py
===================================================================
--- src/orca/braillegenerator.py	(revision 3477)
+++ src/orca/braillegenerator.py	(working copy)
@@ -1408,23 +1408,9 @@
 
         self._debugGenerator("_getBrailleRegionsForTerminal", obj)
 
-        title = None
-        frame = self._script.getFrame(obj)
-        if frame:
-            title = frame.name
-        if not title:
-            title = self._script.getDisplayedLabel(obj)
-
-        text = title
-        text = self._script.appendString(
-            text, rolenames.getBrailleForRoleName(obj))
-
         regions = []
-        regions.append(braille.Region(text))
-
         textRegion = braille.Text(obj)
         regions.append(textRegion)
-
         return [regions, textRegion]
 
     def _getBrailleRegionsForToggleButton(self, obj):
