diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
index 80ba60c..a34dbef 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
@@ -55,7 +55,22 @@
     private OnKeyEventListener mListener = EMPTY_LISTENER;
     private final KeyDetector mKeyDetector = new KeyDetector();
     private final GestureDetector mGestureDetector;
-    private KeyboardAccessibilityDelegate<EmojiPageKeyboardView> mAccessibilityDelegate;
+    private EmojiPageKeyboardAccessibilityDelegate mAccessibilityDelegate;
+
+    private static final class EmojiPageKeyboardAccessibilityDelegate
+            extends KeyboardAccessibilityDelegate<EmojiPageKeyboardView> {
+        public EmojiPageKeyboardAccessibilityDelegate(final EmojiPageKeyboardView keyboardView,
+                final KeyDetector keyDetector) {
+            super(keyboardView, keyDetector);
+        }
+
+        @Override
+        protected void simulateTouchEvent(int touchAction, MotionEvent hoverEvent) {
+            final MotionEvent touchEvent = synthesizeTouchEvent(touchAction, hoverEvent);
+            mKeyboardView.onTouchEvent(touchEvent);
+            touchEvent.recycle();
+        }
+    }
 
     public EmojiPageKeyboardView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.keyboardViewStyle);
@@ -82,7 +97,8 @@
         mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */);
         if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
             if (mAccessibilityDelegate == null) {
-                mAccessibilityDelegate = new KeyboardAccessibilityDelegate<>(this, mKeyDetector);
+                mAccessibilityDelegate = new EmojiPageKeyboardAccessibilityDelegate(
+                        this, mKeyDetector);
             }
             mAccessibilityDelegate.setKeyboard(keyboard);
         } else {
diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java
index fa51436..f933936 100644
--- a/java/src/com/android/inputmethod/latin/Constants.java
+++ b/java/src/com/android/inputmethod/latin/Constants.java
@@ -263,10 +263,10 @@
         case CODE_ENTER: return "enter";
         case CODE_SPACE: return "space";
         default:
-            if (code < CODE_SPACE) return String.format("\\u%02x", code);
+            if (code < CODE_SPACE) return String.format("\\u%02X", code);
             if (code < 0x100) return String.format("%c", code);
-            if (code < 0x10000) return String.format("\\u04x", code);
-            return String.format("\\U%05x", code);
+            if (code < 0x10000) return String.format("\\u%04X", code);
+            return String.format("\\U%05X", code);
         }
     }
 
