mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-21 22:59:10 +00:00
allow loading external gesture typing library
This commit is contained in:
parent
ac7ac4f907
commit
8123c79523
38 changed files with 187 additions and 61 deletions
|
@ -16,11 +16,11 @@ Plan / to do:
|
||||||
* test whether it works reasonably well in non-latin scripts
|
* test whether it works reasonably well in non-latin scripts
|
||||||
* ~suggestion fixes, https://github.com/openboard-team/openboard/pull/694, https://github.com/openboard-team/openboard/issues/795, https://github.com/openboard-team/openboard/issues/660~
|
* ~suggestion fixes, https://github.com/openboard-team/openboard/pull/694, https://github.com/openboard-team/openboard/issues/795, https://github.com/openboard-team/openboard/issues/660~
|
||||||
* ~improve auto-space insertion, https://github.com/openboard-team/openboard/pull/576~
|
* ~improve auto-space insertion, https://github.com/openboard-team/openboard/pull/576~
|
||||||
* emoji prediction/search, either https://github.com/openboard-team/openboard/pull/749 or use dictionaries
|
* emoji prediction/search, either https://github.com/openboard-team/openboard/pull/749 (using emoji dictionaries already possible)
|
||||||
* theming, https://github.com/openboard-team/openboard/issues/124
|
* theming, https://github.com/openboard-team/openboard/issues/124
|
||||||
* delete suggestions, https://github.com/openboard-team/openboard/issues/106
|
* delete suggestions, https://github.com/openboard-team/openboard/issues/106
|
||||||
* glide typing, https://github.com/openboard-team/openboard/issues/3
|
* ~gesture typing, https://github.com/openboard-team/openboard/issues/3~
|
||||||
* license issues, maybe allow using an external library
|
* ~license issues, require using an external library~
|
||||||
* re-consider preferring lowercase word for typed history in some cases (DictionaryFacilitatorImpl.addWordToUserHistory)
|
* re-consider preferring lowercase word for typed history in some cases (DictionaryFacilitatorImpl.addWordToUserHistory)
|
||||||
|
|
||||||
Changes:
|
Changes:
|
||||||
|
@ -38,6 +38,9 @@ Changes:
|
||||||
* Reduce amount of unwanted automatic space insertions, https://github.com/openboard-team/openboard/pull/576
|
* Reduce amount of unwanted automatic space insertions, https://github.com/openboard-team/openboard/pull/576
|
||||||
* Exit shift-symbol view on space (same as normal symbol view)
|
* Exit shift-symbol view on space (same as normal symbol view)
|
||||||
* Add multi-lingual typing, slightly modified from https://github.com/openboard-team/openboard/pull/586, https://github.com/openboard-team/openboard/pull/593
|
* Add multi-lingual typing, slightly modified from https://github.com/openboard-team/openboard/pull/586, https://github.com/openboard-team/openboard/pull/593
|
||||||
|
* Allow loading an external library to enable gesture typing, https://github.com/openboard-team/openboard/issues/3
|
||||||
|
* based on wordmage's work https://github.com/openboard-team/openboard/tree/57d33791d7674e3fe0600eddb72f6b4317b5df00
|
||||||
|
* tested with Google libraries and [others](https://github.com/openboard-team/openboard/issues/3#issuecomment-1200456262) (when building with the [rename](https://github.com/openboard-team/openboard/tree/57d33791d7674e3fe0600eddb72f6b4317b5df00))
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,12 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.keyboard;
|
package com.android.inputmethod.keyboard;
|
||||||
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.dslul.openboard.inputmethod.keyboard.Key;
|
||||||
import org.dslul.openboard.inputmethod.keyboard.internal.TouchPositionCorrection;
|
import org.dslul.openboard.inputmethod.keyboard.internal.TouchPositionCorrection;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.Constants;
|
import org.dslul.openboard.inputmethod.latin.common.Constants;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
|
||||||
|
@ -58,7 +59,7 @@ public class ProximityInfo {
|
||||||
private final List<Key>[] mGridNeighbors;
|
private final List<Key>[] mGridNeighbors;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
ProximityInfo(final int gridWidth, final int gridHeight, final int minWidth, final int height,
|
public ProximityInfo(final int gridWidth, final int gridHeight, final int minWidth, final int height,
|
||||||
final int mostCommonKeyWidth, final int mostCommonKeyHeight,
|
final int mostCommonKeyWidth, final int mostCommonKeyHeight,
|
||||||
@Nonnull final List<Key> sortedKeys,
|
@Nonnull final List<Key> sortedKeys,
|
||||||
@Nonnull final TouchPositionCorrection touchPositionCorrection) {
|
@Nonnull final TouchPositionCorrection touchPositionCorrection) {
|
||||||
|
@ -95,7 +96,7 @@ public class ProximityInfo {
|
||||||
|
|
||||||
private static native void releaseProximityInfoNative(long nativeProximityInfo);
|
private static native void releaseProximityInfoNative(long nativeProximityInfo);
|
||||||
|
|
||||||
static boolean needsProximityInfo(final Key key) {
|
public static boolean needsProximityInfo(final Key key) {
|
||||||
// Don't include special keys into ProximityInfo.
|
// Don't include special keys into ProximityInfo.
|
||||||
return key.getCode() >= Constants.CODE_SPACE;
|
return key.getCode() >= Constants.CODE_SPACE;
|
||||||
}
|
}
|
|
@ -14,13 +14,15 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin;
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
|
import org.dslul.openboard.inputmethod.latin.Dictionary;
|
||||||
|
import org.dslul.openboard.inputmethod.latin.NgramContext;
|
||||||
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.ComposedData;
|
import org.dslul.openboard.inputmethod.latin.common.ComposedData;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.Constants;
|
import org.dslul.openboard.inputmethod.latin.common.Constants;
|
||||||
|
@ -33,9 +35,9 @@ import org.dslul.openboard.inputmethod.latin.makedict.FormatSpec.DictionaryOptio
|
||||||
import org.dslul.openboard.inputmethod.latin.makedict.UnsupportedFormatException;
|
import org.dslul.openboard.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||||
import org.dslul.openboard.inputmethod.latin.makedict.WordProperty;
|
import org.dslul.openboard.inputmethod.latin.makedict.WordProperty;
|
||||||
import org.dslul.openboard.inputmethod.latin.settings.SettingsValuesForSuggestion;
|
import org.dslul.openboard.inputmethod.latin.settings.SettingsValuesForSuggestion;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.BinaryDictionaryUtils;
|
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.WordInputEventForPersonalization;
|
import com.android.inputmethod.latin.utils.WordInputEventForPersonalization;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin;
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.latin.common.NativeSuggestOptions;
|
import org.dslul.openboard.inputmethod.latin.common.NativeSuggestOptions;
|
||||||
import org.dslul.openboard.inputmethod.latin.define.DecoderSpecificConstants;
|
import org.dslul.openboard.inputmethod.latin.define.DecoderSpecificConstants;
|
|
@ -14,13 +14,14 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin.utils;
|
package com.android.inputmethod.latin.utils;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
import org.dslul.openboard.inputmethod.latin.BinaryDictionary;
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.makedict.DictionaryHeader;
|
import org.dslul.openboard.inputmethod.latin.makedict.DictionaryHeader;
|
||||||
import org.dslul.openboard.inputmethod.latin.makedict.UnsupportedFormatException;
|
import org.dslul.openboard.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||||
|
import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin.utils;
|
package com.android.inputmethod.latin.utils;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ import org.dslul.openboard.inputmethod.latin.NgramContext;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.define.DecoderSpecificConstants;
|
import org.dslul.openboard.inputmethod.latin.define.DecoderSpecificConstants;
|
||||||
import org.dslul.openboard.inputmethod.latin.settings.SpacingAndPunctuations;
|
import org.dslul.openboard.inputmethod.latin.settings.SpacingAndPunctuations;
|
||||||
|
import org.dslul.openboard.inputmethod.latin.utils.DictionaryInfoUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
|
@ -18,6 +18,8 @@ package org.dslul.openboard.inputmethod.keyboard;
|
||||||
|
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.keyboard.internal.KeyVisualAttributes;
|
import org.dslul.openboard.inputmethod.keyboard.internal.KeyVisualAttributes;
|
||||||
import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardIconsSet;
|
import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardIconsSet;
|
||||||
import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardParams;
|
import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardParams;
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.keyboard;
|
package org.dslul.openboard.inputmethod.keyboard;
|
||||||
|
|
||||||
|
import com.android.inputmethod.keyboard.ProximityInfo;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.dslul.openboard.inputmethod.latin.common.LocaleUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.define.DecoderSpecificConstants;
|
import org.dslul.openboard.inputmethod.latin.define.DecoderSpecificConstants;
|
||||||
import org.dslul.openboard.inputmethod.latin.makedict.DictionaryHeader;
|
import org.dslul.openboard.inputmethod.latin.makedict.DictionaryHeader;
|
||||||
import org.dslul.openboard.inputmethod.latin.makedict.UnsupportedFormatException;
|
import org.dslul.openboard.inputmethod.latin.makedict.UnsupportedFormatException;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.BinaryDictionaryUtils;
|
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.DictionaryInfoUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.DictionaryInfoUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
|
@ -23,6 +23,8 @@ import android.provider.ContactsContract;
|
||||||
import android.provider.ContactsContract.Contacts;
|
import android.provider.ContactsContract.Contacts;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.ExternallyReferenced;
|
import org.dslul.openboard.inputmethod.annotations.ExternallyReferenced;
|
||||||
import org.dslul.openboard.inputmethod.latin.ContactsManager.ContactsChangedListener;
|
import org.dslul.openboard.inputmethod.latin.ContactsManager.ContactsChangedListener;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
||||||
|
|
|
@ -19,6 +19,8 @@ package org.dslul.openboard.inputmethod.latin;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.ComposedData;
|
import org.dslul.openboard.inputmethod.latin.common.ComposedData;
|
||||||
|
@ -32,7 +34,7 @@ import org.dslul.openboard.inputmethod.latin.settings.SettingsValuesForSuggestio
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.AsyncResultHolder;
|
import org.dslul.openboard.inputmethod.latin.utils.AsyncResultHolder;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.CombinedFormatUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.CombinedFormatUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.ExecutorUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.ExecutorUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.WordInputEventForPersonalization;
|
import com.android.inputmethod.latin.utils.WordInputEventForPersonalization;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin;
|
package org.dslul.openboard.inputmethod.latin;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.ComposedData;
|
import org.dslul.openboard.inputmethod.latin.common.ComposedData;
|
||||||
import org.dslul.openboard.inputmethod.latin.settings.SettingsValuesForSuggestion;
|
import org.dslul.openboard.inputmethod.latin.settings.SettingsValuesForSuggestion;
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
package org.dslul.openboard.inputmethod.latin;
|
package org.dslul.openboard.inputmethod.latin;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.keyboard.Keyboard;
|
import org.dslul.openboard.inputmethod.keyboard.Keyboard;
|
||||||
import org.dslul.openboard.inputmethod.keyboard.KeyboardId;
|
import org.dslul.openboard.inputmethod.keyboard.KeyboardId;
|
||||||
|
@ -27,7 +26,7 @@ import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
|
import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
|
||||||
import org.dslul.openboard.inputmethod.latin.settings.SettingsValuesForSuggestion;
|
import org.dslul.openboard.inputmethod.latin.settings.SettingsValuesForSuggestion;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.AutoCorrectionUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.AutoCorrectionUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.BinaryDictionaryUtils;
|
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.SuggestionResults;
|
import org.dslul.openboard.inputmethod.latin.utils.SuggestionResults;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
|
@ -26,6 +26,8 @@ import android.provider.UserDictionary.Words;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.ExternallyReferenced;
|
import org.dslul.openboard.inputmethod.annotations.ExternallyReferenced;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||||
|
|
||||||
|
|
|
@ -2,4 +2,6 @@ package org.dslul.openboard.inputmethod.latin.define
|
||||||
|
|
||||||
object JniLibName {
|
object JniLibName {
|
||||||
const val JNI_LIB_NAME = "jni_latinime"
|
const val JNI_LIB_NAME = "jni_latinime"
|
||||||
|
const val JNI_LIB_NAME_GOOGLE = "jni_latinimegoogle"
|
||||||
|
const val JNI_LIB_IMPORT_FILE_NAME = "libjni_latinime.so"
|
||||||
}
|
}
|
|
@ -17,7 +17,7 @@
|
||||||
package org.dslul.openboard.inputmethod.latin.makedict;
|
package org.dslul.openboard.inputmethod.latin.makedict;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
import org.dslul.openboard.inputmethod.latin.BinaryDictionary;
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.CombinedFormatUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.CombinedFormatUtils;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
package org.dslul.openboard.inputmethod.latin.makedict;
|
package org.dslul.openboard.inputmethod.latin.makedict;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
import org.dslul.openboard.inputmethod.latin.BinaryDictionary;
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
import org.dslul.openboard.inputmethod.latin.Dictionary;
|
import org.dslul.openboard.inputmethod.latin.Dictionary;
|
||||||
import org.dslul.openboard.inputmethod.latin.NgramContext;
|
import org.dslul.openboard.inputmethod.latin.NgramContext;
|
||||||
import org.dslul.openboard.inputmethod.latin.NgramContext.WordInfo;
|
import org.dslul.openboard.inputmethod.latin.NgramContext.WordInfo;
|
||||||
|
|
|
@ -20,7 +20,7 @@ import android.content.Context;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.ExternallyReferenced;
|
import org.dslul.openboard.inputmethod.annotations.ExternallyReferenced;
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
import org.dslul.openboard.inputmethod.latin.BinaryDictionary;
|
import com.android.inputmethod.latin.BinaryDictionary;
|
||||||
import org.dslul.openboard.inputmethod.latin.Dictionary;
|
import org.dslul.openboard.inputmethod.latin.Dictionary;
|
||||||
import org.dslul.openboard.inputmethod.latin.ExpandableBinaryDictionary;
|
import org.dslul.openboard.inputmethod.latin.ExpandableBinaryDictionary;
|
||||||
import org.dslul.openboard.inputmethod.latin.NgramContext;
|
import org.dslul.openboard.inputmethod.latin.NgramContext;
|
||||||
|
|
|
@ -16,14 +16,25 @@
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin.settings;
|
package org.dslul.openboard.inputmethod.latin.settings;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.Preference;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.latin.AudioAndHapticFeedbackManager;
|
import org.dslul.openboard.inputmethod.latin.AudioAndHapticFeedbackManager;
|
||||||
import org.dslul.openboard.inputmethod.latin.R;
|
import org.dslul.openboard.inputmethod.latin.R;
|
||||||
import org.dslul.openboard.inputmethod.latin.SystemBroadcastReceiver;
|
import org.dslul.openboard.inputmethod.latin.SystemBroadcastReceiver;
|
||||||
|
import org.dslul.openboard.inputmethod.latin.define.JniLibName;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* "Advanced" settings sub screen.
|
* "Advanced" settings sub screen.
|
||||||
|
@ -37,6 +48,8 @@ import org.dslul.openboard.inputmethod.latin.SystemBroadcastReceiver;
|
||||||
* - Debug settings
|
* - Debug settings
|
||||||
*/
|
*/
|
||||||
public final class AdvancedSettingsFragment extends SubScreenFragment {
|
public final class AdvancedSettingsFragment extends SubScreenFragment {
|
||||||
|
private final int REQUEST_CODE_GESTURE_LIBRARY = 570289;
|
||||||
|
File libfile = null;
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(final Bundle icicle) {
|
public void onCreate(final Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
@ -57,6 +70,66 @@ public final class AdvancedSettingsFragment extends SubScreenFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
setupKeyLongpressTimeoutSettings();
|
setupKeyLongpressTimeoutSettings();
|
||||||
|
final Preference bla = findPreference("load_gesture_library");
|
||||||
|
if (bla != null) {
|
||||||
|
bla.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
|
// get architecture for telling user which file to use
|
||||||
|
String abi;
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
|
||||||
|
abi = Build.SUPPORTED_ABIS[0];
|
||||||
|
} else {
|
||||||
|
abi = Build.CPU_ABI;
|
||||||
|
}
|
||||||
|
// show delete / add dialog
|
||||||
|
final AlertDialog.Builder builder = new AlertDialog.Builder(context)
|
||||||
|
.setTitle(R.string.load_gesture_library)
|
||||||
|
.setMessage(context.getString(R.string.load_gesture_library_message, abi))
|
||||||
|
.setPositiveButton(R.string.load_gesture_library_button_load, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
|
final Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT)
|
||||||
|
.addCategory(Intent.CATEGORY_OPENABLE)
|
||||||
|
.setType("application/octet-stream");
|
||||||
|
startActivityForResult(intent, REQUEST_CODE_GESTURE_LIBRARY);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.setNegativeButton(android.R.string.cancel, null);
|
||||||
|
libfile = new File(context.getFilesDir().getAbsolutePath() + File.separator + JniLibName.JNI_LIB_IMPORT_FILE_NAME);
|
||||||
|
if (libfile.exists())
|
||||||
|
builder.setNeutralButton(R.string.load_gesture_library_button_delete, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
|
libfile.delete();
|
||||||
|
Runtime.getRuntime().exit(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
|
||||||
|
if (requestCode != REQUEST_CODE_GESTURE_LIBRARY || resultCode != Activity.RESULT_OK || resultData == null) return;
|
||||||
|
if (resultData.getData() != null && libfile != null) {
|
||||||
|
try {
|
||||||
|
FileOutputStream out = new FileOutputStream(libfile);
|
||||||
|
final InputStream in = getActivity().getContentResolver().openInputStream(resultData.getData());
|
||||||
|
byte[] buf = new byte[1024];
|
||||||
|
int len;
|
||||||
|
while ((len = in.read(buf)) > 0) {
|
||||||
|
out.write(buf, 0, len);
|
||||||
|
}
|
||||||
|
out.flush();
|
||||||
|
Runtime.getRuntime().exit(0);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// should inform user
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,3 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2012 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 org.dslul.openboard.inputmethod.latin.settings;
|
package org.dslul.openboard.inputmethod.latin.settings;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
|
|
@ -37,7 +37,7 @@ import org.dslul.openboard.inputmethod.latin.common.Constants;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.LocaleUtils;
|
import org.dslul.openboard.inputmethod.latin.common.LocaleUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
import org.dslul.openboard.inputmethod.latin.common.StringUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
|
import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.BinaryDictionaryUtils;
|
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.ScriptUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.ScriptUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.StatsUtils;
|
import org.dslul.openboard.inputmethod.latin.utils.StatsUtils;
|
||||||
import org.dslul.openboard.inputmethod.latin.utils.SuggestionResults;
|
import org.dslul.openboard.inputmethod.latin.utils.SuggestionResults;
|
||||||
|
|
|
@ -18,6 +18,8 @@ package org.dslul.openboard.inputmethod.latin.utils;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||||
import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
|
import org.dslul.openboard.inputmethod.latin.define.DebugFlags;
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.inputmethod.InputMethodSubtype;
|
import android.view.inputmethod.InputMethodSubtype;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
|
||||||
import org.dslul.openboard.inputmethod.latin.AssetFileAddress;
|
import org.dslul.openboard.inputmethod.latin.AssetFileAddress;
|
||||||
import org.dslul.openboard.inputmethod.latin.BinaryDictionaryGetter;
|
import org.dslul.openboard.inputmethod.latin.BinaryDictionaryGetter;
|
||||||
|
|
|
@ -16,21 +16,49 @@
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin.utils;
|
package org.dslul.openboard.inputmethod.latin.utils;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.dslul.openboard.inputmethod.latin.define.JniLibName;
|
import org.dslul.openboard.inputmethod.latin.define.JniLibName;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
public final class JniUtils {
|
public final class JniUtils {
|
||||||
private static final String TAG = JniUtils.class.getSimpleName();
|
private static final String TAG = JniUtils.class.getSimpleName();
|
||||||
|
|
||||||
|
// try loading keyboard libraries
|
||||||
|
// first try user-provided library
|
||||||
|
// then try google library for gesture typing (needs library in system, and app as system app)
|
||||||
|
// finally fall back to internal library
|
||||||
public static boolean sHaveGestureLib = false;
|
public static boolean sHaveGestureLib = false;
|
||||||
static {
|
static {
|
||||||
|
try {
|
||||||
|
// first try loading imported library, and fall back to default
|
||||||
|
String filesDir;
|
||||||
|
try {
|
||||||
|
// try using reflection to get (app)context: https://stackoverflow.com/a/38967293
|
||||||
|
final Application app = (Application) Class.forName("android.app.ActivityThread")
|
||||||
|
.getMethod("currentApplication").invoke(null, (Object[]) null);
|
||||||
|
filesDir = app.getFilesDir().getAbsolutePath();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// fall back to hardcoded default path, may not work on all phones
|
||||||
|
filesDir = "/data/data/org.dslul.openboard.inputmethod.latin/files";
|
||||||
|
}
|
||||||
|
System.load(filesDir + File.separator + JniLibName.JNI_LIB_IMPORT_FILE_NAME);
|
||||||
|
sHaveGestureLib = true; // this is an assumption, any way to actually check?
|
||||||
|
} catch (Throwable t) { // catch everything, maybe provided library simply doesn't work
|
||||||
|
Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_IMPORT_FILE_NAME, t);
|
||||||
|
try {
|
||||||
|
System.loadLibrary(JniLibName.JNI_LIB_NAME_GOOGLE);
|
||||||
|
sHaveGestureLib = true;
|
||||||
|
} catch (UnsatisfiedLinkError ul) {
|
||||||
|
Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME_GOOGLE, ul);
|
||||||
try {
|
try {
|
||||||
System.loadLibrary(JniLibName.JNI_LIB_NAME);
|
System.loadLibrary(JniLibName.JNI_LIB_NAME);
|
||||||
} catch (UnsatisfiedLinkError ule) {
|
} catch (UnsatisfiedLinkError ule) {
|
||||||
Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
|
Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private JniUtils() {
|
private JniUtils() {
|
||||||
|
|
|
@ -13,10 +13,10 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
LATIN_IME_JNI_SRC_FILES := \
|
LATIN_IME_JNI_SRC_FILES := \
|
||||||
org_dslul_openboard_inputmethod_keyboard_ProximityInfo.cpp \
|
com_android_inputmethod_keyboard_ProximityInfo.cpp \
|
||||||
org_dslul_openboard_inputmethod_latin_BinaryDictionary.cpp \
|
com_android_inputmethod_latin_BinaryDictionary.cpp \
|
||||||
org_dslul_openboard_inputmethod_latin_BinaryDictionaryUtils.cpp \
|
com_android_inputmethod_latin_BinaryDictionaryUtils.cpp \
|
||||||
org_dslul_openboard_inputmethod_latin_DicTraverseSession.cpp \
|
com_android_inputmethod_latin_DicTraverseSession.cpp \
|
||||||
jni_common.cpp
|
jni_common.cpp
|
||||||
|
|
||||||
LATIN_IME_CORE_SRC_FILES := \
|
LATIN_IME_CORE_SRC_FILES := \
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
#define LOG_TAG "LatinIME: jni: ProximityInfo"
|
#define LOG_TAG "LatinIME: jni: ProximityInfo"
|
||||||
|
|
||||||
#include "org_dslul_openboard_inputmethod_keyboard_ProximityInfo.h"
|
#include "com_android_inputmethod_keyboard_ProximityInfo.h"
|
||||||
|
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "jni.h"
|
#include "jni.h"
|
||||||
|
@ -57,7 +57,7 @@ static const JNINativeMethod sMethods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_ProximityInfo(JNIEnv *env) {
|
int register_ProximityInfo(JNIEnv *env) {
|
||||||
const char *const kClassPathName = "org/dslul/openboard/inputmethod/keyboard/ProximityInfo";
|
const char *const kClassPathName = "com/android/inputmethod/keyboard/ProximityInfo";
|
||||||
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
||||||
}
|
}
|
||||||
} // namespace latinime
|
} // namespace latinime
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
#define LOG_TAG "LatinIME: jni: BinaryDictionary"
|
#define LOG_TAG "LatinIME: jni: BinaryDictionary"
|
||||||
|
|
||||||
#include "org_dslul_openboard_inputmethod_latin_BinaryDictionary.h"
|
#include "com_android_inputmethod_latin_BinaryDictionary.h"
|
||||||
|
|
||||||
#include <cstring> // for memset()
|
#include <cstring> // for memset()
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -717,7 +717,7 @@ static const JNINativeMethod sMethods[] = {
|
||||||
{
|
{
|
||||||
const_cast<char *>("updateEntriesForInputEventsNative"),
|
const_cast<char *>("updateEntriesForInputEventsNative"),
|
||||||
const_cast<char *>(
|
const_cast<char *>(
|
||||||
"(J[Lorg/dslul/openboard/inputmethod/latin/utils/WordInputEventForPersonalization;I)I"),
|
"(J[Lcom/android/inputmethod/latin/utils/WordInputEventForPersonalization;I)I"),
|
||||||
reinterpret_cast<void *>(latinime_BinaryDictionary_updateEntriesForInputEvents)
|
reinterpret_cast<void *>(latinime_BinaryDictionary_updateEntriesForInputEvents)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -738,7 +738,7 @@ static const JNINativeMethod sMethods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_BinaryDictionary(JNIEnv *env) {
|
int register_BinaryDictionary(JNIEnv *env) {
|
||||||
const char *const kClassPathName = "org/dslul/openboard/inputmethod/latin/BinaryDictionary";
|
const char *const kClassPathName = "com/android/inputmethod/latin/BinaryDictionary";
|
||||||
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
||||||
}
|
}
|
||||||
} // namespace latinime
|
} // namespace latinime
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
#define LOG_TAG "LatinIME: jni: BinaryDictionaryUtils"
|
#define LOG_TAG "LatinIME: jni: BinaryDictionaryUtils"
|
||||||
|
|
||||||
#include "org_dslul_openboard_inputmethod_latin_BinaryDictionaryUtils.h"
|
#include "com_android_inputmethod_latin_BinaryDictionaryUtils.h"
|
||||||
|
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "dictionary/utils/dict_file_writing_utils.h"
|
#include "dictionary/utils/dict_file_writing_utils.h"
|
||||||
|
@ -99,7 +99,7 @@ static const JNINativeMethod sMethods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_BinaryDictionaryUtils(JNIEnv *env) {
|
int register_BinaryDictionaryUtils(JNIEnv *env) {
|
||||||
const char *const kClassPathName = "org/dslul/openboard/inputmethod/latin/utils/BinaryDictionaryUtils";
|
const char *const kClassPathName = "com/android/inputmethod/latin/utils/BinaryDictionaryUtils";
|
||||||
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
||||||
}
|
}
|
||||||
} // namespace latinime
|
} // namespace latinime
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
#define LOG_TAG "LatinIME: jni: Session"
|
#define LOG_TAG "LatinIME: jni: Session"
|
||||||
|
|
||||||
#include "org_dslul_openboard_inputmethod_latin_DicTraverseSession.h"
|
#include "com_android_inputmethod_latin_DicTraverseSession.h"
|
||||||
|
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "dictionary/property/ngram_context.h"
|
#include "dictionary/property/ngram_context.h"
|
||||||
|
@ -74,7 +74,7 @@ static const JNINativeMethod sMethods[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_DicTraverseSession(JNIEnv *env) {
|
int register_DicTraverseSession(JNIEnv *env) {
|
||||||
const char *const kClassPathName = "org/dslul/openboard/inputmethod/latin/DicTraverseSession";
|
const char *const kClassPathName = "com/android/inputmethod/latin/DicTraverseSession";
|
||||||
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
|
||||||
}
|
}
|
||||||
} // namespace latinime
|
} // namespace latinime
|
|
@ -18,10 +18,10 @@
|
||||||
|
|
||||||
#include "jni_common.h"
|
#include "jni_common.h"
|
||||||
|
|
||||||
#include "org_dslul_openboard_inputmethod_keyboard_ProximityInfo.h"
|
#include "com_android_inputmethod_keyboard_ProximityInfo.h"
|
||||||
#include "org_dslul_openboard_inputmethod_latin_BinaryDictionary.h"
|
#include "com_android_inputmethod_latin_BinaryDictionary.h"
|
||||||
#include "org_dslul_openboard_inputmethod_latin_BinaryDictionaryUtils.h"
|
#include "com_android_inputmethod_latin_BinaryDictionaryUtils.h"
|
||||||
#include "org_dslul_openboard_inputmethod_latin_DicTraverseSession.h"
|
#include "com_android_inputmethod_latin_DicTraverseSession.h"
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
name="touch_position_correction_data_default"
|
name="touch_position_correction_data_default"
|
||||||
translatable="false"
|
translatable="false"
|
||||||
>
|
>
|
||||||
<!-- The default touch position data (See org.dslul.openboard.inputmethod.keyboard.ProximityInfo)
|
<!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
|
||||||
correctionX = 0.0f
|
correctionX = 0.0f
|
||||||
correctionY = 0.0f
|
correctionY = 0.0f
|
||||||
correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
|
correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
name="touch_position_correction_data_holo"
|
name="touch_position_correction_data_holo"
|
||||||
translatable="false"
|
translatable="false"
|
||||||
>
|
>
|
||||||
<!-- The default touch position data (See org.dslul.openboard.inputmethod.keyboard.ProximityInfo)
|
<!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
|
||||||
correctionX = 0.0f
|
correctionX = 0.0f
|
||||||
correctionY = 0.0f
|
correctionY = 0.0f
|
||||||
correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
|
correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
|
||||||
|
|
|
@ -194,6 +194,17 @@
|
||||||
<string name="secondary_locale_none">None</string>
|
<string name="secondary_locale_none">None</string>
|
||||||
<!-- Message shown when no secondary locales available -->
|
<!-- Message shown when no secondary locales available -->
|
||||||
<string name="no_secondary_locales">No secondary dictionaries available</string>
|
<string name="no_secondary_locales">No secondary dictionaries available</string>
|
||||||
|
<!-- Preferences item for loading an external gesture typing library -->
|
||||||
|
<string name="load_gesture_library">Load gesture typing library</string>
|
||||||
|
<!-- Description for "load_gesture_library" option -->
|
||||||
|
<string name="load_gesture_library_summary">Provide a native library to enable gesture typing</string>
|
||||||
|
<!-- Message in load gesture library dialog -->
|
||||||
|
<string name="load_gesture_library_message">You will need the library for \'%s\'. Incompatible libraries may crash when using gesture typing.
|
||||||
|
\n\nWarning: loading external code can be a security risk. Only use a library from a source you trust.</string>
|
||||||
|
<!-- Button text for loading gesture library -->
|
||||||
|
<string name="load_gesture_library_button_load">Load library</string>
|
||||||
|
<!-- Button text for deleting gesture library -->
|
||||||
|
<string name="load_gesture_library_button_delete">Delete library</string>
|
||||||
<!-- Description for "space_trackpad" option. -->
|
<!-- Description for "space_trackpad" option. -->
|
||||||
<string name="space_trackpad_summary">Swipe on the spacebar to move the cursor</string>
|
<string name="space_trackpad_summary">Swipe on the spacebar to move the cursor</string>
|
||||||
<!-- Preferences item for enabling inserting more spaces key -->
|
<!-- Preferences item for enabling inserting more spaces key -->
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
name="touch_position_correction_data_default"
|
name="touch_position_correction_data_default"
|
||||||
translatable="false"
|
translatable="false"
|
||||||
>
|
>
|
||||||
<!-- The default touch position data (See org.dslul.openboard.inputmethod.keyboard.ProximityInfo)
|
<!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
|
||||||
correctionX = 0.0f
|
correctionX = 0.0f
|
||||||
correctionY = 0.0f
|
correctionY = 0.0f
|
||||||
correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
|
correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
|
||||||
|
|
|
@ -88,6 +88,11 @@
|
||||||
android:title="@string/secondary_locale"
|
android:title="@string/secondary_locale"
|
||||||
android:summary="@string/secondary_locale_summary" />
|
android:summary="@string/secondary_locale_summary" />
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="load_gesture_library"
|
||||||
|
android:title="@string/load_gesture_library"
|
||||||
|
android:summary="@string/load_gesture_library_summary" />
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
|
Loading…
Add table
Reference in a new issue