diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
index 8640912..6f54208 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
@@ -76,4 +76,21 @@
      * @return true if the request has been consumed, false otherwise.
      */
     public boolean onCustomRequest(int requestCode);
+
+    public static class Adapter implements KeyboardActionListener {
+        @Override
+        public void onPress(int primaryCode, boolean withSliding) {}
+        @Override
+        public void onRelease(int primaryCode, boolean withSliding) {}
+        @Override
+        public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) {}
+        @Override
+        public void onTextInput(CharSequence text) {}
+        @Override
+        public void onCancelInput() {}
+        @Override
+        public boolean onCustomRequest(int requestCode) {
+            return false;
+        }
+    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 83bab67..066b756 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -139,20 +139,8 @@
     private boolean mIgnoreModifierKey;
 
     // Empty {@link KeyboardActionListener}
-    private static final KeyboardActionListener EMPTY_LISTENER = new KeyboardActionListener() {
-        @Override
-        public void onPress(int primaryCode, boolean withSliding) {}
-        @Override
-        public void onRelease(int primaryCode, boolean withSliding) {}
-        @Override
-        public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) {}
-        @Override
-        public void onTextInput(CharSequence text) {}
-        @Override
-        public void onCancelInput() {}
-        @Override
-        public boolean onCustomRequest(int requestCode) { return false; }
-    };
+    private static final KeyboardActionListener EMPTY_LISTENER =
+            new KeyboardActionListener.Adapter();
 
     public static void init(boolean hasDistinctMultitouch, Context context) {
         if (hasDistinctMultitouch) {
diff --git a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
index 8b8b27b..c4428dc 100644
--- a/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java
@@ -101,7 +101,8 @@
         public void cancelKeyTimers() {}
     };
 
-    private final KeyboardActionListener mMiniKeyboardListener = new KeyboardActionListener() {
+    private final KeyboardActionListener mMiniKeyboardListener =
+            new KeyboardActionListener.Adapter() {
         @Override
         public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) {
             mListener.onCodeInput(primaryCode, keyCodes, x, y);
@@ -125,8 +126,6 @@
         public void onRelease(int primaryCode, boolean withSliding) {
             mListener.onRelease(primaryCode, withSliding);
         }
-        @Override
-        public boolean onCustomRequest(int requestCode) { return false; }
     };
 
     public PopupMiniKeyboardView(Context context, AttributeSet attrs) {
