Loading java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +10 −35 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ import com.android.inputmethod.latin.StringUtils; import com.android.inputmethod.latin.SubtypeUtils; import com.android.inputmethod.latin.Utils; import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils; import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils.LogGroup; import java.util.Locale; import java.util.WeakHashMap; Loading @@ -70,9 +69,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke SuddenJumpingTouchEventHandler.ProcessMotionEvent { private static final String TAG = LatinKeyboardView.class.getSimpleName(); // TODO: Kill process when the usability study mode was changed. private static final boolean ENABLE_USABILITY_STUDY_LOG = LatinImeLogger.sUsabilityStudy; /** Listener for {@link KeyboardActionListener}. */ private KeyboardActionListener mKeyboardActionListener; Loading Loading @@ -672,6 +668,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke final int index = me.getActionIndex(); final int id = me.getPointerId(index); final int x, y; final float size = me.getSize(index); final float pressure = me.getPressure(index); if (mMoreKeysPanel != null && id == mMoreKeysPanelPointerTrackerId) { x = mMoreKeysPanel.translateX((int)me.getX(index)); y = mMoreKeysPanel.translateY((int)me.getY(index)); Loading @@ -679,32 +677,11 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke x = (int)me.getX(index); y = (int)me.getY(index); } if (ENABLE_USABILITY_STUDY_LOG) { final String eventTag; switch (action) { case MotionEvent.ACTION_UP: eventTag = "[Up]"; break; case MotionEvent.ACTION_DOWN: eventTag = "[Down]"; break; case MotionEvent.ACTION_POINTER_UP: eventTag = "[PointerUp]"; break; case MotionEvent.ACTION_POINTER_DOWN: eventTag = "[PointerDown]"; break; case MotionEvent.ACTION_MOVE: // Skip this as being logged below eventTag = ""; break; default: eventTag = "[Action" + action + "]"; break; } if (!TextUtils.isEmpty(eventTag)) { UsabilityStudyLogUtils.getInstance().write(LogGroup.MOTION_EVENT, eventTag + eventTime + "," + id + "," + x + "," + y + "," + me.getSize(index) + "," + me.getPressure(index)); if (LatinImeLogger.sUsabilityStudy) { if (action != MotionEvent.ACTION_MOVE) { // Skip ACTION_MOVE events as they are logged below UsabilityStudyLogUtils.getInstance().writeMotionEvent(action, eventTime, id, x, y, size, pressure); } } Loading Loading @@ -764,11 +741,9 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke py = (int)me.getY(i); } tracker.onMoveEvent(px, py, eventTime); if (ENABLE_USABILITY_STUDY_LOG) { UsabilityStudyLogUtils.getInstance().write( LogGroup.MOTION_EVENT, "[Move]" + eventTime + "," + me.getPointerId(i) + "," + px + "," + py + "," + me.getSize(i) + "," + me.getPressure(i)); if (LatinImeLogger.sUsabilityStudy) { UsabilityStudyLogUtils.getInstance().writeMotionEvent(action, eventTime, id, px, py, size, pressure); } } } else { Loading java/src/com/android/inputmethod/latin/LatinIME.java +6 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.keyboard.KeyboardView; import com.android.inputmethod.keyboard.LatinKeyboardView; import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils; import com.android.inputmethod.latin.suggestions.SuggestionsView; import java.io.FileDescriptor; Loading Loading @@ -1266,6 +1267,11 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mDeleteCount = 0; } mLastKeyTime = when; if (LatinImeLogger.sUsabilityStudy) { UsabilityStudyLogUtils.getInstance().writeKeyEvent(primaryCode, x, y); } final KeyboardSwitcher switcher = mKeyboardSwitcher; // The space state depends only on the last character pressed and its own previous // state. Here, we revert the space state to neutral if the key is actually modifying Loading java/src/com/android/inputmethod/latin/Utils.java +48 −22 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ import android.os.Process; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.Log; import android.view.MotionEvent; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import java.io.BufferedReader; Loading Loading @@ -138,9 +140,6 @@ public class Utils { // TODO: accept code points public void push(char c, int x, int y) { if (!mEnabled) return; if (mUsabilityStudy) { UsabilityStudyLogUtils.getInstance().writeChar(c, x, y); } mCharBuf[mEnd] = c; mXBuf[mEnd] = x; mYBuf[mEnd] = y; Loading Loading @@ -279,30 +278,57 @@ public class Utils { } } public static void writeBackSpace(int x, int y) { UsabilityStudyLogUtils.getInstance().write( LogGroup.KEY, "<backspace>\t" + x + "\t" + y); public void writeMotionEvent(final int action, final long eventTime, final int id, final int x, final int y, final float size, final float pressure) { final String eventTag; switch (action) { case MotionEvent.ACTION_CANCEL: eventTag = "[Cancel]"; break; case MotionEvent.ACTION_UP: eventTag = "[Up]"; break; case MotionEvent.ACTION_DOWN: eventTag = "[Down]"; break; case MotionEvent.ACTION_POINTER_UP: eventTag = "[PointerUp]"; break; case MotionEvent.ACTION_POINTER_DOWN: eventTag = "[PointerDown]"; break; case MotionEvent.ACTION_MOVE: eventTag = "[Move]"; break; case MotionEvent.ACTION_OUTSIDE: eventTag = "[Outside]"; break; default: eventTag = "[Action" + action + "]"; break; } if (!TextUtils.isEmpty(eventTag)) { StringBuilder sb = new StringBuilder(); sb.append(eventTag); sb.append('\t'); sb.append(eventTime); sb.append('\t'); sb.append(id); sb.append('\t'); sb.append(x); sb.append('\t'); sb.append(y); sb.append('\t'); sb.append(size); sb.append('\t'); sb.append(pressure); write(LogGroup.MOTION_EVENT, sb.toString()); } public void writeChar(char c, int x, int y) { String inputChar = String.valueOf(c); switch (c) { case '\n': inputChar = "<enter>"; break; case '\t': inputChar = "<tab>"; break; case ' ': inputChar = "<space>"; break; } UsabilityStudyLogUtils.getInstance().write(LogGroup.KEY, inputChar + "\t" + x + "\t" + y); public void writeKeyEvent(int code, int x, int y) { final StringBuilder sb = new StringBuilder(); sb.append(Keyboard.printableCode(code)); sb.append('\t'); sb.append(x); sb.append('\t'); sb.append(y); write(LogGroup.KEY, sb.toString()); // TODO: replace with a cleaner flush+retrieve mechanism LatinImeLogger.onPrintAllUsabilityStudyLogs(); } public void write(final LogGroup logGroup, final String log) { public void writeCorrection(String subgroup, String before, String after, int position) { final StringBuilder sb = new StringBuilder(); sb.append(subgroup); sb.append('\t'); sb.append(before); sb.append('\t'); sb.append(after); sb.append('\t'); sb.append(position); write(LogGroup.CORRECTION, sb.toString()); } public void writeStateChange(String subgroup, String details) { write(LogGroup.STATE_CHANGE, subgroup + "\t" + details); } private void write(final LogGroup logGroup, final String log) { mLoggingHandler.post(new Runnable() { @Override public void run() { Loading Loading
java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +10 −35 Original line number Diff line number Diff line Loading @@ -54,7 +54,6 @@ import com.android.inputmethod.latin.StringUtils; import com.android.inputmethod.latin.SubtypeUtils; import com.android.inputmethod.latin.Utils; import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils; import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils.LogGroup; import java.util.Locale; import java.util.WeakHashMap; Loading @@ -70,9 +69,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke SuddenJumpingTouchEventHandler.ProcessMotionEvent { private static final String TAG = LatinKeyboardView.class.getSimpleName(); // TODO: Kill process when the usability study mode was changed. private static final boolean ENABLE_USABILITY_STUDY_LOG = LatinImeLogger.sUsabilityStudy; /** Listener for {@link KeyboardActionListener}. */ private KeyboardActionListener mKeyboardActionListener; Loading Loading @@ -672,6 +668,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke final int index = me.getActionIndex(); final int id = me.getPointerId(index); final int x, y; final float size = me.getSize(index); final float pressure = me.getPressure(index); if (mMoreKeysPanel != null && id == mMoreKeysPanelPointerTrackerId) { x = mMoreKeysPanel.translateX((int)me.getX(index)); y = mMoreKeysPanel.translateY((int)me.getY(index)); Loading @@ -679,32 +677,11 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke x = (int)me.getX(index); y = (int)me.getY(index); } if (ENABLE_USABILITY_STUDY_LOG) { final String eventTag; switch (action) { case MotionEvent.ACTION_UP: eventTag = "[Up]"; break; case MotionEvent.ACTION_DOWN: eventTag = "[Down]"; break; case MotionEvent.ACTION_POINTER_UP: eventTag = "[PointerUp]"; break; case MotionEvent.ACTION_POINTER_DOWN: eventTag = "[PointerDown]"; break; case MotionEvent.ACTION_MOVE: // Skip this as being logged below eventTag = ""; break; default: eventTag = "[Action" + action + "]"; break; } if (!TextUtils.isEmpty(eventTag)) { UsabilityStudyLogUtils.getInstance().write(LogGroup.MOTION_EVENT, eventTag + eventTime + "," + id + "," + x + "," + y + "," + me.getSize(index) + "," + me.getPressure(index)); if (LatinImeLogger.sUsabilityStudy) { if (action != MotionEvent.ACTION_MOVE) { // Skip ACTION_MOVE events as they are logged below UsabilityStudyLogUtils.getInstance().writeMotionEvent(action, eventTime, id, x, y, size, pressure); } } Loading Loading @@ -764,11 +741,9 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke py = (int)me.getY(i); } tracker.onMoveEvent(px, py, eventTime); if (ENABLE_USABILITY_STUDY_LOG) { UsabilityStudyLogUtils.getInstance().write( LogGroup.MOTION_EVENT, "[Move]" + eventTime + "," + me.getPointerId(i) + "," + px + "," + py + "," + me.getSize(i) + "," + me.getPressure(i)); if (LatinImeLogger.sUsabilityStudy) { UsabilityStudyLogUtils.getInstance().writeMotionEvent(action, eventTime, id, px, py, size, pressure); } } } else { Loading
java/src/com/android/inputmethod/latin/LatinIME.java +6 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.keyboard.KeyboardView; import com.android.inputmethod.keyboard.LatinKeyboardView; import com.android.inputmethod.latin.Utils.UsabilityStudyLogUtils; import com.android.inputmethod.latin.suggestions.SuggestionsView; import java.io.FileDescriptor; Loading Loading @@ -1266,6 +1267,11 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mDeleteCount = 0; } mLastKeyTime = when; if (LatinImeLogger.sUsabilityStudy) { UsabilityStudyLogUtils.getInstance().writeKeyEvent(primaryCode, x, y); } final KeyboardSwitcher switcher = mKeyboardSwitcher; // The space state depends only on the last character pressed and its own previous // state. Here, we revert the space state to neutral if the key is actually modifying Loading
java/src/com/android/inputmethod/latin/Utils.java +48 −22 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ import android.os.Process; import android.text.TextUtils; import android.text.format.DateUtils; import android.util.Log; import android.view.MotionEvent; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import java.io.BufferedReader; Loading Loading @@ -138,9 +140,6 @@ public class Utils { // TODO: accept code points public void push(char c, int x, int y) { if (!mEnabled) return; if (mUsabilityStudy) { UsabilityStudyLogUtils.getInstance().writeChar(c, x, y); } mCharBuf[mEnd] = c; mXBuf[mEnd] = x; mYBuf[mEnd] = y; Loading Loading @@ -279,30 +278,57 @@ public class Utils { } } public static void writeBackSpace(int x, int y) { UsabilityStudyLogUtils.getInstance().write( LogGroup.KEY, "<backspace>\t" + x + "\t" + y); public void writeMotionEvent(final int action, final long eventTime, final int id, final int x, final int y, final float size, final float pressure) { final String eventTag; switch (action) { case MotionEvent.ACTION_CANCEL: eventTag = "[Cancel]"; break; case MotionEvent.ACTION_UP: eventTag = "[Up]"; break; case MotionEvent.ACTION_DOWN: eventTag = "[Down]"; break; case MotionEvent.ACTION_POINTER_UP: eventTag = "[PointerUp]"; break; case MotionEvent.ACTION_POINTER_DOWN: eventTag = "[PointerDown]"; break; case MotionEvent.ACTION_MOVE: eventTag = "[Move]"; break; case MotionEvent.ACTION_OUTSIDE: eventTag = "[Outside]"; break; default: eventTag = "[Action" + action + "]"; break; } if (!TextUtils.isEmpty(eventTag)) { StringBuilder sb = new StringBuilder(); sb.append(eventTag); sb.append('\t'); sb.append(eventTime); sb.append('\t'); sb.append(id); sb.append('\t'); sb.append(x); sb.append('\t'); sb.append(y); sb.append('\t'); sb.append(size); sb.append('\t'); sb.append(pressure); write(LogGroup.MOTION_EVENT, sb.toString()); } public void writeChar(char c, int x, int y) { String inputChar = String.valueOf(c); switch (c) { case '\n': inputChar = "<enter>"; break; case '\t': inputChar = "<tab>"; break; case ' ': inputChar = "<space>"; break; } UsabilityStudyLogUtils.getInstance().write(LogGroup.KEY, inputChar + "\t" + x + "\t" + y); public void writeKeyEvent(int code, int x, int y) { final StringBuilder sb = new StringBuilder(); sb.append(Keyboard.printableCode(code)); sb.append('\t'); sb.append(x); sb.append('\t'); sb.append(y); write(LogGroup.KEY, sb.toString()); // TODO: replace with a cleaner flush+retrieve mechanism LatinImeLogger.onPrintAllUsabilityStudyLogs(); } public void write(final LogGroup logGroup, final String log) { public void writeCorrection(String subgroup, String before, String after, int position) { final StringBuilder sb = new StringBuilder(); sb.append(subgroup); sb.append('\t'); sb.append(before); sb.append('\t'); sb.append(after); sb.append('\t'); sb.append(position); write(LogGroup.CORRECTION, sb.toString()); } public void writeStateChange(String subgroup, String details) { write(LogGroup.STATE_CHANGE, subgroup + "\t" + details); } private void write(final LogGroup logGroup, final String log) { mLoggingHandler.post(new Runnable() { @Override public void run() { Loading