diff --git a/java/res/layout/input_trans.xml b/java/res/layout/input_trans.xml deleted file mode 100644 index 4c0979c04389abd308e66a40442b420e3d125139..0000000000000000000000000000000000000000 --- a/java/res/layout/input_trans.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2010, 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. -*/ ---> - -<com.android.inputmethod.latin.LatinKeyboardView - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" - android:id="@android:id/keyboardView" - android:layout_alignParentBottom="true" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/latinkeyboard_extension_background" - android:verticalCorrection="0dip" - - latin:keyBackground="@drawable/btn_keyboard_key_fulltrans" - /> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index 5b5656d84ae315b56b0d4163f98d53b75f957f21..1c351e86f3fbb1bdaa45c9f9a625a5ad20d3a1b4 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -25,6 +25,10 @@ <integer name="config_preview_fadeout_anim_time">90</integer> <integer name="config_mini_keyboard_fadein_anim_time">0</integer> <integer name="config_mini_keyboard_fadeout_anim_time">100</integer> + <integer name="config_delay_before_key_repeat_start">400</integer> + <integer name="config_key_repeat_interval">50</integer> + <integer name="config_long_press_key_timeout">400</integer> + <integer name="config_multi_tap_key_timeout">800</integer> <string-array name="auto_complete_threshold_values"> <!-- Off, When auto completing setting is Off, this value is not used. --> <item></item> diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java index 05b29b9b5937ace1d36193c5d8b6c0a5f1d48967..d319d402001aea8ce100f45739ae182c3589ad57 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java @@ -154,7 +154,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx } // Timing constants - private static final int REPEAT_INTERVAL = PointerTracker.REPEAT_INTERVAL; + private final int mKeyRepeatInterval; // Miscellaneous constants /* package */ static final int NOT_A_KEY = -1; @@ -261,7 +261,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx case MSG_REPEAT_KEY: { final PointerTracker tracker = (PointerTracker)msg.obj; tracker.repeatKey(msg.arg1); - startKeyRepeatTimer(REPEAT_INTERVAL, msg.arg1, tracker); + startKeyRepeatTimer(mKeyRepeatInterval, msg.arg1, tracker); break; } case MSG_LONGPRESS_KEY: { @@ -542,6 +542,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx mHasDistinctMultitouch = context.getPackageManager() .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT); + mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval); } public void setOnKeyboardActionListener(OnKeyboardActionListener listener) { @@ -1221,7 +1222,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx // Create pointer trackers until we can get 'id+1'-th tracker, if needed. for (int i = pointers.size(); i <= id; i++) { final PointerTracker tracker = - new PointerTracker(i, mHandler, mKeyDetector, this, mHasDistinctMultitouch); + new PointerTracker(i, mHandler, mKeyDetector, this, getResources()); if (keys != null) tracker.setKeyboard(mKeyboard, keys, mKeyHysteresisDistance); if (listener != null) diff --git a/java/src/com/android/inputmethod/latin/PointerTracker.java b/java/src/com/android/inputmethod/latin/PointerTracker.java index 6517a206e306ecf4fb5a1e9c48e632b32c252dbf..a1cc8090ef8b70786f3ba522c3ab08464e49d000 100644 --- a/java/src/com/android/inputmethod/latin/PointerTracker.java +++ b/java/src/com/android/inputmethod/latin/PointerTracker.java @@ -20,9 +20,11 @@ import com.android.inputmethod.latin.BaseKeyboard.Key; import com.android.inputmethod.latin.LatinKeyboardBaseView.OnKeyboardActionListener; import com.android.inputmethod.latin.LatinKeyboardBaseView.UIHandler; +import android.content.res.Resources; +import android.inputmethodservice.Keyboard; +import android.inputmethodservice.Keyboard.Key; import android.util.Log; import android.view.MotionEvent; -import android.view.ViewConfiguration; public class PointerTracker { private static final String TAG = "PointerTracker"; @@ -32,15 +34,15 @@ public class PointerTracker { public interface UIProxy { public void invalidateKey(Key key); public void showPreview(int keyIndex, PointerTracker tracker); + public boolean hasDistinctMultitouch(); } public final int mPointerId; // Timing constants - private static final int REPEAT_START_DELAY = 400; - /* package */ static final int REPEAT_INTERVAL = 50; // ~20 keys per second - private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout(); - private static final int MULTITAP_INTERVAL = 800; // milliseconds + private final int mDelayBeforeKeyRepeatStart; + private final int mLongPressKeyTimeout; + private final int mMultiTapKeyTimeout; // Miscellaneous constants private static final int NOT_A_KEY = LatinKeyboardBaseView.NOT_A_KEY; @@ -164,7 +166,7 @@ public class PointerTracker { } public PointerTracker(int id, UIHandler handler, KeyDetector keyDetector, UIProxy proxy, - boolean hasDistinctMultitouch) { + Resources res) { if (proxy == null || handler == null || keyDetector == null) throw new NullPointerException(); mPointerId = id; @@ -172,7 +174,10 @@ public class PointerTracker { mHandler = handler; mKeyDetector = keyDetector; mKeyState = new KeyState(keyDetector); - mHasDistinctMultitouch = hasDistinctMultitouch; + mHasDistinctMultitouch = proxy.hasDistinctMultitouch(); + mDelayBeforeKeyRepeatStart = res.getInteger(R.integer.config_delay_before_key_repeat_start); + mLongPressKeyTimeout = res.getInteger(R.integer.config_long_press_key_timeout); + mMultiTapKeyTimeout = res.getInteger(R.integer.config_multi_tap_key_timeout); resetMultiTap(); } @@ -279,10 +284,10 @@ public class PointerTracker { if (isValidKeyIndex(keyIndex)) { if (mKeys[keyIndex].repeatable) { repeatKey(keyIndex); - mHandler.startKeyRepeatTimer(REPEAT_START_DELAY, keyIndex, this); + mHandler.startKeyRepeatTimer(mDelayBeforeKeyRepeatStart, keyIndex, this); mIsRepeatableKey = true; } - startLongPressTimer(keyIndex); + mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); } showKeyPreviewAndUpdateKey(keyIndex); } @@ -298,11 +303,11 @@ public class PointerTracker { if (key != null) { if (keyState.getKeyIndex() == NOT_A_KEY) { keyState.onMoveToNewKey(keyIndex, x, y); - startLongPressTimer(keyIndex); + mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); } else if (!isMinorMoveBounce(x, y, keyIndex)) { resetMultiTap(); keyState.onMoveToNewKey(keyIndex, x, y); - startLongPressTimer(keyIndex); + mHandler.startLongPressTimer(mLongPressKeyTimeout, keyIndex, this); } } else { if (keyState.getKeyIndex() != NOT_A_KEY) { @@ -513,7 +518,7 @@ public class PointerTracker { return; final boolean isMultiTap = - (eventTime < mLastTapTime + MULTITAP_INTERVAL && keyIndex == mLastSentIndex); + (eventTime < mLastTapTime + mMultiTapKeyTimeout && keyIndex == mLastSentIndex); if (key.codes.length > 1) { mInMultiTap = true; if (isMultiTap) {