diff --git a/java/res/values/strings-talkback-descriptions.xml b/java/res/values/strings-talkback-descriptions.xml
index 09cc088..80c7bdb 100644
--- a/java/res/values/strings-talkback-descriptions.xml
+++ b/java/res/values/strings-talkback-descriptions.xml
@@ -144,4 +144,9 @@
     <string name="spoken_open_more_keys_keyboard">Alternative characters are available</string>
     <!-- Spoken descriptions when closing a more keys keyboard that has alternative characters. -->
     <string name="spoken_close_more_keys_keyboard">Alternative characters are dismissed</string>
+
+    <!-- Spoken descriptions when opening a more suggestions panel that has alternative suggested words. -->
+    <string name="spoken_open_more_suggestions">Alternative suggestions are available</string>
+    <!-- Spoken descriptions when closing a more suggestions panel that has alternative suggested words. -->
+    <string name="spoken_close_more_suggestions">Alternative suggestions are dismissed</string>
 </resources>
diff --git a/java/src/com/android/inputmethod/accessibility/MoreSuggestionsAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MoreSuggestionsAccessibilityDelegate.java
new file mode 100644
index 0000000..dfc8661
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/MoreSuggestionsAccessibilityDelegate.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.view.MotionEvent;
+
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.MoreKeysKeyboardView;
+
+public final class MoreSuggestionsAccessibilityDelegate
+        extends MoreKeysKeyboardAccessibilityDelegate {
+    public MoreSuggestionsAccessibilityDelegate(final MoreKeysKeyboardView moreKeysKeyboardView,
+            final KeyDetector keyDetector) {
+        super(moreKeysKeyboardView, keyDetector);
+    }
+
+    @Override
+    protected void simulateTouchEvent(final int touchAction, final MotionEvent hoverEvent) {
+        final MotionEvent touchEvent = synthesizeTouchEvent(touchAction, hoverEvent);
+        mKeyboardView.onTouchEvent(touchEvent);
+        touchEvent.recycle();
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
index adb92d3..4ca4abe 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
@@ -44,7 +44,7 @@
 
     private int mActivePointerId;
 
-    private MoreKeysKeyboardAccessibilityDelegate mAccessibilityDelegate;
+    protected MoreKeysKeyboardAccessibilityDelegate mAccessibilityDelegate;
 
     public MoreKeysKeyboardView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.moreKeysKeyboardViewStyle);
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index aa59db6..79a735a 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -20,6 +20,8 @@
 import android.util.AttributeSet;
 import android.util.Log;
 
+import com.android.inputmethod.accessibility.AccessibilityUtils;
+import com.android.inputmethod.accessibility.MoreSuggestionsAccessibilityDelegate;
 import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.keyboard.KeyboardActionListener;
@@ -50,6 +52,18 @@
     }
 
     @Override
+    public void setKeyboard(final Keyboard keyboard) {
+        super.setKeyboard(keyboard);
+        // With accessibility mode off, {@link #mAccessibilityDelegate} is set to null at the
+        // above {@link MoreKeysKeyboardView#setKeyboard(Keyboard)} call.
+        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
+            mAccessibilityDelegate = new MoreSuggestionsAccessibilityDelegate(this, mKeyDetector);
+            mAccessibilityDelegate.setOpenAnnounce(R.string.spoken_open_more_suggestions);
+            mAccessibilityDelegate.setCloseAnnounce(R.string.spoken_close_more_suggestions);
+        }
+    }
+
+    @Override
     protected int getDefaultCoordX() {
         final MoreSuggestions pane = (MoreSuggestions)getKeyboard();
         return pane.mOccupiedWidth / 2;
