Merge tag 'android-14.0.0_r50' into staging/lineage-21.0_merge-android-14.0.0_r50
Android 14.0.0 Release 50 (AP2A.240605.024)
# -----BEGIN PGP SIGNATURE-----
#
# iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCZmdzpwAKCRDorT+BmrEO
# eNrSAJwIkX9SuOc5OAqUycDvGjeqv3vpPwCfSRjjOMv0pgfpNREv+ux66QOVr4w=
# =WK8c
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Jun 11 00:44:07 2024 EEST
# gpg: using DSA key 4340D13570EF945E83810964E8AD3F819AB10E78
# gpg: Good signature from "The Android Open Source Project <initial-contribution@android.com>" [marginal]
# gpg: initial-contribution@android.com: Verified 2510 signatures in the past
# 2 years. Encrypted 4 messages in the past 2 years.
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg: It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 4340 D135 70EF 945E 8381 0964 E8AD 3F81 9AB1 0E78
# By Cole Faust
# Via Android Build Coastguard Worker (4) and others
* tag 'android-14.0.0_r50':
Baseline NewApi issues
List baseline_filename on modules that are implititly using it
Change-Id: Ibc51d73a758559c87342fef199e500b74ee6c0b2
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..e1883d6
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,14 @@
+name: build
+
+on: [push, pull_request, workflow_dispatch]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v3
+
+ - name: Build
+ uses: ./.github/workflows/build
diff --git a/.github/workflows/build/action.yml b/.github/workflows/build/action.yml
new file mode 100644
index 0000000..87723e2
--- /dev/null
+++ b/.github/workflows/build/action.yml
@@ -0,0 +1,21 @@
+name: build
+
+runs:
+ using: composite
+
+ steps:
+ - name: Setup JDK 17
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: 17
+ cache: 'gradle'
+
+ - name: Build with Gradle
+ shell: bash
+ run: ./gradlew assembleDebug
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: LatinIME-debug.apk
+ path: build/outputs/apk/debug/LatinIME-debug.apk
diff --git a/.github/workflows/gerrit.yml b/.github/workflows/gerrit.yml
new file mode 100644
index 0000000..4a6c449
--- /dev/null
+++ b/.github/workflows/gerrit.yml
@@ -0,0 +1,30 @@
+name: gerrit checks
+
+on:
+ workflow_dispatch:
+ inputs:
+ ref:
+ type: string
+ gerrit-ref:
+ type: string
+ change:
+ type: string
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: lineageos-infra/fetch-gerrit-change@main
+ with:
+ gerrit-ref: ${{ inputs.gerrit-ref }}
+ ref: ${{ inputs.ref }}
+
+ - name: Build
+ uses: ./.github/workflows/build
+
+ - uses: lineageos-infra/gerrit-vote@main
+ if: always()
+ with:
+ auth: ${{ secrets.GERRIT_VOTE_CREDS }}
+ change: ${{ inputs.change }}
+ ref: ${{ inputs.ref }}
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Android.mk
diff --git a/build.gradle b/build.gradle
index ab631c0..5c106f1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,15 +4,16 @@
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.2.0-beta03'
+ classpath 'com.android.tools.build:gradle:8.1.2'
}
}
apply plugin: 'com.android.application'
android {
- compileSdkVersion 28
- buildToolsVersion '28.0.0'
+ compileSdk 34
+
+ namespace 'com.android.inputmethod.latin'
// Required if using classes in android.test.runner
useLibrary 'android.test.runner'
@@ -24,8 +25,8 @@
useLibrary 'android.test.mock'
defaultConfig {
- minSdkVersion 21
- targetSdkVersion 28
+ minSdkVersion 31
+ targetSdkVersion 34
versionName "1.0"
applicationId 'com.android.inputmethod.latin'
@@ -72,19 +73,18 @@
}
}
- lintOptions {
- checkReleaseBuilds false
- }
-
- aaptOptions {
- noCompress 'dict'
- }
externalNativeBuild {
ndkBuild {
path 'native/jni/Android.mk'
}
}
+ androidResources {
+ noCompress 'dict'
+ }
+ lint {
+ checkReleaseBuilds false
+ }
}
repositories {
@@ -96,15 +96,17 @@
}
dependencies {
- implementation 'androidx.legacy:legacy-support-v4:+'
implementation 'com.google.code.findbugs:jsr305:3.0.2'
+ implementation 'androidx.viewpager2:viewpager2:1.0.0'
+ implementation 'com.google.android.material:material:1.9.0'
+ implementation 'androidx.preference:preference:1.2.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation "org.mockito:mockito-core:1.9.5"
androidTestImplementation 'com.google.dexmaker:dexmaker:1.2'
androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test:rules:1.0.2'
- androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
- androidTestImplementation "com.android.support:support-annotations:27.1.1"
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test:rules:1.1.1'
+ androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
+ androidTestImplementation 'androidx.annotation:annotation:1.0.0'
}
diff --git a/dictionaries/bg_wordlist.combined.gz b/dictionaries/bg_wordlist.combined.gz
new file mode 100644
index 0000000..3c42840
--- /dev/null
+++ b/dictionaries/bg_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/en_AU_wordlist.combined.gz b/dictionaries/en_AU_wordlist.combined.gz
new file mode 100644
index 0000000..e08ff37
--- /dev/null
+++ b/dictionaries/en_AU_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/hu_wordlist.combined.gz b/dictionaries/hu_wordlist.combined.gz
new file mode 100644
index 0000000..0e1bd8a
--- /dev/null
+++ b/dictionaries/hu_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/ka_wordlist.combined.gz b/dictionaries/ka_wordlist.combined.gz
new file mode 100644
index 0000000..02bacba
--- /dev/null
+++ b/dictionaries/ka_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/lb_wordlist.combined.gz b/dictionaries/lb_wordlist.combined.gz
new file mode 100644
index 0000000..9e0579b
--- /dev/null
+++ b/dictionaries/lb_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/uk_wordlist.combined.gz b/dictionaries/uk_wordlist.combined.gz
new file mode 100644
index 0000000..ed8420d
--- /dev/null
+++ b/dictionaries/uk_wordlist.combined.gz
Binary files differ
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..4c6e1bb
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,19 @@
+## For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+#
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx1024m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+#
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+#Mon Jul 31 17:20:03 CEST 2023
+android.defaults.buildfeatures.buildconfig=true
+android.enableJetifier=true
+android.nonFinalResIds=false
+android.nonTransitiveRClass=false
+android.useAndroidX=true
+org.gradle.jvmargs=-Xmx1024M
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 13372ae..7f93135 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 33c5632..3fa8f86 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,7 @@
-#Sat Jun 23 15:45:27 PDT 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
diff --git a/gradlew b/gradlew
index 9d82f78..1aa94a4 100755
--- a/gradlew
+++ b/gradlew
@@ -1,74 +1,127 @@
-#!/usr/bin/env bash
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# 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
+#
+# https://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.
+#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+# Attempt to set APP_HOME
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
-warn ( ) {
+warn () {
echo "$*"
-}
+} >&2
-die ( ) {
+die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -77,84 +130,120 @@
location of your Java installation."
fi
else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index aec9973..6689b85b 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,4 +1,20 @@
-@if "%DEBUG%" == "" @echo off
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -8,20 +24,24 @@
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
+if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +55,7 @@
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,44 +65,26 @@
goto fail
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
diff --git a/java/Android.bp b/java/Android.bp
index 9786057..acf6b26 100644
--- a/java/Android.bp
+++ b/java/Android.bp
@@ -45,6 +45,8 @@
"jsr305",
"latinime-common",
"androidx.legacy_legacy-support-v4",
+ "androidx.recyclerview_recyclerview",
+ "androidx.viewpager2_viewpager2",
],
// Do not compress dictionary files to mmap dict data runtime
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 633c68b..bc63c6a 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -62,7 +62,7 @@
</queries>
<application android:label="@string/english_ime_name"
- android:icon="@drawable/ic_launcher_keyboard"
+ android:icon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:allowBackup="true"
android:defaultToDeviceProtectedStorage="true"
@@ -100,7 +100,7 @@
<activity android:name=".setup.SetupActivity"
android:theme="@style/platformActivityTheme"
android:label="@string/english_ime_name"
- android:icon="@drawable/ic_launcher_keyboard"
+ android:icon="@mipmap/ic_launcher"
android:launchMode="singleTask"
android:noHistory="true"
android:exported="true">
diff --git a/java/res/anim/key_preview_dismiss_holo.xml b/java/res/anim/key_preview_dismiss_holo.xml
deleted file mode 100644
index 0bf7254..0000000
--- a/java/res/anim/key_preview_dismiss_holo.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, 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.
-*/
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
- <objectAnimator
- android:propertyName="scaleX"
- android:duration="53"
- android:valueFrom="1.00"
- android:valueTo="0.94" />
- <objectAnimator
- android:propertyName="scaleY"
- android:duration="53"
- android:valueFrom="1.00"
- android:valueTo="0.94" />
-</set>
diff --git a/java/res/anim/key_preview_show_up_holo.xml b/java/res/anim/key_preview_show_up_holo.xml
deleted file mode 100644
index ad2e413..0000000
--- a/java/res/anim/key_preview_show_up_holo.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, 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.
-*/
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
- <objectAnimator
- android:propertyName="scaleX"
- android:duration="17"
- android:valueFrom="0.98"
- android:valueTo="1.00" />
- <objectAnimator
- android:propertyName="scaleY"
- android:duration="17"
- android:valueFrom="0.98"
- android:valueTo="1.00" />
-</set>
diff --git a/java/res/color/gesture_floating_preview_color_you.xml b/java/res/color/gesture_floating_preview_color_you.xml
new file mode 100644
index 0000000..5406500
--- /dev/null
+++ b/java/res/color/gesture_floating_preview_color_you.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- This is necessary to add alpha to dynamic colors to a single theme -->
+ <item
+ android:alpha=".9"
+ android:color="@color/keyboard_background_you" />
+</selector>
diff --git a/java/res/color/sliding_key_input_preview_color_you.xml b/java/res/color/sliding_key_input_preview_color_you.xml
new file mode 100644
index 0000000..ac8e712
--- /dev/null
+++ b/java/res/color/sliding_key_input_preview_color_you.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- This is necessary to add alpha to dynamic colors to a single theme -->
+ <item
+ android:alpha=".7"
+ android:color="@color/gesture_trail_color_you" />
+</selector>
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index 9aa8db6..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index fa2cb85..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index fa2cb85..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 6da273b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index b1af23b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index 9f4587b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index 814e402..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index c2e8b37..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index 10f8e97..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 7ec33dd..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index 5612c51..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index 90abe39..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index 6768241..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 655bc01..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index 48eeb3f..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index 138e915..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index 71e0683..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index 9138cef..0000000
--- a/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index 345d05e..0000000
--- a/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index bbcfb2c..0000000
--- a/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_add_circle_white_24dp.png b/java/res/drawable-hdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index 314c521..0000000
--- a/java/res/drawable-hdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index a79fb06..0000000
--- a/java/res/drawable-hdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 91b31d6..0000000
--- a/java/res/drawable-hdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index 1c937c9..0000000
--- a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index 3508d24..0000000
--- a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index a79fcef..0000000
--- a/java/res/drawable-hdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index 3200e39..0000000
--- a/java/res/drawable-hdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index ea97f38..0000000
--- a/java/res/drawable-hdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index 6c214d7..0000000
--- a/java/res/drawable-hdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index 5525df2..0000000
--- a/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index 34e16b9..0000000
--- a/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index c3c7ec1..0000000
--- a/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index f012d77..0000000
--- a/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index cfacbc2..0000000
--- a/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index c54dbc1..0000000
--- a/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index 959dfdf..0000000
--- a/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index fc0d971..0000000
--- a/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index de570a1..0000000
--- a/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index b256208..0000000
--- a/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index af1fd27..0000000
--- a/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 02b84d5..0000000
--- a/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_launcher_keyboard.png b/java/res/drawable-hdpi/ic_launcher_keyboard.png
deleted file mode 100644
index 3a01e61..0000000
--- a/java/res/drawable-hdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_background_holo.9.png b/java/res/drawable-hdpi/keyboard_background_holo.9.png
deleted file mode 100644
index 7386875..0000000
--- a/java/res/drawable-hdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index 28b406a..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index be39415..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index e42cd88..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 9fa6d00..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index 1603440..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index c73269b..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index a40d427..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index fffd402..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 1f68073..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index 61c23c1..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index ec53593..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index 827d743..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 53d7b6f..0000000
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index f9dd3b8..0000000
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index 32f4264..0000000
--- a/java/res/drawable-hdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/suggestions_strip_divider_holo.png b/java/res/drawable-hdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index 5d44d9c..0000000
--- a/java/res/drawable-hdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index d2d3560..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-hdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index 78d3a1f..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index 60d893c..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index fa0d1bd..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index 2ea4a74..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 544b7e1..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index 9b1d6a0..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index cfacbc2..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index 12e27ad..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index 2e5f811..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index 8a6336a..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index edf1379..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 9f9bc17..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index f0f832e..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index e810c77..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index 8e9a349..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index 8e9a349..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 2915588..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index 58a316f..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index f3fc641..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index b7b2dca..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index 93a6e79..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index ee0aae2..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 8f340d3..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index c39dd4a..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index 4a92b80..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index 0493859..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 53ea5f8..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index 72125a0..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index 69c84e7..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index 82413d4..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index 1731b46..0000000
--- a/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index 6354b99..0000000
--- a/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index bb45ab9..0000000
--- a/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_add_circle_white_24dp.png b/java/res/drawable-mdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index 11363b1..0000000
--- a/java/res/drawable-mdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index 06fe3f5..0000000
--- a/java/res/drawable-mdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 57d5713..0000000
--- a/java/res/drawable-mdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index c7394e1..0000000
--- a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index eb4dab4..0000000
--- a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index 859da81..0000000
--- a/java/res/drawable-mdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index e1852e6..0000000
--- a/java/res/drawable-mdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index 0d759e8..0000000
--- a/java/res/drawable-mdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index 3c817be..0000000
--- a/java/res/drawable-mdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index d4c8d8d..0000000
--- a/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index 1555aa7..0000000
--- a/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index 081dc66..0000000
--- a/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index 58e6f6e..0000000
--- a/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index 067ad54..0000000
--- a/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index d835d4e..0000000
--- a/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index 1aecec5..0000000
--- a/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index c70e484..0000000
--- a/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index 8009e93..0000000
--- a/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index c2e598d..0000000
--- a/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index caea871..0000000
--- a/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 0edada6..0000000
--- a/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_launcher_keyboard.png b/java/res/drawable-mdpi/ic_launcher_keyboard.png
deleted file mode 100644
index 574da25..0000000
--- a/java/res/drawable-mdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_holo.9.png
deleted file mode 100644
index fbe97f7..0000000
--- a/java/res/drawable-mdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index 7a9f640..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index 625490b..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index 5b06f09..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 427c870..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index fd992d6..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index ea75729..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index 128dcd6..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index 1911c42..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 0b08d17..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index cdef116..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index cf0b33c..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index dea5d07..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 61988a8..0000000
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index 8965055..0000000
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index b1c18b4..0000000
--- a/java/res/drawable-mdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/suggestions_strip_divider_holo.png b/java/res/drawable-mdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index 21e9049..0000000
--- a/java/res/drawable-mdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index edd9d16..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-mdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index 828929b..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index e10103c..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index 290cde4..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index 613f4dc..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 37375d9..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index 3654868..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index 067ad54..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index a38f994..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index f883807..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index 0795fcc..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index f76da57..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 8957e28..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index 5f49e64..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index d990c02..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index a2f6ac0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index a2f6ac0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 0ef4a4b..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index 2f00fc6..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index ab8fb2e..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index 20251a0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index 0c7bfda..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index 891d000..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 3871689..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index c23a4b2..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index 84d1739..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index f770962..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 9125063..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index ee4490e..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index 35ce67f..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index e812477..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index 11bc966..0000000
--- a/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index 5e8549b..0000000
--- a/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index 8cede8d..0000000
--- a/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_add_circle_white_24dp.png b/java/res/drawable-xhdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index 32a5b05..0000000
--- a/java/res/drawable-xhdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index 5bfa54f..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 2221716..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index 997c9b7..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index 23a519c..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index dbb3f60..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index 9d852fe..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index 67d27a8..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index fc299e3..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index 3e67443..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index 5344a9e..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index 75695d4..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index 2adb186..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index e6baa2e..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index c26aa4e..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index eaa3b86..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index d6e1eaa..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index 06003b8..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index da2effe..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index 438fde2..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 7578632..0000000
--- a/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_launcher_keyboard.png b/java/res/drawable-xhdpi/ic_launcher_keyboard.png
deleted file mode 100644
index 1769501..0000000
--- a/java/res/drawable-xhdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_background_holo.9.png
deleted file mode 100644
index f5c9df3..0000000
--- a/java/res/drawable-xhdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index d999127..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index c211d89..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index c4d6941..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 543bc76..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index 5429c17..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index ec42aad..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index 5135a08..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index 319e9d7..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 19a77a2..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index 052032b..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index ae2ffff..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index c7e9d1c..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 1dee699..0000000
--- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index 36df715..0000000
--- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index 4c27072..0000000
--- a/java/res/drawable-xhdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png b/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index 4101ebc..0000000
--- a/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index e3e37d5..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-xhdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index b8687f5..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index 7b7ad17..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index 36b1646..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index 15a9739..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 5ab5491..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index b820eaa..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index e6baa2e..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index 7114b74..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index 73ebfe5..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index b2bb9b8..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index 23e75bf..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 2f9607a..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index ab07f75..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
deleted file mode 100644
index 680421e..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
deleted file mode 100644
index 17f0a7a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
deleted file mode 100644
index 17f0a7a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
deleted file mode 100644
index 4ddfdcb..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
deleted file mode 100644
index b0e815e..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
deleted file mode 100644
index 40f5011..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
deleted file mode 100644
index 97f9625..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_ics.9.png
deleted file mode 100644
index 6d2af59..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_klp.9.png
deleted file mode 100644
index 0cbb2ec..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
deleted file mode 100644
index 6ff6319..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
deleted file mode 100644
index 3c17c5e..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
deleted file mode 100644
index dfb16a7..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
deleted file mode 100644
index 17144b6..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
deleted file mode 100644
index 818ea70..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
deleted file mode 100644
index bf1d346..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
deleted file mode 100644
index a476d2a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
deleted file mode 100644
index 9622771..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
deleted file mode 100644
index b13ee2b..0000000
--- a/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
deleted file mode 100644
index c81e651..0000000
--- a/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
deleted file mode 100644
index 3891886..0000000
--- a/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_add_circle_white_24dp.png b/java/res/drawable-xxhdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index a22c463..0000000
--- a/java/res/drawable-xxhdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_activity_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_activity_activated_holo_dark.png
deleted file mode 100644
index c9f4aab..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_activity_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_activity_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_activity_normal_holo_dark.png
deleted file mode 100644
index 3ab3f7d..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_activity_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
deleted file mode 100644
index a217269..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
deleted file mode 100644
index dfa43cd..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_flag_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_flag_activated_holo_dark.png
deleted file mode 100644
index 99229a2..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_flag_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_flag_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_flag_normal_holo_dark.png
deleted file mode 100644
index a28fdd0..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_flag_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_food_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_food_activated_holo_dark.png
deleted file mode 100644
index 02bd4f0..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_food_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_food_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_food_normal_holo_dark.png
deleted file mode 100644
index bd3bd42..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_food_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
deleted file mode 100644
index 470fd69..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
deleted file mode 100644
index a7fde0e..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
deleted file mode 100644
index c582b70..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
deleted file mode 100644
index acc95d7..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
deleted file mode 100644
index 5973ac3..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
deleted file mode 100644
index 22e06f8..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
deleted file mode 100644
index 690e95f..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
deleted file mode 100644
index ced4b08..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
deleted file mode 100644
index 25e847e..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
deleted file mode 100644
index c86368d..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
deleted file mode 100644
index 29dfc71..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
deleted file mode 100644
index 0570567..0000000
--- a/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_launcher_keyboard.png b/java/res/drawable-xxhdpi/ic_launcher_keyboard.png
deleted file mode 100644
index 624c82e..0000000
--- a/java/res/drawable-xxhdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_background_holo.9.png b/java/res/drawable-xxhdpi/keyboard_background_holo.9.png
deleted file mode 100644
index bcef0f8..0000000
--- a/java/res/drawable-xxhdpi/keyboard_background_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_ics.9.png
deleted file mode 100644
index bd1ef3c..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png
deleted file mode 100644
index fd2f9e5..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_ics.9.png
deleted file mode 100644
index 65af4b5..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png
deleted file mode 100644
index 3ab7900..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_ics.9.png
deleted file mode 100644
index ac6750d..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png
deleted file mode 100644
index 99543a1..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_ics.9.png
deleted file mode 100644
index cea7c05..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_klp.9.png
deleted file mode 100644
index 121411a..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_ics.9.png
deleted file mode 100644
index 520fa7c..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png
deleted file mode 100644
index e9e3792..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_ics.9.png
deleted file mode 100644
index eee2217..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png
deleted file mode 100644
index 6c1143a..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_ics.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_ics.9.png
deleted file mode 100644
index 721c244..0000000
--- a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_ics.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_klp.9.png
deleted file mode 100644
index 91d5d7f..0000000
--- a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_klp.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_suggest_strip_holo.9.png b/java/res/drawable-xxhdpi/keyboard_suggest_strip_holo.9.png
deleted file mode 100644
index 08176fe..0000000
--- a/java/res/drawable-xxhdpi/keyboard_suggest_strip_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png
deleted file mode 100644
index d13ca42..0000000
--- a/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_delete_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_delete_holo_dark.png
deleted file mode 100644
index 92be792..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_delete_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_dark.png
deleted file mode 100644
index 88b55bb..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_return_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_return_holo_dark.png
deleted file mode 100644
index 46ee50e..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_return_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_search_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_search_holo_dark.png
deleted file mode 100644
index f518748..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_search_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png
deleted file mode 100644
index bf643e1..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_holo_dark.png
deleted file mode 100644
index 523286e..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_shift_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_holo_dark.png
deleted file mode 100644
index 87926d9..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_smiley_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_smiley_holo_dark.png
deleted file mode 100644
index 5973ac3..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_smiley_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_space_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_space_holo_dark.png
deleted file mode 100644
index 1dab1f4..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_space_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_tab_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_tab_holo_dark.png
deleted file mode 100644
index 6eb3eb0..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_tab_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_holo_dark.png
deleted file mode 100644
index f04cadf..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_voice_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_holo_dark.png
deleted file mode 100644
index e74d523..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwj_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_zwj_holo_dark.png
deleted file mode 100644
index 5e225b8..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_zwj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwnj_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_zwnj_holo_dark.png
deleted file mode 100644
index cdfc029..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_zwnj_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxxhdpi/ic_add_circle_white_24dp.png b/java/res/drawable-xxxhdpi/ic_add_circle_white_24dp.png
deleted file mode 100644
index a0116fa..0000000
--- a/java/res/drawable-xxxhdpi/ic_add_circle_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxxhdpi/ic_launcher_keyboard.png b/java/res/drawable-xxxhdpi/ic_launcher_keyboard.png
deleted file mode 100644
index 39636a1..0000000
--- a/java/res/drawable-xxxhdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key_action_normal_you.xml b/java/res/drawable/btn_keyboard_key_action_normal_you.xml
new file mode 100644
index 0000000..ab61daf
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_action_normal_you.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_action_normal_color_you"/>
+ <corners android:radius="@dimen/keyboard_key_action_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_action_pressed_you.xml b/java/res/drawable/btn_keyboard_key_action_pressed_you.xml
new file mode 100644
index 0000000..6eb85b3
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_action_pressed_you.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_action_pressed_color_you" />
+ <corners android:radius="@dimen/keyboard_key_action_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_active_normal_you.xml b/java/res/drawable/btn_keyboard_key_active_normal_you.xml
new file mode 100644
index 0000000..da31710
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_active_normal_you.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_normal_color_you"/>
+ <corners android:radius="@dimen/keyboard_key_action_corner_radius_you" />
+ <size
+ android:width="@dimen/keyboard_key_popup_action_size"
+ android:height="@dimen/keyboard_key_popup_action_size"/>
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_active_pressed_you.xml b/java/res/drawable/btn_keyboard_key_active_pressed_you.xml
new file mode 100644
index 0000000..bfcc0c7
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_active_pressed_you.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_pressed_color_you"/>
+ <corners android:radius="@dimen/keyboard_key_action_corner_radius_you" />
+ <size
+ android:width="@dimen/keyboard_key_popup_action_size"
+ android:height="@dimen/keyboard_key_popup_action_size"/>
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_functional_ics.xml b/java/res/drawable/btn_keyboard_key_functional_ics.xml
deleted file mode 100644
index 846bccc..0000000
--- a/java/res/drawable/btn_keyboard_key_functional_ics.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- Functional keys. -->
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_klp.xml b/java/res/drawable/btn_keyboard_key_functional_klp.xml
deleted file mode 100644
index 7b444f7..0000000
--- a/java/res/drawable/btn_keyboard_key_functional_klp.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- Functional keys. -->
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_normal_you.xml b/java/res/drawable/btn_keyboard_key_functional_normal_you.xml
new file mode 100644
index 0000000..dde4f4e
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_normal_you.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_functional_normal_color_you" />
+
+ <padding android:left="1dp"
+ android:top="1dp"
+ android:right="1dp"
+ android:bottom="1dp" />
+
+ <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_functional_pressed_you.xml b/java/res/drawable/btn_keyboard_key_functional_pressed_you.xml
new file mode 100644
index 0000000..4f145ad
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_pressed_you.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_functional_pressed_color_you"/>
+
+ <padding android:left="1dp"
+ android:top="1dp"
+ android:right="1dp"
+ android:bottom="1dp" />
+
+ <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_functional_you.xml b/java/res/drawable/btn_keyboard_key_functional_you.xml
new file mode 100644
index 0000000..e8c1949
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_you.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_functional_pressed_you" />
+ <item android:drawable="@drawable/btn_keyboard_key_functional_normal_you" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_ics.xml b/java/res/drawable/btn_keyboard_key_ics.xml
deleted file mode 100644
index bacd5d7..0000000
--- a/java/res/drawable/btn_keyboard_key_ics.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- Action keys. -->
- <item android:state_active="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
- <item android:state_active="true"
- android:drawable="@drawable/btn_keyboard_key_active_ics_dark" />
-
- <!-- Toggle keys. Use checkable/checked state. -->
- <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_on_ics_dark" />
- <item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_off_ics_dark" />
- <item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_normal_on_ics_dark" />
- <item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
-
- <!-- Empty background keys. -->
- <item android:state_empty="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:state_empty="true"
- android:drawable="@android:color/transparent" />
-
- <!-- Normal keys. -->
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_klp.xml b/java/res/drawable/btn_keyboard_key_klp.xml
deleted file mode 100644
index e2f2085..0000000
--- a/java/res/drawable/btn_keyboard_key_klp.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- Action keys. -->
- <item android:state_active="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
- <item android:state_active="true"
- android:drawable="@drawable/btn_keyboard_key_active_klp_dark" />
-
- <!-- Toggle keys. Use checkable/checked state. -->
- <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_on_klp_dark" />
- <item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_off_klp_dark" />
- <item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_normal_on_klp_dark" />
- <item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
-
- <!-- Empty background keys. -->
- <item android:state_empty="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
- <item android:state_empty="true"
- android:drawable="@android:color/transparent" />
-
- <!-- Normal keys. -->
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_normal_you.xml b/java/res/drawable/btn_keyboard_key_normal_you.xml
new file mode 100644
index 0000000..779068b
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_normal_you.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_normal_color_you"/>
+ <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_popup_action_you.xml b/java/res/drawable/btn_keyboard_key_popup_action_you.xml
new file mode 100644
index 0000000..524a74f
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_popup_action_you.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_active_pressed_you" />
+ <item android:drawable="@drawable/btn_keyboard_key_active_normal_you" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_ics.xml b/java/res/drawable/btn_keyboard_key_popup_ics.xml
deleted file mode 100644
index 17d646b..0000000
--- a/java/res/drawable/btn_keyboard_key_popup_ics.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_ics" />
- <item android:drawable="@android:color/transparent" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_pressed_you.xml b/java/res/drawable/btn_keyboard_key_pressed_you.xml
new file mode 100644
index 0000000..e8395e6
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_pressed_you.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_pressed_color_you" />
+ <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_key_you.xml b/java/res/drawable/btn_keyboard_key_you.xml
new file mode 100644
index 0000000..5bf4034
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_you.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Action keys. -->
+ <item android:state_active="true" android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_action_pressed_you" />
+ <item android:state_active="true"
+ android:drawable="@drawable/btn_keyboard_key_action_normal_you" />
+
+ <!-- Toggle keys. Use checkable/checked state. -->
+ <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_functional_pressed_you" />
+ <item android:state_checkable="true" android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_functional_pressed_you" />
+ <item android:state_checkable="true" android:state_checked="true"
+ android:drawable="@drawable/btn_keyboard_key_functional_pressed_you" />
+ <item android:state_checkable="true"
+ android:drawable="@drawable/btn_keyboard_key_functional_normal_you" />
+
+ <!-- Empty background keys. -->
+ <item android:state_empty="true" android:state_pressed="true"
+ android:drawable="@color/keyboard_key_pressed_color_you" />
+ <item android:state_empty="true"
+ android:drawable="@android:color/transparent" />
+
+ <!-- Normal keys. -->
+ <item android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_pressed_you" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_you" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_klp.xml b/java/res/drawable/btn_keyboard_spacebar_klp.xml
deleted file mode 100644
index 9882f9a..0000000
--- a/java/res/drawable/btn_keyboard_spacebar_klp.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_normal_you.xml b/java/res/drawable/btn_keyboard_spacebar_normal_you.xml
new file mode 100644
index 0000000..91e4500
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_normal_you.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_normal_color_you"/>
+ <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_spacebar_pressed_you.xml b/java/res/drawable/btn_keyboard_spacebar_pressed_you.xml
new file mode 100644
index 0000000..ab7e6d6
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_pressed_you.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_functional_pressed_color_you"/>
+ <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+</shape>
diff --git a/java/res/drawable/btn_keyboard_spacebar_you.xml b/java/res/drawable/btn_keyboard_spacebar_you.xml
new file mode 100644
index 0000000..ad6941c
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_you.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_spacebar_pressed_you" />
+ <item android:drawable="@drawable/btn_keyboard_spacebar_normal_you" />
+</selector>
diff --git a/java/res/drawable/btn_suggestion_ics.xml b/java/res/drawable/btn_suggestion_ics.xml
deleted file mode 100644
index 8f528ee..0000000
--- a/java/res/drawable/btn_suggestion_ics.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<selector
- xmlns:android="http://schemas.android.com/apk/res/android"
->
- <item
- android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_ics" />
-</selector>
diff --git a/java/res/drawable/ic_add_circle.xml b/java/res/drawable/ic_add_circle.xml
new file mode 100644
index 0000000..e484a69
--- /dev/null
+++ b/java/res/drawable/ic_add_circle.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:width="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ <path
+ android:fillColor="?android:attr/colorControlNormal"
+ android:pathData="M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" />
+</vector>
diff --git a/java/res/drawable/ic_emoji_activity_holo_dark.xml b/java/res/drawable/ic_emoji_activity_holo_dark.xml
deleted file mode 100644
index 8eeb640..0000000
--- a/java/res/drawable/ic_emoji_activity_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_activity_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_activity_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_activity_activated_holo_dark" />
- <item
- android:drawable="@drawable/ic_emoji_activity_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_emoticons_holo_dark.xml b/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
deleted file mode 100644
index 59e2349..0000000
--- a/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
- <item android:drawable="@drawable/ic_emoji_emoticons_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_flag_holo_dark.xml b/java/res/drawable/ic_emoji_flag_holo_dark.xml
deleted file mode 100644
index c9857fe..0000000
--- a/java/res/drawable/ic_emoji_flag_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_flag_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_flag_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_flag_activated_holo_dark" />
- <item
- android:drawable="@drawable/ic_emoji_flag_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_food_holo_dark.xml b/java/res/drawable/ic_emoji_food_holo_dark.xml
deleted file mode 100644
index 2c6c0f2..0000000
--- a/java/res/drawable/ic_emoji_food_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_food_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_food_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_food_activated_holo_dark" />
- <item
- android:drawable="@drawable/ic_emoji_food_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_nature_holo_dark.xml b/java/res/drawable/ic_emoji_nature_holo_dark.xml
deleted file mode 100644
index b946295..0000000
--- a/java/res/drawable/ic_emoji_nature_holo_dark.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
- <item
- android:drawable="@drawable/ic_emoji_nature_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_objects_holo_dark.xml b/java/res/drawable/ic_emoji_objects_holo_dark.xml
deleted file mode 100644
index 266e81e..0000000
--- a/java/res/drawable/ic_emoji_objects_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
- <item android:drawable="@drawable/ic_emoji_objects_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_people_holo_dark.xml b/java/res/drawable/ic_emoji_people_holo_dark.xml
deleted file mode 100644
index 15955d2..0000000
--- a/java/res/drawable/ic_emoji_people_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
- <item android:drawable="@drawable/ic_emoji_people_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_places_holo_dark.xml b/java/res/drawable/ic_emoji_places_holo_dark.xml
deleted file mode 100644
index 260bbd8..0000000
--- a/java/res/drawable/ic_emoji_places_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
- <item android:drawable="@drawable/ic_emoji_places_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_recents_holo_dark.xml b/java/res/drawable/ic_emoji_recents_holo_dark.xml
deleted file mode 100644
index f14349f..0000000
--- a/java/res/drawable/ic_emoji_recents_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
- <item android:drawable="@drawable/ic_emoji_recents_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_holo_dark.xml b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
deleted file mode 100644
index 831d659..0000000
--- a/java/res/drawable/ic_emoji_symbols_holo_dark.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:state_focused="true"
- android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
- <item android:drawable="@drawable/ic_emoji_symbols_normal_holo_dark" />
-</selector>
diff --git a/java/res/drawable/ic_launcher_background.xml b/java/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..4c5c90e
--- /dev/null
+++ b/java/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path
+ android:pathData="M0,0h108v108h-108z"
+ android:fillColor="#ffffff"/>
+ <path
+ android:pathData="M30,61C30,60.448 30.448,60 31,60H37C37.552,60 38,60.448 38,61V67C38,67.552 37.552,68 37,68H32C30.895,68 30,67.105 30,66V61Z"
+ android:fillColor="#359944"/>
+ <path
+ android:pathData="M70,61C70,60.448 70.448,60 71,60H77C77.552,60 78,60.448 78,61V66C78,67.105 77.105,68 76,68H71C70.448,68 70,67.552 70,67V61Z"
+ android:fillColor="#1F6C37"/>
+</vector>
diff --git a/java/res/drawable/ic_launcher_foreground.xml b/java/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..133977b
--- /dev/null
+++ b/java/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <group>
+ <clip-path
+ android:pathData="M0,0h108v108h-108z"/>
+ <path
+ android:pathData="M30,42C30,40.895 30.895,40 32,40H37C37.552,40 38,40.448 38,41V47C38,47.552 37.552,48 37,48H31C30.448,48 30,47.552 30,47V42ZM40,51C40,50.448 40.448,50 41,50H47C47.552,50 48,50.448 48,51V57C48,57.552 47.552,58 47,58H41C40.448,58 40,57.552 40,57V51ZM41,40C40.448,40 40,40.448 40,41V47C40,47.552 40.448,48 41,48H47C47.552,48 48,47.552 48,47V41C48,40.448 47.552,40 47,40H41ZM50,51C50,50.448 50.448,50 51,50H57C57.552,50 58,50.448 58,51V57C58,57.552 57.552,58 57,58H51C50.448,58 50,57.552 50,57V51ZM51,40C50.448,40 50,40.448 50,41V47C50,47.552 50.448,48 51,48H57C57.552,48 58,47.552 58,47V41C58,40.448 57.552,40 57,40H51ZM40,61C40,60.448 40.448,60 41,60H67C67.552,60 68,60.448 68,61V67C68,67.552 67.552,68 67,68H41C40.448,68 40,67.552 40,67V61ZM61,50C60.448,50 60,50.448 60,51V57C60,57.552 60.448,58 61,58H67C67.552,58 68,57.552 68,57V51C68,50.448 67.552,50 67,50H61ZM60,41C60,40.448 60.448,40 61,40H67C67.552,40 68,40.448 68,41V47C68,47.552 67.552,48 67,48H61C60.448,48 60,47.552 60,47V41ZM71,40C70.448,40 70,40.448 70,41V47C70,47.552 70.448,48 71,48H77C77.552,48 78,47.552 78,47V42C78,40.895 77.105,40 76,40H71Z"
+ android:fillColor="#87BF7B"
+ android:fillType="evenOdd"/>
+ <path
+ android:pathData="M28.54,28.54m-72,0a72,72 0,1 1,144 0a72,72 0,1 1,-144 0"
+ android:fillAlpha="0.6">
+ <aapt:attr name="android:fillColor">
+ <gradient
+ android:gradientRadius="72"
+ android:centerX="28.54"
+ android:centerY="28.54"
+ android:type="radial">
+ <item android:offset="0" android:color="#19FFFFFF"/>
+ <item android:offset="1" android:color="#00FFFFFF"/>
+ </gradient>
+ </aapt:attr>
+ </path>
+ </group>
+</vector>
diff --git a/java/res/drawable/ic_settings_advanced.xml b/java/res/drawable/ic_settings_advanced.xml
new file mode 100644
index 0000000..3d8e4bb
--- /dev/null
+++ b/java/res/drawable/ic_settings_advanced.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="?android:attr/textColorPrimary"
+ android:pathData="M240,560Q207,560 183.5,536.5Q160,513 160,480Q160,447 183.5,423.5Q207,400 240,400Q273,400 296.5,423.5Q320,447 320,480Q320,513 296.5,536.5Q273,560 240,560ZM480,560Q447,560 423.5,536.5Q400,513 400,480Q400,447 423.5,423.5Q447,400 480,400Q513,400 536.5,423.5Q560,447 560,480Q560,513 536.5,536.5Q513,560 480,560ZM720,560Q687,560 663.5,536.5Q640,513 640,480Q640,447 663.5,423.5Q687,400 720,400Q753,400 776.5,423.5Q800,447 800,480Q800,513 776.5,536.5Q753,560 720,560Z"/>
+</vector>
diff --git a/java/res/drawable/ic_settings_appearance.xml b/java/res/drawable/ic_settings_appearance.xml
new file mode 100644
index 0000000..2b971d3
--- /dev/null
+++ b/java/res/drawable/ic_settings_appearance.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="?android:attr/textColorPrimary"
+ android:pathData="M480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 112.5,324Q145,251 200.5,197Q256,143 330,111.5Q404,80 488,80Q568,80 639,107.5Q710,135 763.5,183.5Q817,232 848.5,298.5Q880,365 880,442Q880,557 810,618.5Q740,680 640,680L566,680Q557,680 553.5,685Q550,690 550,696Q550,708 565,730.5Q580,753 580,782Q580,832 552.5,856Q525,880 480,880ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480ZM260,520Q286,520 303,503Q320,486 320,460Q320,434 303,417Q286,400 260,400Q234,400 217,417Q200,434 200,460Q200,486 217,503Q234,520 260,520ZM380,360Q406,360 423,343Q440,326 440,300Q440,274 423,257Q406,240 380,240Q354,240 337,257Q320,274 320,300Q320,326 337,343Q354,360 380,360ZM580,360Q606,360 623,343Q640,326 640,300Q640,274 623,257Q606,240 580,240Q554,240 537,257Q520,274 520,300Q520,326 537,343Q554,360 580,360ZM700,520Q726,520 743,503Q760,486 760,460Q760,434 743,417Q726,400 700,400Q674,400 657,417Q640,434 640,460Q640,486 657,503Q674,520 700,520ZM480,800Q489,800 494.5,795Q500,790 500,782Q500,768 485,749Q470,730 470,692Q470,650 499,625Q528,600 570,600L640,600Q706,600 753,561.5Q800,523 800,442Q800,321 707.5,240.5Q615,160 488,160Q352,160 256,253Q160,346 160,480Q160,613 253.5,706.5Q347,800 480,800Z"/>
+</vector>
diff --git a/java/res/drawable/ic_settings_gesture.xml b/java/res/drawable/ic_settings_gesture.xml
new file mode 100644
index 0000000..237d8bf
--- /dev/null
+++ b/java/res/drawable/ic_settings_gesture.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="?android:attr/textColorPrimary"
+ android:pathData="M554,842Q501,842 463.5,805.5Q426,769 426,716Q426,686 439,652Q452,618 478.5,587.5Q505,557 545.5,533.5Q586,510 641,501Q638,461 622,444.5Q606,428 582,428Q552,428 517,453Q482,478 434,535Q356,628 319.5,656Q283,684 241,684Q190,684 155,646.5Q120,609 120,556Q120,503 143.5,447Q167,391 223,313Q241,287 250.5,269Q260,251 260,240Q260,233 257.5,229.5Q255,226 250,226Q240,226 225,238.5Q210,251 190,276L120,206Q152,167 185,146.5Q218,126 250,126Q297,126 328.5,158.5Q360,191 360,238Q360,267 345,301.5Q330,336 295,384Q257,438 238.5,479Q220,520 220,549Q220,566 225.5,575Q231,584 241,584Q253,584 274.5,563.5Q296,543 361,467Q424,392 475,360Q526,328 582,328Q659,328 697.5,379Q736,430 741,496L840,496L840,596L741,596Q735,684 692,763Q649,842 554,842ZM556,742Q595,742 614.5,697.5Q634,653 640,603Q584,617 555,651.5Q526,686 526,712Q526,726 534,734Q542,742 556,742Z"/>
+</vector>
diff --git a/java/res/drawable/ic_settings_languages.xml b/java/res/drawable/ic_settings_languages.xml
new file mode 100644
index 0000000..4fb31c9
--- /dev/null
+++ b/java/res/drawable/ic_settings_languages.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="?android:attr/textColorPrimary"
+ android:pathData="M480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324.5Q143,252 197.5,197.5Q252,143 325,111.5Q398,80 480,80Q563,80 635.5,111.5Q708,143 762.5,197.5Q817,252 848.5,324.5Q880,397 880,480Q880,562 848.5,635Q817,708 762.5,762.5Q708,817 635.5,848.5Q563,880 480,880ZM480,798Q506,762 525,723Q544,684 556,640L404,640Q416,684 435,723Q454,762 480,798ZM376,782Q358,749 344.5,713.5Q331,678 322,640L204,640Q233,690 276.5,727Q320,764 376,782ZM584,782Q640,764 683.5,727Q727,690 756,640L638,640Q629,678 615.5,713.5Q602,749 584,782ZM170,560L306,560Q303,540 301.5,520.5Q300,501 300,480Q300,459 301.5,439.5Q303,420 306,400L170,400Q165,420 162.5,439.5Q160,459 160,480Q160,501 162.5,520.5Q165,540 170,560ZM386,560L574,560Q577,540 578.5,520.5Q580,501 580,480Q580,459 578.5,439.5Q577,420 574,400L386,400Q383,420 381.5,439.5Q380,459 380,480Q380,501 381.5,520.5Q383,540 386,560ZM654,560L790,560Q795,540 797.5,520.5Q800,501 800,480Q800,459 797.5,439.5Q795,420 790,400L654,400Q657,420 658.5,439.5Q660,459 660,480Q660,501 658.5,520.5Q657,540 654,560ZM638,320L756,320Q727,270 683.5,233Q640,196 584,178Q602,211 615.5,246.5Q629,282 638,320ZM404,320L556,320Q544,276 525,237Q506,198 480,162Q454,198 435,237Q416,276 404,320ZM204,320L322,320Q331,282 344.5,246.5Q358,211 376,178Q320,196 276.5,233Q233,270 204,320Z"/>
+</vector>
diff --git a/java/res/drawable/ic_settings_preferences.xml b/java/res/drawable/ic_settings_preferences.xml
new file mode 100644
index 0000000..01456b0
--- /dev/null
+++ b/java/res/drawable/ic_settings_preferences.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="?android:attr/textColorPrimary"
+ android:pathData="M427,840L427,615L487,615L487,698L840,698L840,758L487,758L487,840L427,840ZM120,758L120,698L367,698L367,758L120,758ZM307,592L307,510L120,510L120,450L307,450L307,366L367,366L367,592L307,592ZM427,510L427,450L840,450L840,510L427,510ZM593,345L593,120L653,120L653,202L840,202L840,262L653,262L653,345L593,345ZM120,262L120,202L533,202L533,262L120,262Z"/>
+</vector>
diff --git a/java/res/drawable/ic_settings_privacy.xml b/java/res/drawable/ic_settings_privacy.xml
new file mode 100644
index 0000000..365c5e9
--- /dev/null
+++ b/java/res/drawable/ic_settings_privacy.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="?android:attr/textColorPrimary"
+ android:pathData="M240,880Q207,880 183.5,856.5Q160,833 160,800L160,400Q160,367 183.5,343.5Q207,320 240,320L280,320L280,240Q280,157 338.5,98.5Q397,40 480,40Q563,40 621.5,98.5Q680,157 680,240L680,320L720,320Q753,320 776.5,343.5Q800,367 800,400L800,800Q800,833 776.5,856.5Q753,880 720,880L240,880ZM240,800L720,800Q720,800 720,800Q720,800 720,800L720,400Q720,400 720,400Q720,400 720,400L240,400Q240,400 240,400Q240,400 240,400L240,800Q240,800 240,800Q240,800 240,800ZM480,680Q513,680 536.5,656.5Q560,633 560,600Q560,567 536.5,543.5Q513,520 480,520Q447,520 423.5,543.5Q400,567 400,600Q400,633 423.5,656.5Q447,680 480,680ZM360,320L600,320L600,240Q600,190 565,155Q530,120 480,120Q430,120 395,155Q360,190 360,240L360,320ZM240,800Q240,800 240,800Q240,800 240,800L240,400Q240,400 240,400Q240,400 240,400L240,400Q240,400 240,400Q240,400 240,400L240,800Q240,800 240,800Q240,800 240,800L240,800Z"/>
+</vector>
diff --git a/java/res/drawable/ic_settings_spellcheck.xml b/java/res/drawable/ic_settings_spellcheck.xml
new file mode 100644
index 0000000..33a284b
--- /dev/null
+++ b/java/res/drawable/ic_settings_spellcheck.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="?android:attr/textColorPrimary"
+ android:pathData="M564,880L394,710L450,654L564,768L790,542L846,598L564,880ZM120,640L314,120L408,120L602,640L510,640L464,508L254,508L208,640L120,640ZM282,432L438,432L362,216L358,216L282,432Z"/>
+</vector>
diff --git a/java/res/drawable/keyboard_key_feedback_background_you.xml b/java/res/drawable/keyboard_key_feedback_background_you.xml
new file mode 100644
index 0000000..d985244
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_background_you.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="@color/keyboard_key_normal_color_you"/>
+ <corners android:radius="@dimen/keyboard_key_corner_radius_you" />
+ <size
+ android:width="40dp"
+ android:height="1dp" />
+</shape>
diff --git a/java/res/drawable/keyboard_key_feedback_ics.xml b/java/res/drawable/keyboard_key_feedback_ics.xml
deleted file mode 100644
index b52a61f..0000000
--- a/java/res/drawable/keyboard_key_feedback_ics.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
- <!-- Left edge -->
- <item latin:state_left_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_left_more_background_ics" />
- <item latin:state_left_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_left_background_ics" />
-
- <!-- Right edge -->
- <item latin:state_right_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_right_more_background_ics" />
- <item latin:state_right_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_right_background_ics" />
-
- <item latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_more_background_ics" />
- <item android:drawable="@drawable/keyboard_key_feedback_background_ics" />
-</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_klp.xml b/java/res/drawable/keyboard_key_feedback_klp.xml
deleted file mode 100644
index a386556..0000000
--- a/java/res/drawable/keyboard_key_feedback_klp.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 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.
--->
-
-<selector
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
- <!-- Left edge -->
- <item latin:state_left_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_left_more_background_klp" />
- <item latin:state_left_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_left_background_klp" />
-
- <!-- Right edge -->
- <item latin:state_right_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_right_more_background_klp" />
- <item latin:state_right_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_right_background_klp" />
-
- <item latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_more_background_klp" />
- <item android:drawable="@drawable/keyboard_key_feedback_background_klp" />
-</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_you.xml b/java/res/drawable/keyboard_key_feedback_you.xml
new file mode 100644
index 0000000..f1a41d5
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_you.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<selector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <item android:drawable="@drawable/keyboard_key_feedback_background_you" />
+</selector>
diff --git a/java/res/drawable/sym_keyboard_delete_you.xml b/java/res/drawable/sym_keyboard_delete_you.xml
new file mode 100644
index 0000000..e7ebb4c
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_delete_you.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:autoMirrored="true">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M22,3L7,3c-0.69,0 -1.23,0.35 -1.59,0.88L0,12l5.41,8.11c0.36,0.53 0.9,0.89 1.59,0.89h15c1.1,0 2,-0.9 2,-2L24,5c0,-1.1 -0.9,-2 -2,-2zM22,19L7.07,19L2.4,12l4.66,-7L22,5v14zM10.41,17L14,13.41 17.59,17 19,15.59 15.41,12 19,8.41 17.59,7 14,10.59 10.41,7 9,8.41 12.59,12 9,15.59z" />
+</vector>
diff --git a/java/res/drawable/sym_keyboard_done_you.xml b/java/res/drawable/sym_keyboard_done_you.xml
new file mode 100644
index 0000000..59e6234
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_done_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M382,720L154,492L211,435L382,606L749,239L806,296L382,720Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_language_switch_you.xml b/java/res/drawable/sym_keyboard_language_switch_you.xml
new file mode 100644
index 0000000..72be143
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_language_switch_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324.5Q143,252 197.5,197.5Q252,143 325,111.5Q398,80 480,80Q563,80 635.5,111.5Q708,143 762.5,197.5Q817,252 848.5,324.5Q880,397 880,480Q880,562 848.5,635Q817,708 762.5,762.5Q708,817 635.5,848.5Q563,880 480,880ZM480,798Q506,762 525,723Q544,684 556,640L404,640Q416,684 435,723Q454,762 480,798ZM376,782Q358,749 344.5,713.5Q331,678 322,640L204,640Q233,690 276.5,727Q320,764 376,782ZM584,782Q640,764 683.5,727Q727,690 756,640L638,640Q629,678 615.5,713.5Q602,749 584,782ZM170,560L306,560Q303,540 301.5,520.5Q300,501 300,480Q300,459 301.5,439.5Q303,420 306,400L170,400Q165,420 162.5,439.5Q160,459 160,480Q160,501 162.5,520.5Q165,540 170,560ZM386,560L574,560Q577,540 578.5,520.5Q580,501 580,480Q580,459 578.5,439.5Q577,420 574,400L386,400Q383,420 381.5,439.5Q380,459 380,480Q380,501 381.5,520.5Q383,540 386,560ZM654,560L790,560Q795,540 797.5,520.5Q800,501 800,480Q800,459 797.5,439.5Q795,420 790,400L654,400Q657,420 658.5,439.5Q660,459 660,480Q660,501 658.5,520.5Q657,540 654,560ZM638,320L756,320Q727,270 683.5,233Q640,196 584,178Q602,211 615.5,246.5Q629,282 638,320ZM404,320L556,320Q544,276 525,237Q506,198 480,162Q454,198 435,237Q416,276 404,320ZM204,320L322,320Q331,282 344.5,246.5Q358,211 376,178Q320,196 276.5,233Q233,270 204,320Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_next_you.xml b/java/res/drawable/sym_keyboard_next_you.xml
new file mode 100644
index 0000000..a444a96
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_next_you.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960"
+ android:autoMirrored="true">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M504,480L320,296L376,240L616,480L376,720L320,664L504,480Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_previous_you.xml b/java/res/drawable/sym_keyboard_previous_you.xml
new file mode 100644
index 0000000..22e9bde
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_previous_you.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960"
+ android:autoMirrored="true">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M560,720L320,480L560,240L616,296L432,480L616,664L560,720Z"/>
+</vector>
+
diff --git a/java/res/drawable/sym_keyboard_return_you.xml b/java/res/drawable/sym_keyboard_return_you.xml
new file mode 100644
index 0000000..057a3c9
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_return_you.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960"
+ android:autoMirrored="true">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M360,720L120,480L360,240L416,296L272,440L760,440L760,280L840,280L840,520L272,520L416,664L360,720Z"/>
+</vector>
+
diff --git a/java/res/drawable/sym_keyboard_search_you.xml b/java/res/drawable/sym_keyboard_search_you.xml
new file mode 100644
index 0000000..ab1df26
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_search_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M784,840L532,588Q502,612 463,626Q424,640 380,640Q271,640 195.5,564.5Q120,489 120,380Q120,271 195.5,195.5Q271,120 380,120Q489,120 564.5,195.5Q640,271 640,380Q640,424 626,463Q612,502 588,532L840,784L784,840ZM380,560Q455,560 507.5,507.5Q560,455 560,380Q560,305 507.5,252.5Q455,200 380,200Q305,200 252.5,252.5Q200,305 200,380Q200,455 252.5,507.5Q305,560 380,560Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_send_you.xml b/java/res/drawable/sym_keyboard_send_you.xml
new file mode 100644
index 0000000..591c5ba
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_send_you.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960"
+ android:autoMirrored="true">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M120,800L120,160L880,480L120,800ZM180,707L724,480L180,250L180,418L422,480L180,540L180,707ZM180,707L180,480L180,250L180,418L180,418L180,540L180,540L180,707Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_settings_you.xml b/java/res/drawable/sym_keyboard_settings_you.xml
new file mode 100644
index 0000000..9e6b7a5
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_settings_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M388,880L368,754Q349,747 328,735Q307,723 291,710L173,764L80,600L188,521Q186,512 185.5,500.5Q185,489 185,480Q185,471 185.5,459.5Q186,448 188,439L80,360L173,196L291,250Q307,237 328,225Q349,213 368,207L388,80L572,80L592,206Q611,213 632.5,224.5Q654,236 669,250L787,196L880,360L772,437Q774,447 774.5,458.5Q775,470 775,480Q775,490 774.5,501Q774,512 772,522L880,600L787,764L669,710Q653,723 632.5,735.5Q612,748 592,754L572,880L388,880ZM480,610Q534,610 572,572Q610,534 610,480Q610,426 572,388Q534,350 480,350Q426,350 388,388Q350,426 350,480Q350,534 388,572Q426,610 480,610ZM480,550Q451,550 430.5,529.5Q410,509 410,480Q410,451 430.5,430.5Q451,410 480,410Q509,410 529.5,430.5Q550,451 550,480Q550,509 529.5,529.5Q509,550 480,550ZM480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480ZM436,820L524,820L538,708Q571,700 600.5,683Q630,666 654,642L760,688L800,616L706,547Q710,530 712.5,513.5Q715,497 715,480Q715,463 713,446.5Q711,430 706,413L800,344L760,272L654,318Q631,292 602,274.5Q573,257 538,252L524,140L436,140L422,252Q388,259 358.5,276Q329,293 306,318L200,272L160,344L254,413Q250,430 247.5,446.5Q245,463 245,480Q245,497 247.5,513.5Q250,530 254,547L160,616L200,688L306,642Q330,666 359.5,683Q389,700 422,708L436,820Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_shift_locked_you.xml b/java/res/drawable/sym_keyboard_shift_locked_you.xml
new file mode 100644
index 0000000..5bfb4e3
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_shift_locked_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/shift_locked_color_you"
+ android:pathData="M320,720L320,520L120,520L480,80L840,520L640,520L640,720L320,720ZM400,640L560,640L560,440L671,440L480,206L289,440L400,440L400,640ZM480,423L480,423L480,423L480,423L480,423L480,423L480,423L480,423ZM160,880L160,800L800,800L800,880L160,880Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_shift_you.xml b/java/res/drawable/sym_keyboard_shift_you.xml
new file mode 100644
index 0000000..32d6ea2
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_shift_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/shift_normal_color_you"
+ android:pathData="M320,840L320,520L120,520L480,80L840,520L640,520L640,840L320,840ZM400,760L560,760L560,440L671,440L480,206L289,440L400,440L400,760ZM480,440L480,440L480,440L480,440L480,440L480,440L480,440L480,440Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_smiley_you.xml b/java/res/drawable/sym_keyboard_smiley_you.xml
new file mode 100644
index 0000000..f176197
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_smiley_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M620,440Q645,440 662.5,422.5Q680,405 680,380Q680,355 662.5,337.5Q645,320 620,320Q595,320 577.5,337.5Q560,355 560,380Q560,405 577.5,422.5Q595,440 620,440ZM340,440Q365,440 382.5,422.5Q400,405 400,380Q400,355 382.5,337.5Q365,320 340,320Q315,320 297.5,337.5Q280,355 280,380Q280,405 297.5,422.5Q315,440 340,440ZM480,700Q548,700 603.5,661.5Q659,623 684,560L618,560Q596,597 559.5,618.5Q523,640 480,640Q437,640 400.5,618.5Q364,597 342,560L276,560Q301,623 356.5,661.5Q412,700 480,700ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_space_you.xml b/java/res/drawable/sym_keyboard_space_you.xml
new file mode 100644
index 0000000..e8929b3
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_space_you.xml
@@ -0,0 +1,13 @@
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M160,600L160,360L220,360L220,540L740,540L740,360L800,360L800,600L160,600Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_tab_you.xml b/java/res/drawable/sym_keyboard_tab_you.xml
new file mode 100644
index 0000000..5656923
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_tab_you.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960"
+ android:autoMirrored="true">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M800,720L800,240L880,240L880,720L800,720ZM480,720L423,664L567,520L80,520L80,440L567,440L424,296L480,240L720,480L480,720Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_voice_off_you.xml b/java/res/drawable/sym_keyboard_voice_off_you.xml
new file mode 100644
index 0000000..f65189a
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_voice_off_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M710,598L652,540Q666,517 673,492Q680,467 680,440L760,440Q760,484 747,523.5Q734,563 710,598ZM480,366Q480,366 480,366Q480,366 480,366L480,366L480,366L480,366Q480,366 480,366Q480,366 480,366ZM592,478L520,406L520,200Q520,183 508.5,171.5Q497,160 480,160Q463,160 451.5,171.5Q440,183 440,200L440,326L360,246L360,200Q360,150 395,115Q430,80 480,80Q530,80 565,115Q600,150 600,200L600,440Q600,451 597.5,460Q595,469 592,478ZM440,840L440,717Q336,703 268,624Q200,545 200,440L280,440Q280,523 337.5,581.5Q395,640 480,640Q514,640 544.5,629.5Q575,619 600,600L657,657Q628,680 593.5,696Q559,712 520,717L520,840L440,840ZM792,904L56,168L112,112L848,848L792,904Z"/>
+</vector>
diff --git a/java/res/drawable/sym_keyboard_voice_you.xml b/java/res/drawable/sym_keyboard_voice_you.xml
new file mode 100644
index 0000000..e7b4cf3
--- /dev/null
+++ b/java/res/drawable/sym_keyboard_voice_you.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: Material Design Authors / Google LLC
+ SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="960"
+ android:viewportHeight="960">
+ <path
+ android:fillColor="@color/icon_color_you"
+ android:pathData="M480,560Q430,560 395,525Q360,490 360,440L360,200Q360,150 395,115Q430,80 480,80Q530,80 565,115Q600,150 600,200L600,440Q600,490 565,525Q530,560 480,560ZM480,320Q480,320 480,320Q480,320 480,320L480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320L480,320Q480,320 480,320Q480,320 480,320ZM440,840L440,717Q336,703 268,624Q200,545 200,440L280,440Q280,523 338.5,581.5Q397,640 480,640Q563,640 621.5,581.5Q680,523 680,440L760,440Q760,545 692,624Q624,703 520,717L520,840L440,840ZM480,480Q497,480 508.5,468.5Q520,457 520,440L520,200Q520,183 508.5,171.5Q497,160 480,160Q463,160 451.5,171.5Q440,183 440,200L440,440Q440,457 451.5,468.5Q463,480 480,480Z"/>
+</vector>
diff --git a/java/res/layout/emoji_keyboard_page.xml b/java/res/layout/emoji_keyboard_page.xml
index 0d10861..f58217a 100644
--- a/java/res/layout/emoji_keyboard_page.xml
+++ b/java/res/layout/emoji_keyboard_page.xml
@@ -22,5 +22,5 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/emoji_keyboard_page"
android:layoutDirection="ltr"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
diff --git a/java/res/layout/emoji_palettes_view.xml b/java/res/layout/emoji_palettes_view.xml
index 7c5f6c0..8612fe7 100644
--- a/java/res/layout/emoji_palettes_view.xml
+++ b/java/res/layout/emoji_palettes_view.xml
@@ -59,22 +59,12 @@
</FrameLayout>
</TabHost>
<include layout="@layout/suggestion_divider" />
- <!-- TODO: Implement KeyView and replace this. -->
- <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
- We just need to ignore the system's audio and haptic feedback settings. -->
- <ImageButton
- android:id="@+id/emoji_keyboard_delete"
- android:layout_width="0dip"
- android:layout_weight="12.5"
- android:layout_height="match_parent"
- android:hapticFeedbackEnabled="false"
- android:soundEffectsEnabled="false"
- android:contentDescription="@string/spoken_description_delete" />
</LinearLayout>
- <androidx.viewpager.widget.ViewPager
+ <androidx.viewpager2.widget.ViewPager2
android:id="@+id/emoji_keyboard_pager"
android:layout_width="match_parent"
- android:layout_height="wrap_content" />
+ android:layout_height="wrap_content"
+ android:orientation="vertical" />
<com.android.inputmethod.keyboard.emoji.EmojiCategoryPageIndicatorView
android:id="@+id/emoji_category_page_id_view"
android:layout_width="match_parent"
@@ -120,13 +110,14 @@
<!-- TODO: Implement KeyView and replace this. -->
<!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
We just need to ignore the system's audio and haptic feedback settings. -->
- <TextView
- android:id="@+id/emoji_keyboard_alphabet_right"
+ <ImageButton
+ android:id="@+id/emoji_keyboard_delete"
android:layout_width="0dip"
android:layout_weight="0.15"
android:gravity="center"
android:layout_height="match_parent"
android:hapticFeedbackEnabled="false"
- android:soundEffectsEnabled="false" />
+ android:soundEffectsEnabled="false"
+ android:contentDescription="@string/spoken_description_delete" />
</LinearLayout>
</com.android.inputmethod.keyboard.emoji.EmojiPalettesView>
diff --git a/java/res/menu/add_style.xml b/java/res/menu/add_style.xml
index befa3f2..62aa9c0 100644
--- a/java/res/menu/add_style.xml
+++ b/java/res/menu/add_style.xml
@@ -20,7 +20,7 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_add_style"
- android:icon="@drawable/ic_add_circle_white_24dp"
+ android:icon="@drawable/ic_add_circle"
android:title="@string/add_style"
android:showAsAction="always" />
</menu>
diff --git a/java/res/mipmap-anydpi-v26/ic_launcher.xml b/java/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..3d90bc5
--- /dev/null
+++ b/java/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background"/>
+ <foreground android:drawable="@drawable/ic_launcher_foreground"/>
+</adaptive-icon>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-af/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-af/cm_strings.xml
index 9dfc93a..6e6ede2 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-af/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hongaars (QWERTY)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-ar/cm_strings.xml
similarity index 61%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-ar/cm_strings.xml
index 229f7a9..49b4eda 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-ar/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">الأبجدية (Bépo)</string>
+ <string name="subtype_hu_ZZ">المجرية (QWERTY)</string>
+ <string name="prefs_keyboard_height_scale">ارتفاع لوحة المفاتيح</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-as/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-as/cm_strings.xml
index 9dfc93a..c6001f9 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-as/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">বৰ্ণ (Bépo)</string>
+</resources>
diff --git a/java/res/values-ast-rES/cm_strings.xml b/java/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..2184d2a
--- /dev/null
+++ b/java/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabetu (Bépo)</string>
+ <string name="subtype_hu_ZZ">Húngaru (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - siguir la configuración del sistema</string>
+ <string name="prefs_keyboard_height_scale">Escala del altor del tecláu</string>
+ <string name="number_row">Filera de númberos</string>
+ <string name="space_trackpad">Mur táctil na barra d\'espaciu</string>
+ <string name="space_trackpad_summary">Esliza\'l deu pela barra d\'espaciu pa mover el cursor</string>
+ <string name="show_emoji_key">Amosar la tecla de fustaxes</string>
+</resources>
diff --git a/java/res/values-az/cm_strings.xml b/java/res/values-az/cm_strings.xml
new file mode 100644
index 0000000..a8930c5
--- /dev/null
+++ b/java/res/values-az/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Əlifba (Bépo)</string>
+ <string name="subtype_hu_ZZ">Macarca (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - sistem ayarlarını izlə</string>
+ <string name="prefs_keyboard_height_scale">Klaviaturanın hündürlüyü</string>
+ <string name="number_row">Nömrə sətri</string>
+ <string name="number_row_summary">4 rəqəmli düymə ehtiva edən bütün düzümlər üçün hər zaman bir nömrə sətri göstər</string>
+ <string name="space_trackpad">Boşluq çubuğu trekped</string>
+ <string name="space_trackpad_summary">Kursoru hərəkət etdirmək üçün boşluq çubuğunu sürüşdür</string>
+ <string name="show_longpress_hints">Uzun basdıqda düymə ipucularını göstər</string>
+ <string name="show_longpress_hints_summary">Dəstəklənən düymələr üçün uzun basma ipucularını göstərir</string>
+ <string name="show_emoji_key">İfadə düyməsini göstər</string>
+ <string name="show_emoji_key_summary">İfadə düyməsini hər zaman göstər. Bu seçim fəal olduqda, dil dəyişdirmə düyməsi göstərilə bilmir.</string>
+</resources>
diff --git a/java/res/values-be/cm_strings.xml b/java/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..d67f712
--- /dev/null
+++ b/java/res/values-be/cm_strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Алфавіт (Bépo)</string>
+ <string name="subtype_hu_ZZ">Венгерская (QWERTY)</string>
+ <string name="show_longpress_hints">Паказваць падказкі пры доўгім утрыманні клавіш</string>
+ <string name="show_emoji_key">Паказаць клавішу эмодзі</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-bg/cm_strings.xml
similarity index 61%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-bg/cm_strings.xml
index 229f7a9..d31b93a 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-bg/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Азбука (Bépo)</string>
+ <string name="subtype_hu_ZZ">Унгарска (QWERTY)</string>
+ <string name="prefs_keyboard_height_scale">Височина на клавиатурата</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-bn/cm_strings.xml
similarity index 60%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-bn/cm_strings.xml
index 229f7a9..4c2ed28 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-bn/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">বর্ণমালা (Bépo)</string>
+ <string name="keyboard_theme_material_follow_system">ম্যাটেরিয়াল - সিস্টেম সেটিংস অনুযায়ী করো</string>
+</resources>
diff --git a/java/res/values-ca/cm_strings.xml b/java/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..19334f6
--- /dev/null
+++ b/java/res/values-ca/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hongarès (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - segueix la configuració del sistema</string>
+ <string name="prefs_keyboard_height_scale">Escala de l\'alçada del teclat</string>
+ <string name="number_row">Número de fila</string>
+ <string name="number_row_summary">Mostra sempre el número de fila per totes les disposicions que inclouen 4 files de tecles</string>
+ <string name="space_trackpad">Ratolí tàctil a la barra espaiadora</string>
+ <string name="space_trackpad_summary">Feu lliscar el dit per moure el cursor</string>
+ <string name="show_longpress_hints">Consells de les tecles en mantenir-les premudes</string>
+ <string name="show_longpress_hints_summary">Manteniu premut per mostrar els consells de les tecles</string>
+ <string name="show_emoji_key">Mostra la tecla emoji</string>
+ <string name="show_emoji_key_summary">Mostra sempre la tecla emoji. Si trieu aquesta opció, no es mostrarà la tecla de canvi de llengua.</string>
+</resources>
diff --git a/java/res/values-cs/cm_strings.xml b/java/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..0018102
--- /dev/null
+++ b/java/res/values-cs/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Abeceda (Bépo)</string>
+ <string name="subtype_hu_ZZ">Maďarština (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material – podle nastavení systému</string>
+ <string name="prefs_keyboard_height_scale">Měřítko výšky klávesnice</string>
+ <string name="number_row">Řádek čísel</string>
+ <string name="number_row_summary">Vždy zobrazit řádek s čísly pro všechna rozložení se 4 řadami kláves.</string>
+ <string name="space_trackpad">Ovládat kurzor mezerníkem </string>
+ <string name="space_trackpad_summary">Přejetím prstem po mezerníku přesunete kurzor</string>
+ <string name="show_longpress_hints">Dlouhým stiskem klávesy zobrazit nápovědu</string>
+ <string name="show_longpress_hints_summary">Dlouhým stiskem podporované klávesy zobrazit nápovědu</string>
+ <string name="show_emoji_key">Zobrazit klávesu emodži</string>
+ <string name="show_emoji_key_summary">Vždy zobrazte klávesu emoji. Pokud je tato možnost povolena, klávesa pro přepínání jazyků se nezobrazí.</string>
+</resources>
diff --git a/java/res/values-cy/cm_strings.xml b/java/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..8a1f23c
--- /dev/null
+++ b/java/res/values-cy/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Gwyddor Lladin (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hwngareg (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Defnydd - defnyddio gosodiadau system</string>
+ <string name="prefs_keyboard_height_scale">Cyfradd uchder y bysellfwrdd</string>
+ <string name="number_row">Rhes rhif</string>
+ <string name="space_trackpad">Pad tracio bylchwr</string>
+ <string name="show_emoji_key">Dangos bysell emoji</string>
+</resources>
diff --git a/java/res/values-da/cm_strings.xml b/java/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..3767c90
--- /dev/null
+++ b/java/res/values-da/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungarsk (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Materiale - følg systemindstillinger</string>
+ <string name="prefs_keyboard_height_scale">Højdeskala for tastatur</string>
+ <string name="number_row">Nummerække</string>
+ <string name="number_row_summary">Altid vis nummer række for alle opsætninger som bruger 4 rækker af taster</string>
+ <string name="space_trackpad">Mellemrums tast navigering</string>
+ <string name="space_trackpad_summary">Stryg på mellemrumstasten for at flytte markøren</string>
+ <string name="show_longpress_hints">Vis tasttips med et langt tryk</string>
+ <string name="show_longpress_hints_summary">Vis tasttips ved langt tryk for understøttede taster</string>
+ <string name="show_emoji_key">Vis emoji tast</string>
+ <string name="show_emoji_key_summary">Altid vis emoji tast. Når den indstilling er aktiveret, kan sprogskift tasten ikke vises</string>
+</resources>
diff --git a/java/res/values-de/cm_strings.xml b/java/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..452f177
--- /dev/null
+++ b/java/res/values-de/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungarisch (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - Systemeinstellungen verwenden</string>
+ <string name="prefs_keyboard_height_scale">Tastaturhöhenskalierung</string>
+ <string name="number_row">Zahlenreihe</string>
+ <string name="number_row_summary">Zahlenreihe bei Tastaturbelegungen mit 4 Tastenreihen immer anzeigen</string>
+ <string name="space_trackpad">Leertaste als Touchpad</string>
+ <string name="space_trackpad_summary">Wische über die Leertaste, um den Cursor zu bewegen</string>
+ <string name="show_longpress_hints">Hinweise bei langem Tastendruck anzeigen</string>
+ <string name="show_longpress_hints_summary">Zeigt Hinweise bei langem Tastendruck für unterstützte Tasten</string>
+ <string name="show_emoji_key">Emoji-Taste anzeigen</string>
+ <string name="show_emoji_key_summary">Emoji-Taste immer anzeigen. Wenn diese Option aktiviert ist, kann die Taste für die Sprachumschaltung nicht angezeigt werden.</string>
+</resources>
diff --git a/java/res/values-el/cm_strings.xml b/java/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..e7a2445
--- /dev/null
+++ b/java/res/values-el/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Αλφάβητο (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ουγγρικά (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - ακολουθήστε τις ρυθμίσεις συστήματος</string>
+ <string name="prefs_keyboard_height_scale">Κλίμακα ύψους πληκτρολογίου</string>
+ <string name="number_row">Σειρά αριθμών</string>
+ <string name="number_row_summary">Πάντα εμφάνιση μιας σειράς αριθμών για όλες τις διατάξεις που διαθέτουν 4 σειρές πλήκτρων</string>
+ <string name="space_trackpad">Trackpad πλήκτρου διαστήματος</string>
+ <string name="space_trackpad_summary">Σύρετε στο πλήκτρο διαστήματος για να μετακινήσετε το δρομέα</string>
+ <string name="show_longpress_hints">Εμφάνιση υποδείξεων παρατεταμένου πατήματος</string>
+ <string name="show_longpress_hints_summary">Εμφανίζει υποδείξεις παρατεταμένου πατήματος για τα υποστηριζόμενα πλήκτρα</string>
+ <string name="show_emoji_key">Εμφάνιση πλήκτρου emoji</string>
+ <string name="show_emoji_key_summary">Να εμφανίζεται πάντα το πλήκτρο emoji. Όταν αυτή η επιλογή είναι ενεργοποιημένη, το πλήκτρο αλλαγής γλώσσας δεν μπορεί να εμφανιστεί.</string>
+</resources>
diff --git a/java/res/values-en-rAU/cm_strings.xml b/java/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..daf4dd0
--- /dev/null
+++ b/java/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungarian (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - follow system settings</string>
+ <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
+ <string name="number_row">Number row</string>
+ <string name="number_row_summary">Always show a number row for all layouts that feature 4 rows of keys</string>
+ <string name="space_trackpad">Space bar trackpad</string>
+ <string name="space_trackpad_summary">Swipe on the space bar to move the cursor</string>
+ <string name="show_longpress_hints">Show long-press key hints</string>
+ <string name="show_longpress_hints_summary">Shows long-press hints for supported keys</string>
+ <string name="show_emoji_key">Show emoji key</string>
+ <string name="show_emoji_key_summary">Always show emoji key. When this option is enabled, the language switch key cannot be shown.</string>
+</resources>
diff --git a/java/res/values-en-rCA/cm_strings.xml b/java/res/values-en-rCA/cm_strings.xml
new file mode 100644
index 0000000..daf4dd0
--- /dev/null
+++ b/java/res/values-en-rCA/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungarian (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - follow system settings</string>
+ <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
+ <string name="number_row">Number row</string>
+ <string name="number_row_summary">Always show a number row for all layouts that feature 4 rows of keys</string>
+ <string name="space_trackpad">Space bar trackpad</string>
+ <string name="space_trackpad_summary">Swipe on the space bar to move the cursor</string>
+ <string name="show_longpress_hints">Show long-press key hints</string>
+ <string name="show_longpress_hints_summary">Shows long-press hints for supported keys</string>
+ <string name="show_emoji_key">Show emoji key</string>
+ <string name="show_emoji_key_summary">Always show emoji key. When this option is enabled, the language switch key cannot be shown.</string>
+</resources>
diff --git a/java/res/values-en-rGB/cm_strings.xml b/java/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..daf4dd0
--- /dev/null
+++ b/java/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungarian (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - follow system settings</string>
+ <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
+ <string name="number_row">Number row</string>
+ <string name="number_row_summary">Always show a number row for all layouts that feature 4 rows of keys</string>
+ <string name="space_trackpad">Space bar trackpad</string>
+ <string name="space_trackpad_summary">Swipe on the space bar to move the cursor</string>
+ <string name="show_longpress_hints">Show long-press key hints</string>
+ <string name="show_longpress_hints_summary">Shows long-press hints for supported keys</string>
+ <string name="show_emoji_key">Show emoji key</string>
+ <string name="show_emoji_key_summary">Always show emoji key. When this option is enabled, the language switch key cannot be shown.</string>
+</resources>
diff --git a/java/res/values-en-rIN/cm_strings.xml b/java/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..daf4dd0
--- /dev/null
+++ b/java/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungarian (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - follow system settings</string>
+ <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
+ <string name="number_row">Number row</string>
+ <string name="number_row_summary">Always show a number row for all layouts that feature 4 rows of keys</string>
+ <string name="space_trackpad">Space bar trackpad</string>
+ <string name="space_trackpad_summary">Swipe on the space bar to move the cursor</string>
+ <string name="show_longpress_hints">Show long-press key hints</string>
+ <string name="show_longpress_hints_summary">Shows long-press hints for supported keys</string>
+ <string name="show_emoji_key">Show emoji key</string>
+ <string name="show_emoji_key_summary">Always show emoji key. When this option is enabled, the language switch key cannot be shown.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-es-rUS/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-es-rUS/cm_strings.xml
index 9dfc93a..b65cb8c 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-es-rUS/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabeto (Bépo)</string>
+ <string name="subtype_hu_ZZ">Húngaro (QWERTY)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-es/cm_strings.xml
similarity index 63%
rename from java/res/drawable/btn_keyboard_spacebar_ics.xml
rename to java/res/values-es/cm_strings.xml
index 229f7a9..dda927a 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-es/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabeto (Bépo)</string>
+ <string name="subtype_hu_ZZ">Húngaro (QWERTY)</string>
+ <string name="prefs_keyboard_height_scale">Escala de altura del teclado</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-et/cm_strings.xml
similarity index 60%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-et/cm_strings.xml
index 229f7a9..810f746 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-et/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Tähestik (Bépo)</string>
+ <string name="keyboard_theme_material_follow_system">Materiaalne - järgi süsteemi seadeid</string>
+ <string name="prefs_keyboard_height_scale">Klaviatuuri kõrgusskaala</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-eu/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-eu/cm_strings.xml
index 9dfc93a..07b3843 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-eu/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabetoa (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungariera (QWERTY)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-fa/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-fa/cm_strings.xml
index 9dfc93a..e38bfb1 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-fa/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">حروف الفبا (Bépo)</string>
+</resources>
diff --git a/java/res/values-fi/cm_strings.xml b/java/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..5f54bea
--- /dev/null
+++ b/java/res/values-fi/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Aakkoset (Bépo)</string>
+ <string name="subtype_hu_ZZ">Unkari (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - seuraa järjestelmän asetuksia</string>
+ <string name="prefs_keyboard_height_scale">Näppäimistön korkeuden skaalaus</string>
+ <string name="number_row">Numerorivi</string>
+ <string name="show_emoji_key">Näytä emoji-painike</string>
+</resources>
diff --git a/java/res/values-fr/cm_strings.xml b/java/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..d19c9df
--- /dev/null
+++ b/java/res/values-fr/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hongrois (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Matériel - suivre les paramètres du système</string>
+ <string name="prefs_keyboard_height_scale">Hauteur du clavier</string>
+ <string name="number_row">Ligne des numéros</string>
+ <string name="number_row_summary">Toujours afficher la rangée des chiffres pour tous les agencements comprenant 4 rangées de touches.</string>
+ <string name="space_trackpad">Pavé tactile de la barre d\'espace</string>
+ <string name="space_trackpad_summary">Glisser sur la barre d\'espace pour déplacer le curseur</string>
+ <string name="show_longpress_hints">Afficher les indices d\'appui long sur une touche</string>
+ <string name="show_longpress_hints_summary">Affiche les indices d\'appui long pour les touches prises en charge</string>
+ <string name="show_emoji_key">Afficher la touche Émoji</string>
+ <string name="show_emoji_key_summary">Toujours afficher la touche Émoji. Lorsque cette option est activée, la touche de changement de langue ne peut pas être affichée.</string>
+</resources>
diff --git a/java/res/values-fur-rIT/cm_strings.xml b/java/res/values-fur-rIT/cm_strings.xml
new file mode 100644
index 0000000..d6ae2f1
--- /dev/null
+++ b/java/res/values-fur-rIT/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ongjarês (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - va daûr des impostazions di sisteme</string>
+ <string name="prefs_keyboard_height_scale">Altece de tastiere</string>
+ <string name="number_row">Rie numars</string>
+ <string name="number_row_summary">Mostre simpri la rie dai numars par ducj i strâts cun 4 riis di tascj</string>
+ <string name="space_trackpad">Spostament cu la sbare di spazi</string>
+ <string name="space_trackpad_summary">Scor su la sbare di spazi par spostâ il cursôr</string>
+ <string name="show_longpress_hints">Mostre sugjeriments di pression sprolungjade</string>
+ <string name="show_longpress_hints_summary">Mostre sugjeriments di pression sprolungjade pai tascj supuartâts</string>
+ <string name="show_emoji_key">Metre tast emoji</string>
+ <string name="show_emoji_key_summary">Mostre simpri il tast emoji. Se cheste opzion e je ative, nol sarà pussibil mostrâ il tast par cambiâ lenghe.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-fy-rNL/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-fy-rNL/cm_strings.xml
index 9dfc93a..88e81e0 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-fy-rNL/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hongaarsk (QWERTY)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-gd/cm_strings.xml
similarity index 63%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-gd/cm_strings.xml
index 229f7a9..2ddd758 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-gd/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Aibidil (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungairis (QWERTY)</string>
+ <string name="prefs_keyboard_height_scale">Sgèile àirde a’ mheur-chlàir</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-gl/cm_strings.xml
similarity index 63%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-gl/cm_strings.xml
index 229f7a9..217e3de 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-gl/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabeto (Bépo)</string>
+ <string name="subtype_hu_ZZ">Húngaro (QWERTY)</string>
+ <string name="prefs_keyboard_height_scale">Escala de altura do teclado</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-gu/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-gu/cm_strings.xml
index 9dfc93a..a1ebb28 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-gu/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-hi/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-hi/cm_strings.xml
index 9dfc93a..6d17b8b 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-hi/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">कीबोर्ड (पासवर्ड के लिए)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-hr/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-hr/cm_strings.xml
index 9dfc93a..71bfd8d 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-hr/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Abeceda (Bépo)</string>
+ <string name="subtype_hu_ZZ">Mađarski (QWERTY)</string>
+</resources>
diff --git a/java/res/drawable/btn_suggestion_klp.xml b/java/res/values-hu-rZZ/bools.xml
similarity index 69%
copy from java/res/drawable/btn_suggestion_klp.xml
copy to java/res/values-hu-rZZ/bools.xml
index 471165b..840d20c 100644
--- a/java/res/drawable/btn_suggestion_klp.xml
+++ b/java/res/values-hu-rZZ/bools.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2013, The Android Open Source Project
+** Copyright 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.
@@ -17,11 +17,8 @@
** limitations under the License.
*/
-->
-
-<selector
- xmlns:android="http://schemas.android.com/apk/res/android"
->
- <item
- android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-</selector>
+<resources>
+ <!-- Whether this input method should be used as the default for a locale. Override it
+ for supported languages. -->
+ <bool name="im_is_default">true</bool>
+</resources>
diff --git a/java/res/values-hu-rZZ/cm_strings.xml b/java/res/values-hu-rZZ/cm_strings.xml
new file mode 100644
index 0000000..a6cf634
--- /dev/null
+++ b/java/res/values-hu-rZZ/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- This string is displayed in the description for a keyboard type. It refers specifically to
+the Latin alphabet, as opposed to Cyrillic, Arabic, Hebrew or other scripts.
+When the device is configured to use a language using a script other than the Latin alphabet, the
+user still needs a keyboard that can input Latin characters for passwords or login names for
+example, and a way to switch to this Latin alphabet keyboard. This string is the description for
+this keyboard, so users of other scripts should understand when they read this that it represents a
+keyboard that is meant for them to be able to enter Latin characters as opposed to the script they
+are used to. This keyboard does not provide a dictionary, and it is not tied to any specific
+language among those that use the Latin alphabet. This keyboard is laid out in the Bépo
+disposition rather than other common dispositions for Latin languages. [CHAR LIMIT=25] -->
+ <string name="subtype_no_language_bepo">Ábécé (Bépo)</string>
+</resources>
diff --git a/java/res/values-hu-rZZ/strings-action-keys.xml b/java/res/values-hu-rZZ/strings-action-keys.xml
new file mode 100644
index 0000000..6de2d30
--- /dev/null
+++ b/java/res/values-hu-rZZ/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2013, 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.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="label_go_key" msgid="4033615332628671065">"Mehet"</string>
+ <string name="label_next_key" msgid="5586407279258592635">"Köv."</string>
+ <string name="label_previous_key" msgid="1421141755779895275">"Előző"</string>
+ <string name="label_done_key" msgid="7564866296502630852">"Kész"</string>
+ <string name="label_send_key" msgid="482252074224462163">"Küld"</string>
+ <string name="label_search_key" msgid="7965186050435796642">"Keresés"</string>
+ <string name="label_pause_key" msgid="2225922926459730642">"Állj"</string>
+ <string name="label_wait_key" msgid="5891247853595466039">"Vár"</string>
+</resources>
diff --git a/java/res/values-hu-rZZ/strings-appname.xml b/java/res/values-hu-rZZ/strings-appname.xml
new file mode 100644
index 0000000..ec99904
--- /dev/null
+++ b/java/res/values-hu-rZZ/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2013, 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.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_name" msgid="5940510615957428904">"Android-billentyűzet (AOSP)"</string>
+ <string name="spell_checker_service_name" msgid="1254221805440242662">"Androidos helyesírás-ellenőrző (AOSP)"</string>
+ <string name="english_ime_settings" msgid="5760361067176802794">"Android-billentyűzet beállításai (AOSP)"</string>
+ <string name="android_spell_checker_settings" msgid="6123949487832861885">"Androidos helyesírás-ellenőrző beállításai (AOSP)"</string>
+</resources>
diff --git a/java/res/values-v21/platform-theme.xml b/java/res/values-hu-rZZ/strings-config-important-notice.xml
similarity index 66%
rename from java/res/values-v21/platform-theme.xml
rename to java/res/values-hu-rZZ/strings-config-important-notice.xml
index 58763fb..c023293 100644
--- a/java/res/values-v21/platform-theme.xml
+++ b/java/res/values-hu-rZZ/strings-config-important-notice.xml
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
/*
**
** Copyright 2014, The Android Open Source Project
@@ -16,10 +16,9 @@
** See the License for the specific language governing permissions and
** limitations under the License.
*/
--->
+ -->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="platformActivityTheme" parent="@android:style/Theme.DeviceDefault.Light" />
- <style name="platformSettingsTheme" parent="@android:style/Theme.DeviceDefault.Settings" />
- <style name="platformDialogTheme" parent="@android:style/Theme.DeviceDefault.Light.Dialog" />
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Javaslatok javítása a kommunikáció és begépelt adatok alapján"</string>
</resources>
diff --git a/java/res/values-hu-rZZ/strings-emoji-descriptions.xml b/java/res/values-hu-rZZ/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..7bd8045
--- /dev/null
+++ b/java/res/values-hu-rZZ/strings-emoji-descriptions.xml
@@ -0,0 +1,1767 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+ -->
+
+<!--
+ These Emoji symbols are unsupported by TTS.
+ TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Szerzői jog embléma"</string>
+ <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Regisztrált embléma"</string>
+ <string name="spoken_emoji_203C" msgid="153340916701508663">"Kettős felkiáltójel"</string>
+ <string name="spoken_emoji_2049" msgid="4877256448299555371">"Felkiáltó- és kérdőjel"</string>
+ <string name="spoken_emoji_2122" msgid="9188440722954720429">"Védjegy jel"</string>
+ <string name="spoken_emoji_2139" msgid="9114342638917304327">"Információs pont"</string>
+ <string name="spoken_emoji_2194" msgid="8055202727034946680">"Kétágú vízszintes nyíl"</string>
+ <string name="spoken_emoji_2195" msgid="8028122253301087407">"Kétágú függőleges nyíl"</string>
+ <string name="spoken_emoji_2196" msgid="4019164898967854363">"Északnyugatra mutató nyíl"</string>
+ <string name="spoken_emoji_2197" msgid="4255723717709017801">"Északkeletre mutató nyíl"</string>
+ <string name="spoken_emoji_2198" msgid="1452063451313622090">"Délkeletre mutató nyíl"</string>
+ <string name="spoken_emoji_2199" msgid="6942722693368807849">"Délnyugatra mutató nyíl"</string>
+ <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Balra mutató kampós nyíl"</string>
+ <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Jobbra mutató kampós nyíl"</string>
+ <string name="spoken_emoji_231A" msgid="6751448803233874993">"Karóra"</string>
+ <string name="spoken_emoji_231B" msgid="5956428809948426182">"Homokóra"</string>
+ <!-- no translation found for spoken_emoji_2328 (8004906090359197446) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23CF (8619437871899719070) -->
+ <skip />
+ <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Jobbra mutató fekete kettős háromszög"</string>
+ <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Balra mutató fekete kettős háromszög"</string>
+ <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Felfelé mutató fekete kettős háromszög"</string>
+ <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Lefelé mutató fekete kettős háromszög"</string>
+ <!-- no translation found for spoken_emoji_23ED (4064850193044573080) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23EE (9014449600450857793) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23EF (3823680845887006998) -->
+ <skip />
+ <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Ébresztőóra"</string>
+ <!-- no translation found for spoken_emoji_23F1 (2303619241672210658) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23F2 (2178084138229786936) -->
+ <skip />
+ <string name="spoken_emoji_23F3" msgid="166900119581024371">"Homokóra folyó homokkal"</string>
+ <!-- no translation found for spoken_emoji_23F8 (1924914079210161141) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23F9 (1268967989320035023) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_23FA (3359902126862990795) -->
+ <skip />
+ <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Latin nagy m betű egy körben"</string>
+ <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Kis fekete négyzet"</string>
+ <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Kis fehér négyzet"</string>
+ <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Jobbra mutató fekete háromszög"</string>
+ <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Balra mutató fekete háromszög"</string>
+ <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Közepes fehér négyzet"</string>
+ <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Közepes fekete négyzet"</string>
+ <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Közepesen kicsi fehér négyzet"</string>
+ <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Közepesen kicsi fekete négyzet"</string>
+ <string name="spoken_emoji_2600" msgid="2272722634618990413">"Fekete nap sugarakkal"</string>
+ <string name="spoken_emoji_2601" msgid="6205136889311537150">"Felhő"</string>
+ <!-- no translation found for spoken_emoji_2602 (6293136501817877234) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2603 (7285313121103197207) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2604 (8632808648689048735) -->
+ <skip />
+ <string name="spoken_emoji_260E" msgid="8670395193046424238">"Fekete telefon"</string>
+ <string name="spoken_emoji_2611" msgid="4530550203347054611">"Szavazónégyzet pipával"</string>
+ <string name="spoken_emoji_2614" msgid="1612791247861229500">"Esernyő esőcseppekkel"</string>
+ <string name="spoken_emoji_2615" msgid="3320562382424018588">"Forró ital"</string>
+ <!-- no translation found for spoken_emoji_2618 (5581533965699965354) -->
+ <skip />
+ <string name="spoken_emoji_261D" msgid="4690554173549768467">"Fehér felfelé mutató ujj"</string>
+ <!-- no translation found for spoken_emoji_2620 (4434290857196023657) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2622 (2534880989000210921) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2623 (141484483765762677) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2626 (2857954123507187408) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_262A (6726891928565290372) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_262E (3189887039765290178) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_262F (7138150472623738307) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2638 (9073003565602256277) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2639 (6128305824180156835) -->
+ <skip />
+ <string name="spoken_emoji_263A" msgid="3170094381521989300">"Fehér mosolygó arc"</string>
+ <string name="spoken_emoji_2648" msgid="4621241062667020673">"Kos"</string>
+ <string name="spoken_emoji_2649" msgid="7694461245947059086">"Bika"</string>
+ <string name="spoken_emoji_264A" msgid="1258074605878705030">"Ikrek"</string>
+ <string name="spoken_emoji_264B" msgid="4409219914377810956">"Rák"</string>
+ <string name="spoken_emoji_264C" msgid="6520255367817054163">"Oroszlán"</string>
+ <string name="spoken_emoji_264D" msgid="1504758945499854018">"Szűz"</string>
+ <string name="spoken_emoji_264E" msgid="2354847104530633519">"Mérleg"</string>
+ <string name="spoken_emoji_264F" msgid="5822933280406416112">"Skorpió"</string>
+ <string name="spoken_emoji_2650" msgid="4832481156714796163">"Nyilas"</string>
+ <string name="spoken_emoji_2651" msgid="840953134601595090">"Bak"</string>
+ <string name="spoken_emoji_2652" msgid="3586925968718775281">"Vízöntő"</string>
+ <string name="spoken_emoji_2653" msgid="8420547731496254492">"Halak"</string>
+ <string name="spoken_emoji_2660" msgid="4541170554542412536">"Fekete pikk"</string>
+ <string name="spoken_emoji_2663" msgid="3669352721942285724">"Fekete treff"</string>
+ <string name="spoken_emoji_2665" msgid="6347941599683765843">"Fekete szív"</string>
+ <string name="spoken_emoji_2666" msgid="8296769213401115999">"Fekete káró"</string>
+ <string name="spoken_emoji_2668" msgid="7063148281053820386">"Hőforrások"</string>
+ <string name="spoken_emoji_267B" msgid="21716857176812762">"Fekete általános újrahasznosítás jel"</string>
+ <string name="spoken_emoji_267F" msgid="8833496533226475443">"Kerekes szék szimbólum"</string>
+ <!-- no translation found for spoken_emoji_2692 (633276166375803852) -->
+ <skip />
+ <string name="spoken_emoji_2693" msgid="7443148847598433088">"Horgony"</string>
+ <!-- no translation found for spoken_emoji_2694 (4114117110598973648) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2696 (7920282042498350920) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2697 (7576307101162421601) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2699 (8525225054232323125) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_269B (9146644473418235977) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_269C (1883421369883009835) -->
+ <skip />
+ <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Figyelmeztető jel"</string>
+ <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Nagyfeszültség jele"</string>
+ <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Közepes fehér kör"</string>
+ <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Közepes fekete kör"</string>
+ <!-- no translation found for spoken_emoji_26B0 (5742048235215593821) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26B1 (2096529437455909562) -->
+ <skip />
+ <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Focilabda"</string>
+ <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Baseball-labda"</string>
+ <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Hóember hó nélkül"</string>
+ <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Nap felhő mögött"</string>
+ <!-- no translation found for spoken_emoji_26C8 (4641925705576445058) -->
+ <skip />
+ <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Kígyótartó"</string>
+ <!-- no translation found for spoken_emoji_26CF (1048987245528185548) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26D1 (5122253261153603676) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26D3 (7567590167882104907) -->
+ <skip />
+ <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Behajtani tilos"</string>
+ <!-- no translation found for spoken_emoji_26E9 (5219739268764945756) -->
+ <skip />
+ <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Templom"</string>
+ <!-- no translation found for spoken_emoji_26F0 (8690606275240650121) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26F1 (7617840615623596077) -->
+ <skip />
+ <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Szökőkút"</string>
+ <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Golfzászló lyukban"</string>
+ <!-- no translation found for spoken_emoji_26F4 (8296597141413923967) -->
+ <skip />
+ <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Vitorláshajó"</string>
+ <!-- no translation found for spoken_emoji_26F7 (5002838791562917075) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26F8 (2326041972852924376) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_26F9 (1588803158145064802) -->
+ <skip />
+ <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Sátor"</string>
+ <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Benzinkút"</string>
+ <string name="spoken_emoji_2702" msgid="4005741160717451912">"Fekete olló"</string>
+ <string name="spoken_emoji_2705" msgid="164605766946697759">"Nagy fehér pipa jel"</string>
+ <string name="spoken_emoji_2708" msgid="7153840886849268988">"Repülőgép"</string>
+ <string name="spoken_emoji_2709" msgid="2217319160724311369">"Boríték"</string>
+ <string name="spoken_emoji_270A" msgid="508347232762319473">"Felemelt ököl"</string>
+ <string name="spoken_emoji_270B" msgid="6640562128327753423">"Felemelt kéz"</string>
+ <string name="spoken_emoji_270C" msgid="1344288035704944581">"Győzelmet mutató kéz"</string>
+ <!-- no translation found for spoken_emoji_270D (8850355355131892496) -->
+ <skip />
+ <string name="spoken_emoji_270F" msgid="6108251586067318718">"Ceruza"</string>
+ <string name="spoken_emoji_2712" msgid="6320544535087710482">"Fekete tollhegy"</string>
+ <string name="spoken_emoji_2714" msgid="1968242800064001654">"Nagy pipa jel"</string>
+ <string name="spoken_emoji_2716" msgid="511941294762977228">"Nagy szorzásjel"</string>
+ <!-- no translation found for spoken_emoji_271D (2367275551961395862) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_2721 (4150694777322944905) -->
+ <skip />
+ <string name="spoken_emoji_2728" msgid="5650330815808691881">"Szikrák"</string>
+ <string name="spoken_emoji_2733" msgid="8915809595141157327">"Nyolcágú csillag"</string>
+ <string name="spoken_emoji_2734" msgid="4846583547980754332">"Nyolcágú fekete csillag"</string>
+ <string name="spoken_emoji_2744" msgid="4350636647760161042">"Hópehely"</string>
+ <string name="spoken_emoji_2747" msgid="3718282973916474455">"Szikra"</string>
+ <string name="spoken_emoji_274C" msgid="2752145886733295314">"Kereszt"</string>
+ <string name="spoken_emoji_274E" msgid="4262918689871098338">"Kereszt négyzetben negatívban"</string>
+ <string name="spoken_emoji_2753" msgid="6935897159942119808">"Fekete kérdőjel"</string>
+ <string name="spoken_emoji_2754" msgid="7277504915105532954">"Fehér kérdőjel"</string>
+ <string name="spoken_emoji_2755" msgid="6853076969826960210">"Fehér felkiáltójel"</string>
+ <string name="spoken_emoji_2757" msgid="3707907828776912174">"Nagy fekete felkiáltójel"</string>
+ <!-- no translation found for spoken_emoji_2763 (3255858123691890971) -->
+ <skip />
+ <string name="spoken_emoji_2764" msgid="4214257843609432167">"Fekete szív"</string>
+ <string name="spoken_emoji_2795" msgid="6563954833786162168">"Nagy pluszjel"</string>
+ <string name="spoken_emoji_2796" msgid="5990926508250772777">"Nagy mínuszjel"</string>
+ <string name="spoken_emoji_2797" msgid="24694184172879174">"Nagy osztásjel"</string>
+ <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Fekete jobbra mutató nyíl"</string>
+ <string name="spoken_emoji_27B0" msgid="203395646864662198">"Hurok"</string>
+ <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Dupla hurok"</string>
+ <string name="spoken_emoji_2934" msgid="9062130477982973457">"Jobbra mutató, majd felfelé kanyarodó nyíl"</string>
+ <string name="spoken_emoji_2935" msgid="6198710960720232074">"Jobbra mutató, majd lefelé kanyarodó nyíl"</string>
+ <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Balra mutató fekete nyíl"</string>
+ <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Felfelé mutató fekete nyíl"</string>
+ <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Lefelé mutató fekete nyíl"</string>
+ <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Nagy fekete négyzet"</string>
+ <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Nagy fehér négyzet"</string>
+ <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Közepes fehér csillag"</string>
+ <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Nagy kör"</string>
+ <string name="spoken_emoji_3030" msgid="4609172241893565639">"Hullámos vonal"</string>
+ <string name="spoken_emoji_303D" msgid="2545833934975907505">"Dalrész kezdete jel"</string>
+ <string name="spoken_emoji_3297" msgid="928912923628973800">"Gratuláció ideogram körben"</string>
+ <string name="spoken_emoji_3299" msgid="3930347573693668426">"Titok ideogram körben"</string>
+ <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Madzsong vörös sárkány kő"</string>
+ <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Fekete dzsóker kártya"</string>
+ <string name="spoken_emoji_1F170" msgid="3817698686602826773">"A vércsoport"</string>
+ <string name="spoken_emoji_1F171" msgid="3684218589626650242">"B vércsoport"</string>
+ <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"0 vércsoport"</string>
+ <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Parkoló"</string>
+ <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"AB vércsoport"</string>
+ <string name="spoken_emoji_1F191" msgid="5386969264431429221">"CL négyzetben"</string>
+ <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Cool négyzetben"</string>
+ <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Free négyzetben"</string>
+ <string name="spoken_emoji_1F194" msgid="4903128609556175887">"ID négyzetben"</string>
+ <string name="spoken_emoji_1F195" msgid="1433142500411060924">"New négyzetben"</string>
+ <string name="spoken_emoji_1F196" msgid="8825160701159634202">"NG négyzetben"</string>
+ <string name="spoken_emoji_1F197" msgid="7841079241554176535">"OK négyzetben"</string>
+ <string name="spoken_emoji_1F198" msgid="7020298909426960622">"SOS négyzetben"</string>
+ <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Up felkiáltójellel négyzetben"</string>
+ <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"VS négyzetben"</string>
+ <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Itt katakana négyzetben"</string>
+ <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Szolgáltatás katakana négyzetben"</string>
+ <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Díjmentes ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Foglalt hely ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Tiltás ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Üresedés ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Elfogadás ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Teljes foglaltság ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F236" msgid="879755752069393034">"Kifizetve ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Havi ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Alkalmazás ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Kedvezmény ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Munkában ideogram négyzetben"</string>
+ <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Előny ideogram körben"</string>
+ <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Elfogad ideogram körben"</string>
+ <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Ciklon"</string>
+ <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Ködös"</string>
+ <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Összecsukott esernyő"</string>
+ <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Éjszakai ég csillagokkal"</string>
+ <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Napfelkelte a hegyek fölött"</string>
+ <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Napfelkelte"</string>
+ <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Városi látkép alkonyatkor"</string>
+ <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Napnyugta épületek felett"</string>
+ <string name="spoken_emoji_1F308" msgid="688704703985173377">"Szivárvány"</string>
+ <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Híd éjszaka"</string>
+ <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Hullám"</string>
+ <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Vulkán"</string>
+ <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Tejút"</string>
+ <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Földgömb Európával és Afrikával"</string>
+ <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Földgömb Észak- és Dél-Amerikával"</string>
+ <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Földgömb Ázsiával és Ausztráliával"</string>
+ <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Földgömb délkörökkel"</string>
+ <string name="spoken_emoji_1F311" msgid="623906380914895542">"Újhold szimbólum"</string>
+ <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Növekvő félhold szimbólum"</string>
+ <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Első negyed holdfázis szimbólum"</string>
+ <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Növekvő hold szimbólum"</string>
+ <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Telihold szimbólum"</string>
+ <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Fogyó hold szimbólum"</string>
+ <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Utolsó negyed holdfázis szimbólum"</string>
+ <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Fogyó félhold szimbólum"</string>
+ <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Holdsarló"</string>
+ <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Újhold arccal"</string>
+ <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Első negyed holdfázis arccal"</string>
+ <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Utolsó negyed holdfázis arccal"</string>
+ <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Telihold arccal"</string>
+ <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Nap arccal"</string>
+ <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Tündöklő csillag"</string>
+ <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Hullócsillag"</string>
+ <!-- no translation found for spoken_emoji_1F321 (581288529301493075) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F324 (2930891297836314896) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F325 (5282092301688177705) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F326 (165046788529872891) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F327 (4384791469343260600) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F328 (1991614733939171872) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F329 (6016235695016510649) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32A (5889026615334911758) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32B (3223192457131343118) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32C (3479270390051226956) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32D (8869598854109228966) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32E (6077879860650582531) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F32F (6730078269862769637) -->
+ <skip />
+ <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Gesztenye"</string>
+ <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Palánta"</string>
+ <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Örökzöld fa"</string>
+ <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Lombhullató fa"</string>
+ <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Pálmafa"</string>
+ <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Kaktusz"</string>
+ <!-- no translation found for spoken_emoji_1F336 (5912660172314184275) -->
+ <skip />
+ <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Tulipán"</string>
+ <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Cseresznyevirág"</string>
+ <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Rózsa"</string>
+ <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Hibiszkusz"</string>
+ <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Napraforgó"</string>
+ <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Virág"</string>
+ <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Kukoricacső"</string>
+ <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Rizskalász"</string>
+ <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Gyógynövény"</string>
+ <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Négylevelű lóhere"</string>
+ <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Juharlevél"</string>
+ <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Lehullott levél"</string>
+ <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Hulló falevél"</string>
+ <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Gomba"</string>
+ <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Paradicsom"</string>
+ <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Padlizsán"</string>
+ <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Szőlő"</string>
+ <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Dinnye"</string>
+ <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Görögdinnye"</string>
+ <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Mandarin"</string>
+ <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Citrom"</string>
+ <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banán"</string>
+ <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Ananász"</string>
+ <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Piros alma"</string>
+ <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Zöldalma"</string>
+ <string name="spoken_emoji_1F350" msgid="625802980159197701">"Körte"</string>
+ <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Barack"</string>
+ <string name="spoken_emoji_1F352" msgid="965600953360182635">"Cseresznye"</string>
+ <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Eper"</string>
+ <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamburger"</string>
+ <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Pizzaszelet"</string>
+ <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Hús csonttal"</string>
+ <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Csirkecomb"</string>
+ <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Rizskeksz"</string>
+ <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Rizsgombóc"</string>
+ <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Főtt rizs"</string>
+ <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Currys rizs"</string>
+ <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Tészta tálban"</string>
+ <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spagetti"</string>
+ <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Kenyér"</string>
+ <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Sült krumpli"</string>
+ <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Sült édesburgonya"</string>
+ <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+ <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+ <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Szusi"</string>
+ <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Sült garnéla"</string>
+ <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Haltorta örvény mintával"</string>
+ <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Fagylalt"</string>
+ <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Jégkása"</string>
+ <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Jégkrém"</string>
+ <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Fánk"</string>
+ <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Sütemény"</string>
+ <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Csokoládé"</string>
+ <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Cukorka"</string>
+ <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
+ <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Sodó"</string>
+ <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Mézesbödön"</string>
+ <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Tortaszelet"</string>
+ <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Bento tál"</string>
+ <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Egy fazék étel"</string>
+ <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Serpenyő"</string>
+ <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Kés és villa"</string>
+ <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Fületlen teáscsésze"</string>
+ <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Szakés kancsó és csésze"</string>
+ <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Borospohár"</string>
+ <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Koktélos pohár"</string>
+ <string name="spoken_emoji_1F379" msgid="790581290787943325">"Trópusi ital"</string>
+ <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Söröskorsó"</string>
+ <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Koccintó söröskorsók"</string>
+ <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Cumisüveg"</string>
+ <!-- no translation found for spoken_emoji_1F37D (8887228479219886429) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F37E (37593222775513943) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F37F (4196704853559909123) -->
+ <skip />
+ <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Masni"</string>
+ <string name="spoken_emoji_1F381" msgid="614180683680675444">"Becsomagolt ajándék"</string>
+ <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Születésnapi torta"</string>
+ <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Töklámpás"</string>
+ <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Karácsonyfa"</string>
+ <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Télapó"</string>
+ <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Tűzijáték"</string>
+ <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Csillagszóró"</string>
+ <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Léggömb"</string>
+ <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Mini konfettiágyú"</string>
+ <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Konfettigömb"</string>
+ <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Tanabata fa"</string>
+ <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Keresztbe tett zászlók"</string>
+ <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Fenyődísz"</string>
+ <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Japán babák"</string>
+ <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Ponty alakú szélzsákok"</string>
+ <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Szélharang"</string>
+ <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Holdszemlélő ünnep"</string>
+ <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Iskolatáska"</string>
+ <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Diplomaosztón viselt kalap"</string>
+ <!-- no translation found for spoken_emoji_1F396 (8356140738000265647) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F397 (5249863289838097468) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F399 (6087019010423147017) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39A (1627914548345466924) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39B (648039433701743585) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39E (2918731924907952534) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F39F (2427606024950432412) -->
+ <skip />
+ <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Ló körhintán"</string>
+ <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Óriáskerék"</string>
+ <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Hullámvasút"</string>
+ <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Horgászbot hallal"</string>
+ <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Mikrofon"</string>
+ <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Filmfelvevő gép"</string>
+ <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Mozi"</string>
+ <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Fejhallgató"</string>
+ <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Festőpaletta"</string>
+ <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Cilinder"</string>
+ <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Cirkuszi sátor"</string>
+ <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Jegy"</string>
+ <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Csapó"</string>
+ <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Előadóművészetek"</string>
+ <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Videojáték"</string>
+ <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Telitalálat"</string>
+ <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Játékgép"</string>
+ <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Biliárd"</string>
+ <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Dobókocka"</string>
+ <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Bowling"</string>
+ <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Virág kártya"</string>
+ <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Hangjegy"</string>
+ <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Több hangjegy"</string>
+ <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Szaxofon"</string>
+ <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Gitár"</string>
+ <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Zenei billentyűzet"</string>
+ <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trombita"</string>
+ <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Hegedű"</string>
+ <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Kotta"</string>
+ <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Futótrikó vállszalaggal"</string>
+ <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Teniszütő és -labda"</string>
+ <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Síléc és sícipő"</string>
+ <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Kosárlabda és kosár"</string>
+ <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Kockás zászló"</string>
+ <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Snowboardozó"</string>
+ <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Futó"</string>
+ <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Szörfös"</string>
+ <!-- no translation found for spoken_emoji_1F3C5 (3256434181486954695) -->
+ <skip />
+ <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Kupa"</string>
+ <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Lóverseny"</string>
+ <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Amerikaifutball-labda"</string>
+ <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Rögbilabda"</string>
+ <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Úszó"</string>
+ <!-- no translation found for spoken_emoji_1F3CB (6201404884476413631) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CC (5773930948380166403) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CD (3174865701360723287) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CE (298990178863007728) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3CF (220014996836173720) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D0 (1515966148588308407) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D1 (9065400886436849028) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D2 (9113415091165206322) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D3 (5392602379011857837) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D4 (5682806162641888464) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D5 (485622019934191893) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D6 (8056487018845189239) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D7 (9200931466909972688) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D8 (4060224387880105443) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3D9 (5239036983837296458) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DA (4479002058414881869) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DB (5481092245291634716) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DC (7540751465637885253) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DD (2957722522033693226) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DE (8767730963119889199) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3DF (360348087882746758) -->
+ <skip />
+ <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Ház"</string>
+ <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Ház kerttel"</string>
+ <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Irodaépület"</string>
+ <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Japán posta"</string>
+ <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Európai posta"</string>
+ <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Kórház"</string>
+ <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Bank"</string>
+ <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"ATM"</string>
+ <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Szálloda"</string>
+ <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Motel"</string>
+ <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Kisbolt"</string>
+ <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Iskola"</string>
+ <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Áruház"</string>
+ <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Gyár"</string>
+ <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Japán lámpás"</string>
+ <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Japán kastély"</string>
+ <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Európai kastély"</string>
+ <!-- no translation found for spoken_emoji_1F3F3 (6471977885401554862) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F4 (6634164537580574234) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F5 (5247950040998935573) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F7 (5140855387008703511) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F8 (7061216387824058281) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3F9 (1287386031701875351) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FA (972388608151034163) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FB (2482905976407635663) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FC (2438230702000819552) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FD (8205610118230779658) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FE (2707903021796601195) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F3FF (12056714027518795) -->
+ <skip />
+ <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Patkány"</string>
+ <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Egér"</string>
+ <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Ökör"</string>
+ <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Vízibivaly"</string>
+ <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Tehén"</string>
+ <!-- no translation found for spoken_emoji_1F405 (4304847753343143926) -->
+ <skip />
+ <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopárd"</string>
+ <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Nyúl"</string>
+ <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Macska"</string>
+ <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Sárkány"</string>
+ <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Krokodil"</string>
+ <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Bálna"</string>
+ <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Csiga"</string>
+ <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Kígyó"</string>
+ <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Ló"</string>
+ <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Kos"</string>
+ <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Kecske"</string>
+ <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Juh"</string>
+ <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Majom"</string>
+ <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Kakas"</string>
+ <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Csirke"</string>
+ <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Kutya"</string>
+ <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Sertés"</string>
+ <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Vaddisznó"</string>
+ <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Elefánt"</string>
+ <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Polip"</string>
+ <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Csavart kagyló"</string>
+ <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Rovar"</string>
+ <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Hangya"</string>
+ <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Méh"</string>
+ <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Katicabogár"</string>
+ <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Hal"</string>
+ <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Trópusi hal"</string>
+ <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Gömbhal"</string>
+ <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Teknős"</string>
+ <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Kikelő csibe"</string>
+ <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Kiscsibe"</string>
+ <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Szembe forduló kiscsibe"</string>
+ <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Madár"</string>
+ <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Pingvin"</string>
+ <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Koala"</string>
+ <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Pudli"</string>
+ <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Egypúpú teve"</string>
+ <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Kétpúpú teve"</string>
+ <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Delfin"</string>
+ <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Egérfej"</string>
+ <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Tehénfej"</string>
+ <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Tigrisfej"</string>
+ <string name="spoken_emoji_1F430" msgid="525492897063150160">"Nyúlfej"</string>
+ <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Macskafej"</string>
+ <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Sárkányfej"</string>
+ <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Vízsugarat fújó bálna"</string>
+ <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Lófej"</string>
+ <string name="spoken_emoji_1F435" msgid="59199202683252958">"Majomfej"</string>
+ <string name="spoken_emoji_1F436" msgid="340544719369009828">"Kutyafej"</string>
+ <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Disznófej"</string>
+ <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Békafej"</string>
+ <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Hörcsögfej"</string>
+ <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Farkasfej"</string>
+ <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Medvefej"</string>
+ <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Pandafej"</string>
+ <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Malacorr"</string>
+ <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Mancsnyomok"</string>
+ <!-- no translation found for spoken_emoji_1F43F (84025195766364970) -->
+ <skip />
+ <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Szempár"</string>
+ <!-- no translation found for spoken_emoji_1F441 (5716781405495001412) -->
+ <skip />
+ <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Fül"</string>
+ <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Orr"</string>
+ <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Száj"</string>
+ <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Nyelv"</string>
+ <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Felfelé mutató fehér kéz"</string>
+ <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Lefelé mutató fehér kéz"</string>
+ <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Balra mutató fehér kéz"</string>
+ <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Jobbra mutató fehér kéz"</string>
+ <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Ökölbe szorított kéz"</string>
+ <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Integető kéz"</string>
+ <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Rendben jelet mutató kéz"</string>
+ <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Felfelé mutató hüvelykujj"</string>
+ <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Lefelé mutató hüvelykujj"</string>
+ <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Tapsoló kéz"</string>
+ <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Kinyitott kéz"</string>
+ <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Korona"</string>
+ <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Női kalap"</string>
+ <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Szemüveg"</string>
+ <string name="spoken_emoji_1F454" msgid="348469036193323252">"Nyakkendő"</string>
+ <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Póló"</string>
+ <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Farmer"</string>
+ <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Női ruha"</string>
+ <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimonó"</string>
+ <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikini"</string>
+ <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Blúz"</string>
+ <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Pénztárca"</string>
+ <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Női táska"</string>
+ <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Kézitáska"</string>
+ <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Férficipő"</string>
+ <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Sportcipő"</string>
+ <string name="spoken_emoji_1F460" msgid="305863879170420855">"Magas sarkú cipő"</string>
+ <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Női szandál"</string>
+ <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Női csizma"</string>
+ <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Lábnyomok"</string>
+ <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Felsőtest sziluettje"</string>
+ <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Felsőtestek sziluettje"</string>
+ <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Fiú"</string>
+ <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Lány"</string>
+ <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Férfi"</string>
+ <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Nő"</string>
+ <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Család"</string>
+ <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Férfi és nő kézen fogva"</string>
+ <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Két férfi kézen fogva"</string>
+ <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Két nő kézen fogva"</string>
+ <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Rendőr"</string>
+ <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Nő nyuszifülekkel"</string>
+ <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Menyasszony fátyollal"</string>
+ <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Szőke lány"</string>
+ <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Kínai férfi"</string>
+ <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Turbános férfi"</string>
+ <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Idős férfi"</string>
+ <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Idős nő"</string>
+ <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Kisbaba"</string>
+ <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Építőmunkás"</string>
+ <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Hercegnő"</string>
+ <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Japán ogre"</string>
+ <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Japán manó"</string>
+ <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Kísértet"</string>
+ <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Szárnyas puttó"</string>
+ <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Földönkívüli"</string>
+ <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Idegen szörny"</string>
+ <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Manó"</string>
+ <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Koponya"</string>
+ <string name="spoken_emoji_1F481" msgid="320408708521966893">"Információs pultban ülő személy"</string>
+ <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Gárdista"</string>
+ <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Táncos"</string>
+ <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Rúzs"</string>
+ <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Körömlakk"</string>
+ <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Arcmasszázs"</string>
+ <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Hajvágás"</string>
+ <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Borbélycégér"</string>
+ <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Fecskendő"</string>
+ <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pirula"</string>
+ <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Rúzsos csóknyom"</string>
+ <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Szerelmes levél"</string>
+ <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Gyűrű"</string>
+ <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Drágakő"</string>
+ <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Csók"</string>
+ <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Csokor"</string>
+ <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Szerelmespár szívvel"</string>
+ <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Esküvő"</string>
+ <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Dobogó szív"</string>
+ <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Összetört szív"</string>
+ <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Két szív"</string>
+ <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Csillogó szív"</string>
+ <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Növekvő szív"</string>
+ <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Szív nyíllal"</string>
+ <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Kék szív"</string>
+ <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Zöld szív"</string>
+ <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Sárga szív"</string>
+ <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Lila szív"</string>
+ <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Szív szalaggal"</string>
+ <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Kört alkotó szívek"</string>
+ <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Szív díszítés"</string>
+ <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Gyémánt alakzat ponttal a közepén"</string>
+ <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Villanykörte"</string>
+ <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Harag szimbóluma"</string>
+ <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bomba"</string>
+ <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Alvás szimbóluma"</string>
+ <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Robbanás szimbóluma"</string>
+ <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Fröcskölő izzadtság szimbólum"</string>
+ <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Vízcsepp"</string>
+ <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Száguldás szimbóluma"</string>
+ <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Ürülékkupac"</string>
+ <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Megfeszített bicepsz"</string>
+ <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Szédülés szimbóluma"</string>
+ <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Szövegbuborék"</string>
+ <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Gondolatbuborék"</string>
+ <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Fehér virág"</string>
+ <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Század jele"</string>
+ <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Pénzeszsák"</string>
+ <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Pénzváltás"</string>
+ <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Nagy dollárjel"</string>
+ <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Hitelkártya"</string>
+ <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Bankjegy a jen jelével"</string>
+ <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Bankjegy dollárjellel"</string>
+ <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Bankjegy az euró jelével"</string>
+ <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Bankjegy a font jelével"</string>
+ <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Szárnyas pénz"</string>
+ <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Növekvő tendenciát jelző diagram a jen jelével"</string>
+ <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Ülés"</string>
+ <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Számítógép"</string>
+ <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Aktatáska"</string>
+ <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minidisc"</string>
+ <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Floppy lemez"</string>
+ <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"CD"</string>
+ <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+ <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Irattartó"</string>
+ <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Nyitott mappa"</string>
+ <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Felkunkorodó aljú papír"</string>
+ <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Felfelé néző papír"</string>
+ <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Naptár"</string>
+ <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Letéphető oldalú naptár"</string>
+ <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Kartoték"</string>
+ <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Növekvő tendenciát jelző diagram"</string>
+ <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Csökkenő tendenciát jelző diagram"</string>
+ <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Oszlopdiagram"</string>
+ <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Jegyzettömb"</string>
+ <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Rajzszög"</string>
+ <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Gömb fejű rajzszög"</string>
+ <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Gemkapocs"</string>
+ <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Egyenes vonalzó"</string>
+ <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Háromszögvonalzó"</string>
+ <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Könyvjelzők"</string>
+ <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Főkönyv"</string>
+ <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Jegyzetfüzet"</string>
+ <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Jegyzetfüzet díszes borítóval"</string>
+ <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Csukott könyv"</string>
+ <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Nyitott könyv"</string>
+ <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Zöld könyv"</string>
+ <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Kék könyv"</string>
+ <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Narancssárga könyv"</string>
+ <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Könyvek"</string>
+ <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Névkitűző"</string>
+ <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Papírtekercs"</string>
+ <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Emlékeztető"</string>
+ <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Telefonkagyló"</string>
+ <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Személyhívó"</string>
+ <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Fax"</string>
+ <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Parabolaantenna"</string>
+ <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Köztéri hangosbeszélő"</string>
+ <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Kézi megafon"</string>
+ <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Tálcáról le"</string>
+ <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Tálcára rá"</string>
+ <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Csomag"</string>
+ <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"E-mail jele"</string>
+ <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Beérkező levél borítékja"</string>
+ <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Boríték és felette lefelé mutató nyíl"</string>
+ <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Csukott postaláda leeresztett zászlóval"</string>
+ <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Csukott postaláda felemelt zászlóval"</string>
+ <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Nyitott postaláda felemelt zászlóval"</string>
+ <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Nyitott postaláda leeresztett zászlóval"</string>
+ <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Levélszekrény"</string>
+ <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Postakürt"</string>
+ <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Újság"</string>
+ <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Mobiltelefon"</string>
+ <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Mobiltelefon jobbra mutató nyíllal a bal oldalán"</string>
+ <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Rezgő üzemmód"</string>
+ <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Mobiltelefon ki"</string>
+ <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Mobiltelefon nem használható"</string>
+ <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antenna sávokkal"</string>
+ <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Fényképezőgép"</string>
+ <!-- no translation found for spoken_emoji_1F4F8 (6874216216317936645) -->
+ <skip />
+ <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Videokamera"</string>
+ <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Televízió"</string>
+ <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Rádió"</string>
+ <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Videokazetta"</string>
+ <!-- no translation found for spoken_emoji_1F4FD (992184090920043081) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F4FF (6566102135671766103) -->
+ <skip />
+ <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Összecsavarodott jobbra mutató nyilak"</string>
+ <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Az óramutató járásának megfelelően jobbra és balra mutató, kört formázó nyilak"</string>
+ <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Az óramutató járásának megfelelően jobbra és balra mutató, kört formázó nyilak, felettük egy körben lévő egyessel"</string>
+ <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Az óramutató járásának megfelelően fel és le mutató, kört formázó nyilak"</string>
+ <string name="spoken_emoji_1F504" msgid="708290317843535943">"Az óramutató járásával ellentétesen le és fel mutató, kört formázó nyilak"</string>
+ <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Kis fényerő szimbólum"</string>
+ <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Nagy fényerő szimbólum"</string>
+ <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Hangszóró áthúzva"</string>
+ <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Hangszóró"</string>
+ <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Hangszóró egy hanghullámmal"</string>
+ <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Hangszóró három hanghullámmal"</string>
+ <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Elem"</string>
+ <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Dugós csatlakozó"</string>
+ <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Balra dőlő nagyító"</string>
+ <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Jobbra dőlő nagyító"</string>
+ <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Lakat töltőtollal"</string>
+ <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Bezárt lakat kulccsal"</string>
+ <string name="spoken_emoji_1F511" msgid="262319867774655688">"Kulcs"</string>
+ <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Lakat"</string>
+ <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Nyitott lakat"</string>
+ <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Csengő"</string>
+ <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Csengő áthúzva"</string>
+ <string name="spoken_emoji_1F516" msgid="108097933937925381">"Könyvjelző"</string>
+ <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Link szimbóluma"</string>
+ <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Választógomb"</string>
+ <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Back szó felette balra mutató nyíllal"</string>
+ <string name="spoken_emoji_1F51A" msgid="823966751787338892">"End szó felette balra mutató nyíllal"</string>
+ <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"On szó felkiáltójellel és felette kétágú vízszintes nyíllal"</string>
+ <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Soon szó jobbra mutató nyíllal"</string>
+ <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Top szó felette felfelé mutató nyíllal"</string>
+ <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Tizennyolc éven aluliaknak tilos jel"</string>
+ <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Tízes billentyű"</string>
+ <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Beviteli szimbólum latin nagybetűkhöz"</string>
+ <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Beviteli szimbólum latin kisbetűkhöz"</string>
+ <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Bevitel szimbólum számokhoz"</string>
+ <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Bevitel szimbólum szimbólumokhoz"</string>
+ <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Beviteli szimbólum latin betűkhöz"</string>
+ <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Tűz"</string>
+ <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Elemlámpa"</string>
+ <string name="spoken_emoji_1F527" msgid="134257142354034271">"Csavarkulcs"</string>
+ <string name="spoken_emoji_1F528" msgid="700627429570609375">"Kalapács"</string>
+ <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Csavar és anya"</string>
+ <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Japán kés"</string>
+ <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pisztoly"</string>
+ <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Mikroszkóp"</string>
+ <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Távcső"</string>
+ <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Kristálygömb"</string>
+ <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Hatágú csillag a közepén ponttal"</string>
+ <string name="spoken_emoji_1F530" msgid="3572898444281774023">"A kezdő japán szimbóluma"</string>
+ <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Háromágú szigony embléma"</string>
+ <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Fekete négyzetes gomb"</string>
+ <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Fehér négyzetes gomb"</string>
+ <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Nagy piros kör"</string>
+ <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Nagy kék kör"</string>
+ <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Nagy narancssárga gyémánt"</string>
+ <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Nagy kék gyémánt"</string>
+ <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Kis narancssárga gyémánt"</string>
+ <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Kis kék gyémánt"</string>
+ <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Felfelé mutató piros háromszög"</string>
+ <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Lefelé mutató piros háromszög"</string>
+ <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Felfelé mutató kicsi piros háromszög"</string>
+ <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Lefelé mutató kicsi piros háromszög"</string>
+ <!-- no translation found for spoken_emoji_1F549 (4488493812823912137) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54A (6329445861053369293) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54B (1632185618342057203) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54C (2444758230008443504) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54D (8871149889908118955) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F54E (2602602033588655819) -->
+ <skip />
+ <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Óra számlapja egy órát mutat"</string>
+ <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Óra számlapja két órát mutat"</string>
+ <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Óra számlapja három órát mutat"</string>
+ <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Óra számlapja négy órát mutat"</string>
+ <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Óra számlapja öt órát mutat"</string>
+ <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Óra számlapja hat órát mutat"</string>
+ <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Óra számlapja hét órát mutat"</string>
+ <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Óra számlapja nyolc órát mutat"</string>
+ <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Óra számlapja kilenc órát mutat"</string>
+ <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Óra számlapja tíz órát mutat"</string>
+ <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Óra számlapja tizenegy órát mutat"</string>
+ <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Óra számlapja tizenkét órát mutat"</string>
+ <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Óra számlapja fél kettőt mutat"</string>
+ <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Óra számlapja fél hármat mutat"</string>
+ <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Óra számlapja fél négyet mutat"</string>
+ <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Óra számlapja fél ötöt mutat"</string>
+ <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Óra számlapja fél hatot mutat"</string>
+ <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Óra számlapja fél hetet mutat"</string>
+ <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Óra számlapja fél nyolcat mutat"</string>
+ <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Óra számlapja fél kilencet mutat"</string>
+ <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Óra számlapja fél tízet mutat"</string>
+ <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Óra számlapja fél tizenegyet mutat"</string>
+ <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Óra számlapja fél tizenkettőt mutat"</string>
+ <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Óra számlapja fél egyet mutat"</string>
+ <!-- no translation found for spoken_emoji_1F56F (2425394083258103670) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F570 (2611444774363424788) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F573 (1039753319384915644) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F574 (1370973157808858727) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F575 (3393287560881832534) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F576 (6510040886626337527) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F577 (1745605672232546738) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F578 (5843261607004481128) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F579 (356353388497335187) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F587 (1529578701645787678) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58A (5535685878758638056) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58B (8383182102775796958) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58C (3645908884921776727) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F58D (8498569396909368249) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F590 (1764003432828568259) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F595 (2331418391124951688) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F596 (1326418921526428839) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5A5 (5652785146334053695) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5A8 (1431495880490623659) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5B1 (5175363198176970281) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5B2 (638466571223781802) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5BC (2406817930103032256) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5C2 (5722791826015378721) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5C3 (2361411623100608566) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5C4 (5699005642361736394) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5D1 (8837990226577655561) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5D2 (875563245704330618) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5D3 (5759637997516385074) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5DC (2134509111665528807) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5DD (2537536524658220506) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5DE (369717954301912562) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5E1 (4756313645316161687) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5E3 (725415936980269374) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5EF (6775383222346053007) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5F3 (5365297662012404100) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F5FA (4806783543043181633) -->
+ <skip />
+ <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Fudzsi hegy"</string>
+ <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tokiói torony"</string>
+ <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Szabadság-szobor"</string>
+ <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Japán körvonala"</string>
+ <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moai"</string>
+ <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Vigyorgó arc"</string>
+ <string name="spoken_emoji_1F601" msgid="746026523967444503">"Vigyorgó arc mosolygó szemmel"</string>
+ <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Örömében síró arc"</string>
+ <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Tátott szájjal nevető arc"</string>
+ <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Tátott szájjal nevető, mosolygó szemű arc"</string>
+ <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Tátott szájjal nevető, izzadó arc"</string>
+ <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Tátott szájjal nevető, szorosan becsukott szemű arc"</string>
+ <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Mosolygó arc glóriával"</string>
+ <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Mosolygó arc ördögszarvakkal"</string>
+ <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Kacsintó arc"</string>
+ <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Mosolygó arc mosolygó szemmel"</string>
+ <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Szája szélét nyalogató arc"</string>
+ <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Megkönnyebbült arc"</string>
+ <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Mosolygó arc szív alakú szemmel"</string>
+ <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Mosolygó arc napszemüvegben"</string>
+ <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Csücsörítve mosolygó arc"</string>
+ <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Semleges arc"</string>
+ <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Kifejezéstelen arc"</string>
+ <string name="spoken_emoji_1F612" msgid="985081329745137998">"Unott arc"</string>
+ <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Hidegen verejtékező arc"</string>
+ <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Tűnődő arc"</string>
+ <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Zavarodott arc"</string>
+ <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Megdöbbent arc"</string>
+ <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Csókot adó arc"</string>
+ <string name="spoken_emoji_1F618" msgid="408207170572303753">"Csókot küldő arc"</string>
+ <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Csókot adó arc mosolygó szemmel"</string>
+ <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Csókot adó arc csukott szemmel"</string>
+ <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Arc kinyújtott nyelvvel"</string>
+ <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Arc kinyújtott nyelvvel és kacsintó szemmel"</string>
+ <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Arc kinyújtott nyelvvel és szorosan becsukott szemmel"</string>
+ <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Csalódott arc"</string>
+ <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Aggódó arc"</string>
+ <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Mérges arc"</string>
+ <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Duzzogó arc"</string>
+ <string name="spoken_emoji_1F622" msgid="29291014645931822">"Síró arc"</string>
+ <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Állhatatos arc"</string>
+ <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Diadalmas arc"</string>
+ <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Csalódott, de megkönnyebbült arc"</string>
+ <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Tátott szájjal meglepődő arc"</string>
+ <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Szenvedő arc"</string>
+ <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Félelemmel teli arc"</string>
+ <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Elcsigázott arc"</string>
+ <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Álmos arc"</string>
+ <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Fáradt arc"</string>
+ <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Grimaszoló arc"</string>
+ <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Zokogó arc"</string>
+ <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Arc tátott szájjal"</string>
+ <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Csendes arc"</string>
+ <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Tátott szájú, izzadó arc"</string>
+ <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Félelmében sikoltó arc"</string>
+ <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Elképedt arc"</string>
+ <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Kipirult arc"</string>
+ <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Alvó arc"</string>
+ <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Szédülő arc"</string>
+ <string name="spoken_emoji_1F636" msgid="947000211822375683">"Száj nélküli arc"</string>
+ <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Arc orvosi maszkkal"</string>
+ <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Vigyorgó macskafej mosolygó szemmel"</string>
+ <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Örömében síró macskafej"</string>
+ <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Tátott szájjal nevető macskafej"</string>
+ <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Mosolygó macskafej szív alakú szemmel"</string>
+ <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Macskafej fanyar mosollyal"</string>
+ <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Csókot adó macskafej csukott szemmel"</string>
+ <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Duzzogó macskafej"</string>
+ <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Síró macskafej"</string>
+ <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Elcsigázott macskafej"</string>
+ <!-- no translation found for spoken_emoji_1F641 (2580807588556383139) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F642 (1150197386159721331) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F643 (7631520433919530552) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F644 (446284817942609022) -->
+ <skip />
+ <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Nem jó jelet mutató arc"</string>
+ <string name="spoken_emoji_1F646" msgid="6734425134415138134">"OK jelet mutató arc"</string>
+ <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Mélyen meghajló ember"</string>
+ <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Nem látok majom"</string>
+ <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Nem hallok majom"</string>
+ <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Nem beszélek majom"</string>
+ <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Boldog ember, egyik kezét felemelve"</string>
+ <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Égnek emelt kézzel örülő személy"</string>
+ <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Meggörnyedt ember"</string>
+ <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Duzzogó arcú ember"</string>
+ <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Összekulcsolt kezű ember"</string>
+ <string name="spoken_emoji_1F680" msgid="513263736012689059">"Űrrakéta"</string>
+ <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helikopter"</string>
+ <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Gőzmozdony"</string>
+ <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Vasúti kocsi"</string>
+ <string name="spoken_emoji_1F684" msgid="346396777356203608">"Gyorsvasút"</string>
+ <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Gyorsvasút lekerekített orral"</string>
+ <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Vonat"</string>
+ <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metró"</string>
+ <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Hév"</string>
+ <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Állomás"</string>
+ <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Villamos"</string>
+ <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Villamoskocsi"</string>
+ <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Busz"</string>
+ <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Érkező busz"</string>
+ <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Trolibusz"</string>
+ <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Buszmegálló"</string>
+ <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Minibusz"</string>
+ <string name="spoken_emoji_1F691" msgid="999173032408730501">"Mentőautó"</string>
+ <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Tűzoltóautó"</string>
+ <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Rendőrautó"</string>
+ <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Érkező rendőrautó"</string>
+ <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taxi"</string>
+ <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Érkező taxi"</string>
+ <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Autó"</string>
+ <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Érkező autó"</string>
+ <string name="spoken_emoji_1F699" msgid="630317052666590607">"Utcai terepjáró"</string>
+ <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Teherautó"</string>
+ <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Kamion"</string>
+ <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Traktor"</string>
+ <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Egysínű vasút"</string>
+ <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Hegyi vasút"</string>
+ <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Függővasút"</string>
+ <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Hegyi kábelvasút"</string>
+ <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Drótkötélpályás felvonó"</string>
+ <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Hajó"</string>
+ <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Evezős csónak"</string>
+ <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Motorcsónak"</string>
+ <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Vízszintes jelzőlámpa"</string>
+ <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Függőleges jelzőlámpa"</string>
+ <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Útépítés jelző"</string>
+ <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Rendőrautó forgó fényjelzése"</string>
+ <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Háromszög alakú zászló rúdon"</string>
+ <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Ajtó"</string>
+ <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Belépni tilos jelzés"</string>
+ <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Dohányzás jel"</string>
+ <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Dohányozni tilos jel"</string>
+ <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Dobja ki a szemetet jel"</string>
+ <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Ne szemeteljen jel"</string>
+ <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Ivóvíz szimbólum"</string>
+ <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Nem ivóvíz szimbólum"</string>
+ <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Kerékpár"</string>
+ <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Kerékpárral behajtani tilos"</string>
+ <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Kerékpáros"</string>
+ <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Hegyikerékpáros"</string>
+ <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Gyalogos"</string>
+ <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Gyalog bemenni tilos"</string>
+ <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Átkelő gyermekekkel"</string>
+ <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Férfiak jelzés"</string>
+ <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Nők jelzés"</string>
+ <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Mosdó"</string>
+ <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Pelenkázó jelzés"</string>
+ <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"WC"</string>
+ <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Toalett"</string>
+ <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Zuhanyzó"</string>
+ <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Fürdő"</string>
+ <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Fürdőkád"</string>
+ <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Útlevélvizsgálat"</string>
+ <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Vám"</string>
+ <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Poggyászkiadó terminál"</string>
+ <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Elveszett poggyász"</string>
+ <!-- no translation found for spoken_emoji_1F6CB (3573872215992460856) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CC (5533098630848925915) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CD (4591419999684883647) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CE (3747424887764059629) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6CF (4913111315645834484) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6D0 (7538197710400229967) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E0 (3263282970310123206) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E1 (6426910766335807918) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E2 (5167605828052365314) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E3 (1107731664336606313) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E4 (5902467073917590761) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E5 (5188878074701467086) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6E9 (5852950271931619238) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6EB (2733806707250741222) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6EC (4869529552294301253) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6F0 (3448012994947964984) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F6F3 (1127894976097893258) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F910 (4360725090163247960) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F911 (8595715714642200771) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F912 (6361337370946123054) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F913 (3175822147540114526) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F914 (3784454242803834936) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F915 (8277232429785015709) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F916 (4717142652070467513) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F917 (5434814678071084726) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F918 (6065030046434546286) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F980 (7396183110343909685) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F981 (1201691097417167784) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F982 (7295087763708065402) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F983 (9086413570044829984) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F984 (5757150507762082864) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F9C0 (3346738126264740148) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0023_20E3 (3693649188523505503) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_002A_20E3 (6500437684406442358) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0030_20E3 (6312420508970951699) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0031_20E3 (5101790681679370329) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0032_20E3 (6852105251673250734) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0033_20E3 (6436737625517381721) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0034_20E3 (7652958059237626893) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0035_20E3 (1222504383755215423) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0036_20E3 (7251599202525740371) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0037_20E3 (7717155024038170161) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0038_20E3 (744556233370117245) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_0039_20E3 (1891172571916106023) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1E8 (515584542061392145) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1E9 (9021988927513031086) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EA (4856101611523027311) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EB (3716145572492094038) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EC (7286661601747455727) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1EE (94989132936786231) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F1 (182374112533705554) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F2 (8083744008211394946) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F4 (1162797094210816783) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F6 (8423968169207301745) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F7 (6876638422035482357) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F8 (8277196879892990334) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1F9 (2248522124836544558) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FA (4458840480641529325) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FC (1163927173985102777) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FD (3030463315371570615) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E6_1F1FF (612355136879823825) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1E6 (8760838318301758538) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1E7 (3157629488105877061) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1E9 (3576256753416957572) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EA (664083045789831960) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EB (1288425089161930952) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EC (7159669370784906474) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1ED (6171060568325681800) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EE (8825724034337572789) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1EF (481381108368354037) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F1 (323880581960666092) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F2 (6865529687293471865) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F3 (6196184089269330603) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F4 (7901700697723663375) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F6 (3206988419974375148) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F7 (3483402348221577606) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F8 (3399891901314769071) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1F9 (8985883748925470425) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FB (3357087874695825993) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FC (2010150990697392924) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FE (7660069185149104762) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E7_1F1FF (4808586235664381640) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1E6 (1994799795544707087) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1E8 (4545193589020675153) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1E9 (971846413301682398) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1EB (7040500840320409927) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1EC (7814411108372534362) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1ED (7525661715353339833) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1EE (918386022730555752) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F0 (1272608483604229355) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F1 (4368512465692540121) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F2 (1029570029642994892) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F3 (1409448857910840128) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F4 (6875493644298026833) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F5 (2538762550371590224) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1F7 (888554264338218550) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FA (4443590407200355667) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FB (5581596688027484825) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FC (7291024802305602214) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FD (2788698554656649228) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FE (5037633794290940318) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E8_1F1FF (5384200881950442912) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1EA (4047812762841623779) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1EC (3569858113686878222) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1EF (5200510107957246395) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1F0 (8230065040498090250) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1F2 (6971088854496559333) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1F4 (2684281180913271831) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1E9_1F1FF (5134944828411359548) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1E6 (5992703503107448385) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1E8 (7604769613933532639) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1EA (780881058311953116) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1EC (5379955220214737541) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1ED (608191363783136124) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1F7 (1974034165386559979) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1F8 (7667964716717428380) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1F9 (4028236645746627833) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EA_1F1FA (2605433302354957477) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1EE (825447084506872225) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1EF (1029994540873767904) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F0 (2992979756365410511) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F2 (1986035899283103062) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F4 (2441016703335601117) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EB_1F1F7 (6052493581307010327) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1E6 (8950853954004506523) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1E7 (8888357158195515349) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1E9 (3463286702486956748) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EA (1180536780790586881) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EB (1203001730316543314) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EC (1840977808701617077) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1ED (8783297421754572238) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1EE (2567172982673015319) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F1 (8178317151097107486) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F2 (8595547572836079090) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F3 (3646326386653741855) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F5 (6864411408511905871) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F6 (2059115105795502868) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F7 (6459258808903505755) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F8 (5458754397575470944) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1F9 (1467915615110741560) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1FA (4393335139566648919) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1FC (3425188247186220041) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EC_1F1FE (1021690400460955309) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F0 (3761740442568650190) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F2 (6910358977247451757) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F3 (1646439132096214446) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F7 (1052046916656026391) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1F9 (8078385390509081446) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1ED_1F1FA (8804528562628572718) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1E8 (3140919483825058219) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1E9 (5502581798727777828) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1EA (644825647040215471) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F1 (5743874630545163729) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F2 (3120136719636059223) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F3 (7645444982385343194) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F4 (9194565409945825135) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F6 (8988731584319817673) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F7 (2725630029704415631) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F8 (1010746786020461229) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EE_1F1F9 (9197939415727389837) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1EA (2768571528360031663) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1F2 (5221399784104523954) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1F4 (5417778604376647557) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1EF_1F1F5 (6507273654908139469) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1EA (21237090866742866) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1EC (8276011655824240009) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1ED (6083653169314926215) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1EE (9065926492362391494) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F2 (3247483394872878766) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F3 (5367548209741205839) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F5 (8936494847635883781) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1F7 (6083499745947821288) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1FC (1379041347924516759) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1FE (4109777537443572630) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F0_1F1FF (552222434607517957) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1E6 (5166202354177379139) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1E7 (5664910004482751646) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1E8 (4030901907323824445) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1EE (1173785145388735876) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F0 (3577045271636841729) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F7 (7993304871488957893) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F8 (5224840012819747543) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1F9 (3594812865734584207) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1FA (224221840159454205) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1FB (7718987237653945359) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F1_1F1FE (5998022588266933168) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1E6 (8965537225940059216) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1E8 (5827062380829465964) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1E9 (1226461313141287009) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1EA (559788800834584573) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1EB (5222394276026013118) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1EC (7183384701516848699) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1ED (6898522028833048325) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F0 (7068152815895976960) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F1 (7611046424376988616) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F2 (491461913101284240) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F3 (1450454181585256539) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F4 (3352572139711280528) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F5 (7536142087380383112) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F6 (5424070233210033210) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F7 (108173332528207905) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F8 (4922582142276070473) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1F9 (3215356274998633531) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FA (7064984448662302120) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FB (7349657291755821742) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FC (2970112458704297219) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FD (6249447018233900361) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FE (2415463066267602417) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F2_1F1FF (5374300224943425292) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1E6 (7995033472926590061) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1E8 (6673558559311734824) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EA (5248874974108203948) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EB (8586671186548769011) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EC (3610271061141196804) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1EE (3793576318302879471) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F1 (7394150679646822106) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F4 (4823752697520630443) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F5 (8143013034442974213) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1F7 (2718588476956930593) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1FA (2136206841853719289) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F3_1F1FF (7114679379862776721) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F4_1F1F2 (1366056698822189642) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1E6 (2318048598212415394) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1EA (3843366473938653876) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1EB (5842604724881232116) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1EC (1527509030357350666) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1ED (4519745708610996392) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F0 (6461277576429215252) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F1 (8076361813157658785) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F2 (2895871984922747795) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F3 (3351998070564812928) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F7 (2273664192514768865) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F8 (4184730889323208578) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1F9 (6088372177025496872) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1FC (6503480614531765009) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F5_1F1FE (8948077259790298897) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F6_1F1E6 (5941022501487103264) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1EA (6520393107511408733) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1F4 (24771949751001440) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1F8 (3958542649861771783) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1FA (1079726084663529719) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F7_1F1FC (3705031663938652819) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E6 (2776179858340260230) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E7 (3665472085378450456) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E8 (4466400506433158307) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1E9 (5614788248607521243) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EA (2665982185283861392) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EC (1054034328208566506) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1ED (4263061939910522547) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EE (6565744105871887098) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1EF (3016523221609614043) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F0 (5390016769601791982) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F1 (6403850165793367854) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F2 (4310711409277111575) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F3 (6489885135970927076) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F4 (5341079828952201668) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F7 (8817875467979840211) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F8 (2660263148212045846) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1F9 (8238122890022856070) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FB (4615906903576645230) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FD (4404781163148659815) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FE (7179176431724187154) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F8_1F1FF (8456502038439909076) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1E6 (7462600413724750923) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1E8 (8714687302692115701) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1E9 (4271932459960645451) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1EB (8824845043239747091) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1EC (6378688671192754868) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1ED (3342706257317087047) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1EF (1902800890327368738) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F0 (5328199482828913429) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F1 (8753850591122992884) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F2 (5491037548857189992) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F3 (7278463413655866267) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F4 (7624316225889181844) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F7 (5932331866489640094) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1F9 (4042249888728442471) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1FB (4705386325884538832) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1FC (9106106156487112003) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1F9_1F1FF (6594567669471176195) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1E6 (7516283481055191487) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1EC (7713151466830788434) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1F2 (169503347987231777) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1F8 (3794069376561841694) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1FE (7768717385050492537) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FA_1F1FF (1957036711159158590) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1E6 (6686626035855100794) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1E8 (958901562721846738) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1EA (8171514854370897858) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1EC (7825072244650491600) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1EE (8177320330941963456) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1F3 (6211275163002022414) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FB_1F1FA (7638199094441690866) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FC_1F1EB (2750545602487865333) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FC_1F1F8 (1717055707936794276) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FD_1F1F0 (8924460310127605012) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FE_1F1EA (5020385658435288646) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FE_1F1F9 (5627032701159894458) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FF_1F1E6 (3518155724469542909) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FF_1F1F2 (1316086892525163001) -->
+ <skip />
+ <!-- no translation found for spoken_emoji_1F1FF_1F1FC (7229025296887296741) -->
+ <skip />
+</resources>
diff --git a/java/res/values-hu-rZZ/strings-letter-descriptions.xml b/java/res/values-hu-rZZ/strings-letter-descriptions.xml
new file mode 100644
index 0000000..9087c6c
--- /dev/null
+++ b/java/res/values-hu-rZZ/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+ -->
+
+<!--
+ These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+ These symbols (spoken_symbol_*) are also unsupported by TTS.
+ TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Sorszámnévjelölő (nőnemű)"</string>
+ <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"„mű” jel"</string>
+ <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Sorszámnévjelölő (hímnemű)"</string>
+ <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Scharfes S"</string>
+ <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, tompa ékezettel"</string>
+ <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, éles ékezettel"</string>
+ <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, hullámvonallal"</string>
+ <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, trémával"</string>
+ <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, felette körrel"</string>
+ <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ikerbetű"</string>
+ <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cédille-jel"</string>
+ <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, tompa ékezettel"</string>
+ <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, éles ékezettel"</string>
+ <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, trémával"</string>
+ <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, tompa ékezettel"</string>
+ <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, éles ékezettel"</string>
+ <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, trémával"</string>
+ <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth betű"</string>
+ <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, hullámvonallal"</string>
+ <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, tompa ékezettel"</string>
+ <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, éles ékezettel"</string>
+ <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, hullámvonallal"</string>
+ <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, trémával"</string>
+ <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, áthúzva"</string>
+ <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, tompa ékezettel"</string>
+ <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, éles ékezettel"</string>
+ <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, trémával"</string>
+ <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, éles ékezettel"</string>
+ <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn betű"</string>
+ <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, trémával"</string>
+ <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, hosszúsági jellel"</string>
+ <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, rövidségi jellel"</string>
+ <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, horoggal"</string>
+ <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, éles ékezettel"</string>
+ <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, felette ponttal"</string>
+ <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, hacsekkel"</string>
+ <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, hacsekkel"</string>
+ <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, áthúzva"</string>
+ <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, hosszúsági jellel"</string>
+ <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, rövidségi jellel"</string>
+ <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, felette ponttal"</string>
+ <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, horoggal"</string>
+ <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, hacsekkel"</string>
+ <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, rövidségi jellel"</string>
+ <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, felette ponttal"</string>
+ <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cédille-jel"</string>
+ <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, áthúzva"</string>
+ <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, hullámvonallal"</string>
+ <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, hosszúsági jellel"</string>
+ <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, rövidségi jellel"</string>
+ <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, horoggal"</string>
+ <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Pont nélküli I"</string>
+ <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ikerbetű"</string>
+ <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cédille-jel"</string>
+ <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra betű"</string>
+ <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, éles ékezettel"</string>
+ <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cédille-jel"</string>
+ <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, hacsekkel"</string>
+ <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, középen ponttal"</string>
+ <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, áthúzva"</string>
+ <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, éles ékezettel"</string>
+ <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cédille-jel"</string>
+ <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, hacsekkel"</string>
+ <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, előtte aposztróffal"</string>
+ <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng betű"</string>
+ <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, hosszúsági jellel"</string>
+ <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, rövidségi jellel"</string>
+ <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, dupla éles ékezettel"</string>
+ <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ikerbetű"</string>
+ <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, éles ékezettel"</string>
+ <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cédille-jel"</string>
+ <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, hacsekkel"</string>
+ <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, éles ékezettel"</string>
+ <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cédille-jel"</string>
+ <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, hacsekkel"</string>
+ <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cédille-jel"</string>
+ <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, hacsekkel"</string>
+ <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, áthúzva"</string>
+ <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, hullámvonallal"</string>
+ <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, hosszúsági jellel"</string>
+ <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, rövidségi jellel"</string>
+ <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, felette körrel"</string>
+ <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, dupla éles ékezettel"</string>
+ <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, horoggal"</string>
+ <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, kúpos ékezettel"</string>
+ <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, éles ékezettel"</string>
+ <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, felette ponttal"</string>
+ <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, hacsekkel"</string>
+ <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Hosszú S"</string>
+ <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, szarvval"</string>
+ <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, szarvval"</string>
+ <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, alatta vesszővel"</string>
+ <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, alatta vesszővel"</string>
+ <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa betű"</string>
+ <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, felette kampóval"</string>
+ <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, kúpos ékezettel és éles ékezettel"</string>
+ <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, kúpos ékezettel és tompa ékezettel"</string>
+ <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, kúpos ékezettel és felette kampóval"</string>
+ <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, kúpos ékezettel és hullámvonallal"</string>
+ <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, kúpos ékezettel és alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, rövidségi jellel és éles ékezettel"</string>
+ <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, rövidségi jellel és tompa ékezettel"</string>
+ <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, rövidségi jellel és felette kampóval"</string>
+ <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, rövidségi jellel és hullámvonallal"</string>
+ <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, rövidségi jellel és alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, felette kampóval"</string>
+ <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, hullámvonallal"</string>
+ <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, kúpos ékezettel és éles ékezettel"</string>
+ <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, kúpos ékezettel és tompa ékezettel"</string>
+ <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, kúpos ékezettel és felette kampóval"</string>
+ <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, kúpos ékezettel és hullámvonallal"</string>
+ <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, kúpos ékezettel és alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, felette kampóval"</string>
+ <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, alatta ponttal"</string>
+ <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, alatta ponttal"</string>
+ <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, felette kampóval"</string>
+ <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, kúpos ékezettel és éles ékezettel"</string>
+ <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, kúpos ékezettel és tompa ékezettel"</string>
+ <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, kúpos ékezettel és felette kampóval"</string>
+ <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, kúpos ékezettel és hullámvonallal"</string>
+ <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, kúpos ékezettel és alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, szarvval és éles ékezettel"</string>
+ <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, szarvval és tompa ékezettel"</string>
+ <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, szarvval és felette kampóval"</string>
+ <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, szarvval és hullámvonallal"</string>
+ <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, szarvval és alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, felette kampóval"</string>
+ <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, szarvval és éles ékezettel"</string>
+ <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, szarvval és tompa ékezettel"</string>
+ <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, szarvval és felette kampóval"</string>
+ <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, szarvval és hullámvonallal"</string>
+ <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, szarvval és alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, tompa ékezettel"</string>
+ <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, alatta ponttal"</string>
+ <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, felette kampóval"</string>
+ <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, hullámvonallal"</string>
+ <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Fordított felkiáltójel"</string>
+ <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Balra mutató francia csúcsos dupla idézőjel"</string>
+ <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Középső pont"</string>
+ <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Felső indexszám egy"</string>
+ <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Jobbra mutató francia csúcsos dupla idézőjel"</string>
+ <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Fordított kérdőjel"</string>
+ <string name="spoken_symbol_2018" msgid="4886476295598930225">"Bal angol szimpla idézőjel"</string>
+ <string name="spoken_symbol_2019" msgid="8892530161598134083">"Jobb angol szimpla idézőjel"</string>
+ <string name="spoken_symbol_201A" msgid="2072987157683446644">"Bal német szimpla idézőjel"</string>
+ <string name="spoken_symbol_201C" msgid="4588048378803665427">"Bal dupla idézőjel"</string>
+ <string name="spoken_symbol_201D" msgid="1642776849495925895">"Jobb dupla idézőjel"</string>
+ <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kereszt"</string>
+ <string name="spoken_symbol_2021" msgid="5081396468559426475">"Kettős kereszt"</string>
+ <string name="spoken_symbol_2030" msgid="9068837172419431755">"Ezrelékjel"</string>
+ <string name="spoken_symbol_2032" msgid="3014506329156664396">"Percjel"</string>
+ <string name="spoken_symbol_2033" msgid="1251022699713475088">"Másodpercjel"</string>
+ <string name="spoken_symbol_2039" msgid="6989616457213775957">"Balra mutató francia csúcsos szimpla idézőjel"</string>
+ <string name="spoken_symbol_203A" msgid="31245095449823701">"Jobbra mutató francia csúcsos szimpla idézőjel"</string>
+ <string name="spoken_symbol_2074" msgid="2116717717093306894">"Felső indexszám négy"</string>
+ <string name="spoken_symbol_207F" msgid="1706731172134246659">"Felső index latin kisbetűs n"</string>
+ <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso jel"</string>
+ <string name="spoken_symbol_2105" msgid="7289404939366976829">"Százalék"</string>
+ <string name="spoken_symbol_2192" msgid="827804523596125414">"Jobbra mutató nyíl"</string>
+ <string name="spoken_symbol_2193" msgid="2659541693445985717">"Lefelé mutató nyíl"</string>
+ <string name="spoken_symbol_2205" msgid="4457188084269117343">"Üres halmaz"</string>
+ <string name="spoken_symbol_2206" msgid="4856786565708380687">"Növekmény"</string>
+ <string name="spoken_symbol_2264" msgid="5092061257745123554">"Egyenlő vagy kisebb mint"</string>
+ <string name="spoken_symbol_2265" msgid="1907966479878036357">"Egyenlő vagy nagyobb mint"</string>
+ <string name="spoken_symbol_2605" msgid="5202920479405857753">"Fekete csillag"</string>
+</resources>
diff --git a/java/res/values-hu-rZZ/strings-talkback-descriptions.xml b/java/res/values-hu-rZZ/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..f0320b8
--- /dev/null
+++ b/java/res/values-hu-rZZ/strings-talkback-descriptions.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2015, 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.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="spoken_use_headphones" msgid="4313642710742229868">"Csatlakoztasson egy headsetet, ha hallani szeretné a jelszót felolvasva."</string>
+ <string name="spoken_current_text_is" msgid="4240549866156675799">"A jelenlegi szöveg: %s"</string>
+ <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nincs szöveg megadva"</string>
+ <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> billentyű – <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> szóra javítja a következőt: <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+ <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> billentyű automatikus javítást végez"</string>
+ <string name="spoken_empty_suggestion" msgid="4250215619373459752">"Nincs javaslat"</string>
+ <string name="spoken_description_unknown" msgid="5139930082759824442">"Ismeretlen karakter"</string>
+ <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+ <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"További szimbólumok"</string>
+ <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+ <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Szimbólumok"</string>
+ <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+ <string name="spoken_description_delete" msgid="3878902286264983302">"Törlés"</string>
+ <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Szimbólumok"</string>
+ <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Betűk"</string>
+ <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Számok"</string>
+ <string name="spoken_description_settings" msgid="7281251004003143204">"Beállítások"</string>
+ <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+ <string name="spoken_description_space" msgid="5908716896642059145">"Szóköz"</string>
+ <string name="spoken_description_mic" msgid="6153138783813452464">"Hangbevitel"</string>
+ <string name="spoken_description_emoji" msgid="7990051553008088470">"Hangulatjel"</string>
+ <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+ <string name="spoken_description_search" msgid="5099937658231911288">"Keresés"</string>
+ <string name="spoken_description_dot" msgid="5644176501632325560">"Pont"</string>
+ <string name="spoken_description_language_switch" msgid="6818666779313544553">"Nyelvváltás"</string>
+ <string name="spoken_description_action_next" msgid="431761808119616962">"Következő"</string>
+ <string name="spoken_description_action_previous" msgid="2919072174697865110">"Előző"</string>
+ <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift bekapcsolva"</string>
+ <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock bekapcsolva"</string>
+ <string name="spoken_description_mode_symbol" msgid="111186851131446691">"„Szimbólumok” mód"</string>
+ <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"További szimbólumok mód"</string>
+ <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"„Betű” mód"</string>
+ <string name="spoken_description_mode_phone" msgid="2061220553756692903">"„Telefon” mód"</string>
+ <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"„Telefonos szimbólumok” mód"</string>
+ <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Billentyűzet elrejtve"</string>
+ <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> billentyűzet megjelenítve"</string>
+ <string name="keyboard_mode_date" msgid="6597407244976713364">"dátum"</string>
+ <string name="keyboard_mode_date_time" msgid="3642804408726668808">"dátum és idő"</string>
+ <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+ <string name="keyboard_mode_im" msgid="3812086215529493501">"üzenetváltás"</string>
+ <string name="keyboard_mode_number" msgid="5395042245837996809">"szám"</string>
+ <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+ <string name="keyboard_mode_text" msgid="9138789594969187494">"szöveg"</string>
+ <string name="keyboard_mode_time" msgid="8558297845514402675">"idő"</string>
+ <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+ <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Legutóbbiak"</string>
+ <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Emberek"</string>
+ <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objektumok"</string>
+ <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Természet"</string>
+ <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Helyek"</string>
+ <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Szimbólumok"</string>
+ <string name="spoken_descrption_emoji_category_flags" msgid="5971573825866381472">"Zászlók"</string>
+ <string name="spoken_descrption_emoji_category_eight_smiley_people" msgid="5682663819532433464">"Hangulatjelek és emberek"</string>
+ <string name="spoken_descrption_emoji_category_eight_animals_nature" msgid="5844950234883716704">"Állatvilág és természet"</string>
+ <string name="spoken_descrption_emoji_category_eight_food_drink" msgid="6196944764485349650">"Étel-ital"</string>
+ <string name="spoken_descrption_emoji_category_eight_travel_places" msgid="3834085499381434611">"Utazás és helyek"</string>
+ <string name="spoken_descrption_emoji_category_eight_activity" msgid="4795281669042975993">"Tevékenység"</string>
+ <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Hangulatjelek"</string>
+ <string name="spoken_description_upper_case" msgid="4904835255229433916">"Nagy <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+ <string name="spoken_letter_0049" msgid="4743162182646977944">"Nagy I"</string>
+ <string name="spoken_letter_0130" msgid="4766619646231612274">"Nagy I, felette ponttal"</string>
+ <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ismeretlen szimbólum"</string>
+ <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Ismeretlen hangulatjel"</string>
+ <string name="spoken_emoticon_3A_2D_21_20" msgid="2410905667389534573">"Unott arc"</string>
+ <string name="spoken_emoticon_3A_2D_24_20" msgid="2481260475945560438">"Zavarban lévő arc"</string>
+ <string name="spoken_emoticon_42_2D_29_20" msgid="1063205250387128068">"Napszemüveges arc"</string>
+ <string name="spoken_emoticon_3A_4F_20" msgid="532695091593447238">"Meglepődött arc"</string>
+ <string name="spoken_emoticon_3A_2D_2A_20" msgid="5612342617244114291">"Csókot adó arc"</string>
+ <string name="spoken_emoticon_3A_2D_5B_20" msgid="2223507987759905920">"Homlokráncoló arc"</string>
+ <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Az alternatív karakterek elérhetők"</string>
+ <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Az alternatív karakterek billentyűzete bezárva"</string>
+ <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Az alternatív javaslatok elérhetők"</string>
+ <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Az alternatív javaslatok panel bezárva"</string>
+</resources>
diff --git a/java/res/values-hu-rZZ/strings.xml b/java/res/values-hu-rZZ/strings.xml
new file mode 100644
index 0000000..a24caa4
--- /dev/null
+++ b/java/res/values-hu-rZZ/strings.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+**
+** Copyright 2008, 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.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="english_ime_input_options" msgid="3909945612939668554">"Beviteli beállítások"</string>
+ <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Névjegyek keresése"</string>
+ <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"A helyesírás-ellenőrző használja a névjegyek bejegyzéseit"</string>
+ <string name="vibrate_on_keypress" msgid="5258079494276955460">"Rezgés gombnyomásra"</string>
+ <string name="sound_on_keypress" msgid="6093592297198243644">"Hangjelzés gombnyomásra"</string>
+ <string name="popup_on_keypress" msgid="123894815723512944">"Nagyobb billentyű gombnyomásra"</string>
+ <string name="settings_screen_preferences" msgid="2696713156722014624">"Beállítások"</string>
+ <string name="settings_screen_accounts" msgid="2786418968536696670">"Fiókok és adatvédelem"</string>
+ <string name="settings_screen_appearance" msgid="7358046399111611615">"Megjelenés és elrendezés"</string>
+ <string name="settings_screen_gesture" msgid="8826372746901183556">"Kézmozdulatokkal történő gépelés"</string>
+ <string name="settings_screen_correction" msgid="1616818407747682955">"Szövegjavítás"</string>
+ <string name="settings_screen_advanced" msgid="7472408607625972994">"Speciális"</string>
+ <string name="settings_screen_theme" msgid="2137262503543943871">"Téma"</string>
+ <string name="enable_split_keyboard" msgid="4177264923999493614">"Megosztott billentyűzet bekapcsolása"</string>
+ <string name="cloud_sync_title" msgid="8579271074443847055">"Google-billentyűzet szinkronizálása"</string>
+ <string name="cloud_sync_summary" msgid="7684887161145650857">"A szinkronizálás be van kapcsolva"</string>
+ <string name="cloud_sync_summary_disabled" msgid="4553338970382825796">"Szinkronizálja személyes szótárát eszközei között"</string>
+ <string name="sync_now_title" msgid="3088838136743277721">"Szinkronizálás most"</string>
+ <string name="clear_sync_data_title" msgid="8582001557037069154">"Adatok törlése a felhőből"</string>
+ <string name="clear_sync_data_summary" msgid="993477139012576584">"Törli a Google rendszeréből a szinkronizált adatokat"</string>
+ <string name="clear_sync_data_confirmation" msgid="2811931135574727678">"A szinkronizált adatok törlődnek a felhőből. Biztosan folytatja?"</string>
+ <string name="clear_sync_data_ok" msgid="613104067705915132">"Törlés"</string>
+ <string name="cloud_sync_cancel" msgid="5877481252150919037">"Mégse"</string>
+ <string name="cloud_sync_opt_in_text" msgid="9176039655776298248">"A rendszer szinkronizálni fogja az Ön személyes szótárát, és biztonsági mentést készít róla a Google szerverein. Termékeink továbbfejlesztése érdekében a rendszer a szavak előfordulási gyakoriságára vonatkozó statisztikai adatokat gyűjthet. Ezen információkat a "<a href="https://www.google.com/policies/privacy">"Google adatvédelmi irányelveivel"</a>" összhangban gyűjtjük és használjuk fel."</string>
+ <string name="add_account_to_enable_sync" msgid="7836932571852055265">"A funkció engedélyezéséhez adjon egy Google-fiókot az eszközhöz"</string>
+ <string name="cloud_sync_summary_disabled_work_profile" msgid="1381770407303129164">"A Google Apps cégeknek-fiókkal rendelkező eszközökön nem érhető el a szinkronizálás"</string>
+ <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Váltás más beviteli módra"</string>
+ <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A nyelvkapcsoló gomb egyéb beviteli módokat is tartalmaz"</string>
+ <string name="show_language_switch_key" msgid="5915478828318774384">"A nyelvkapcsoló"</string>
+ <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Megjelenítés, ha több beviteli nyelv engedélyezett"</string>
+ <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Gombeltüntetés késése"</string>
+ <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Nincs késés"</string>
+ <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Alapbeállítás"</string>
+ <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> ms"</string>
+ <string name="settings_system_default" msgid="6268225104743331821">"Alapértelmezett"</string>
+ <string name="use_contacts_dict" msgid="4435317977804180815">"Javasolt névjegyek"</string>
+ <string name="use_contacts_dict_summary" msgid="6599983334507879959">"A névjegyek használata a javaslatokhoz és javításokhoz"</string>
+ <string name="use_personalized_dicts" msgid="5167396352105467626">"Testreszabott javaslatok"</string>
+ <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> javítása"</string>
+ <string name="use_double_space_period" msgid="8781529969425082860">"Dupla szóköz: pont"</string>
+ <string name="use_double_space_period_summary" msgid="6532892187247952799">"A szóköz kétszeri megérintése beszúr egy pontot, majd egy szóközt"</string>
+ <string name="auto_cap" msgid="1719746674854628252">"Automatikusan nagy kezdőbetű"</string>
+ <string name="auto_cap_summary" msgid="7934452761022946874">"Minden mondat első szava nagybetűvel"</string>
+ <string name="edit_personal_dictionary" msgid="3996910038952940420">"Személyes szótár"</string>
+ <string name="configure_dictionaries_title" msgid="4238652338556902049">"Bővítmények: szótárak"</string>
+ <string name="main_dictionary" msgid="4798763781818361168">"Fő szótár"</string>
+ <string name="prefs_show_suggestions" msgid="8026799663445531637">"Javítási ajánlások megjelenítése"</string>
+ <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"A javasolt szavak megjelenítése gépelés közben"</string>
+ <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Sértő szavak kizárása"</string>
+ <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Ne javasoljon esetlegesen sértő szavakat"</string>
+ <string name="auto_correction" msgid="7630720885194996950">"Automatikus javítás"</string>
+ <string name="auto_correction_summary" msgid="5625751551134658006">"A szóköz és központozás automatikusan javítja az elgépelést"</string>
+ <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Ki"</string>
+ <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Mérsékelt"</string>
+ <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Agresszív"</string>
+ <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Nagyon agresszív"</string>
+ <string name="bigram_prediction" msgid="1084449187723948550">"Következő szóra vonatkozó javaslatok"</string>
+ <string name="bigram_prediction_summary" msgid="3896362682751109677">"Az előző szó felhasználása a javaslatoknál"</string>
+ <string name="gesture_input" msgid="826951152254563827">"Kézmozdulatokkal gépelés"</string>
+ <string name="gesture_input_summary" msgid="9180350639305731231">"Szó beírása úgy, hogy ujjait végigcsúsztatja a betűkön"</string>
+ <string name="gesture_preview_trail" msgid="3802333369335722221">"Mozdulat irányának mutatása"</string>
+ <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamikus lebegő előnézet"</string>
+ <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"A javasolt szó megtekintése kézmozdulat közben"</string>
+ <string name="gesture_space_aware" msgid="2078291600664682496">"Kifejezés-kézmozdulat"</string>
+ <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Szóköz írása kézmozdulatok során: húzza el ujját a szóköz felett"</string>
+ <string name="voice_input" msgid="3583258583521397548">"Hangbeviteli gomb"</string>
+ <string name="voice_input_disabled_summary" msgid="6323489602945135165">"Nincs engedélyezett hangbeviteli módszer. Nézze meg a Nyelvek és bevitel alatti beállításokat."</string>
+ <string name="configure_input_method" msgid="373356270290742459">"Beviteli módok beállítása"</string>
+ <string name="language_selection_title" msgid="3666971864764478269">"Nyelvek"</string>
+ <string name="help_and_feedback" msgid="5328219371839879161">"Súgó és visszajelzés"</string>
+ <string name="select_language" msgid="5709487854987078367">"Nyelvek"</string>
+ <string name="hint_add_to_dictionary" msgid="2645988432867033007">"A mentéshez koppintson újra"</string>
+ <string name="hint_add_to_dictionary_without_word" msgid="6710206006427574423">"Koppintson ide a mentéshez"</string>
+ <string name="has_dictionary" msgid="6071847973466625007">"Van elérhető szótár"</string>
+ <string name="keyboard_layout" msgid="8451164783510487501">"Billentyűzettéma"</string>
+ <string name="switch_accounts" msgid="3321216593719006162">"Fiókváltás"</string>
+ <string name="no_accounts_selected" msgid="2073821619103904330">"Nem választott fiókot"</string>
+ <string name="account_selected" msgid="2846876462199625974">"Jelenleg használt fiók: <xliff:g id="EMAIL_ADDRESS">%1$s</xliff:g>"</string>
+ <string name="account_select_ok" msgid="9141195141763227797">"OK"</string>
+ <string name="account_select_cancel" msgid="5181012062618504340">"Mégse"</string>
+ <string name="account_select_sign_out" msgid="3299651159390187933">"Kijelentkezés"</string>
+ <string name="account_select_title" msgid="6279711684772922649">"Válassza ki a használni kívánt fiókot"</string>
+ <string name="subtype_en_GB" msgid="88170601942311355">"angol (brit)"</string>
+ <string name="subtype_en_US" msgid="6160452336634534239">"angol (amerikai)"</string>
+ <string name="subtype_es_US" msgid="5583145191430180200">"spanyol (USA)"</string>
+ <string name="subtype_hi_ZZ" msgid="8860448146262798623">"Hinglish (hindi-angol)"</string>
+ <string name="subtype_sr_ZZ" msgid="9059219552986034343">"Szerb (latin)"</string>
+ <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"angol (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"angol (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_es_US" msgid="510930471167541338">"spanyol (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_hi_ZZ" msgid="6827402953860547044">"Hinglish (hindi-angol, <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_with_layout_sr_ZZ" msgid="2859024772719772407">"Szerb (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+ <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (hagyományos)"</string>
+ <string name="subtype_generic_compact" msgid="3353673321203202922">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kompakt)"</string>
+ <string name="subtype_no_language" msgid="7137390094240139495">"Nincs nyelv (ábécé)"</string>
+ <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Ábécé (QWERTY)"</string>
+ <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Ábécé (QWERTZ)"</string>
+ <string name="subtype_no_language_azerty" msgid="8144348527575640087">"Ábécé (AZERTY)"</string>
+ <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Ábécé (Dvorak)"</string>
+ <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Ábécé (Colemak)"</string>
+ <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Ábécé (PC)"</string>
+ <string name="subtype_emoji" msgid="7483586578074549196">"Hangulatjel"</string>
+ <string name="keyboard_theme" msgid="4909551808526178852">"Billentyűzettéma"</string>
+ <string name="custom_input_styles_title" msgid="8429952441821251512">"Egyedi bevitelstílusok"</string>
+ <string name="add_style" msgid="6163126614514489951">"Új stílus"</string>
+ <string name="add" msgid="8299699805688017798">"Hozzáadás"</string>
+ <string name="remove" msgid="4486081658752944606">"Eltávolítás"</string>
+ <string name="save" msgid="7646738597196767214">"Mentés"</string>
+ <string name="subtype_locale" msgid="8576443440738143764">"Nyelv"</string>
+ <string name="keyboard_layout_set" msgid="4309233698194565609">"Elrendezés"</string>
+ <string name="custom_input_style_note_message" msgid="8826731320846363423">"Az egyéni stílust először engedélyezni kell. Engedélyezi most?"</string>
+ <string name="enable" msgid="5031294444630523247">"Engedélyezés"</string>
+ <string name="not_now" msgid="6172462888202790482">"Most nem"</string>
+ <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Ugyanez a bemenetstílus már létezik: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+ <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Gombnyomás rezgési időtartama"</string>
+ <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Gombnyomás hangereje"</string>
+ <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Hosszú nyomás késleltetése"</string>
+ <string name="prefs_enable_emoji_alt_physical_key" msgid="5963640002335470112">"Hangulatjelek listája"</string>
+ <string name="prefs_enable_emoji_alt_physical_key_summary" msgid="5259484820941627827">"Az Alt billentyű lenyomásával megjelenik a hangultjelek listája"</string>
+ <string name="button_default" msgid="3988017840431881491">"Alapértelmezett"</string>
+ <string name="setup_welcome_title" msgid="6112821709832031715">"Üdvözli a(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g>!"</string>
+ <string name="setup_welcome_additional_description" msgid="8150252008545768953">"kézmozdulatokkal történő bevitellel"</string>
+ <string name="setup_start_action" msgid="8936036460897347708">"Első lépések"</string>
+ <string name="setup_next_action" msgid="371821437915144603">"Következő lépés"</string>
+ <string name="setup_steps_title" msgid="6400373034871816182">"A(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> beállítása"</string>
+ <string name="setup_step1_title" msgid="3147967630253462315">"A(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> engedélyezése"</string>
+ <string name="setup_step1_instruction" msgid="4295448056733329661">"Jelölje be a(z) „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” alkalmazást a „Nyelvek és bevitel” alatt. Ezzel engedélyezi az eszközön való futtatását."</string>
+ <string name="setup_step1_finished_instruction" msgid="8701441895377434947">"A(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> alkalmazást már engedélyezte a Nyelvek és bevitel beállításainál, tehát ez a lépés már kész. Folytassa a következővel!"</string>
+ <string name="setup_step1_action" msgid="4366513534999901728">"Engedélyezés a Beállítások között"</string>
+ <string name="setup_step2_title" msgid="6860725447906690594">"Váltás a(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> alkalmazásra"</string>
+ <string name="setup_step2_instruction" msgid="9141481964870023336">"Ezután válassza a(z) „<xliff:g id="APPLICATION_NAME">%s</xliff:g>” alkalmazást aktív szövegbeviteli módszerként."</string>
+ <string name="setup_step2_action" msgid="1660330307159824337">"Váltás a beviteli módok között"</string>
+ <string name="setup_step3_title" msgid="3154757183631490281">"Gratulálunk, máris elkészült!"</string>
+ <string name="setup_step3_instruction" msgid="8025981829605426000">"Immár minden kedvenc alkalmazásában gépelhet a(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g> segítségével."</string>
+ <string name="setup_step3_action" msgid="600879797256942259">"Állítson be további nyelveket"</string>
+ <string name="setup_finish_action" msgid="276559243409465389">"Befejeződött"</string>
+ <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Alkalmazásikon megjelenítése"</string>
+ <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Alkalmazásikon megjelenítése az indítóban"</string>
+ <string name="app_name" msgid="6320102637491234792">"Szótárszolgáltató"</string>
+ <string name="dictionary_provider_name" msgid="3027315045397363079">"Szótárszolgáltató"</string>
+ <string name="dictionary_service_name" msgid="6237472350693511448">"Szótárszolgáltatás"</string>
+ <string name="download_description" msgid="6014835283119198591">"Szótárfrissítéssel kapcsolatos információk"</string>
+ <string name="dictionary_settings_title" msgid="8091417676045693313">"Bővítmények: szótárak"</string>
+ <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Van rendelkezésre álló szótár"</string>
+ <string name="dictionary_settings_summary" msgid="5305694987799824349">"Szótárak beállításai"</string>
+ <string name="user_dictionaries" msgid="3582332055892252845">"Felhasználói szótárak"</string>
+ <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Felhasználói szótár"</string>
+ <string name="dictionary_available" msgid="4728975345815214218">"Van rendelkezésre álló szótár"</string>
+ <string name="dictionary_downloading" msgid="2982650524622620983">"Jelenlegi letöltések"</string>
+ <string name="dictionary_installed" msgid="8081558343559342962">"Telepítve"</string>
+ <string name="dictionary_disabled" msgid="8950383219564621762">"Telepítve, kikapcsolva"</string>
+ <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Csatlakozási hiba"</string>
+ <string name="no_dictionaries_available" msgid="8039920716566132611">"Nincs szótár"</string>
+ <string name="check_for_updates_now" msgid="8087688440916388581">"Frissítés"</string>
+ <string name="last_update" msgid="730467549913588780">"Legutóbb frissítve"</string>
+ <string name="message_updating" msgid="4457761393932375219">"Frissítések keresése"</string>
+ <string name="message_loading" msgid="5638680861387748936">"Betöltés…"</string>
+ <string name="main_dict_description" msgid="3072821352793492143">"Fő szótár"</string>
+ <string name="cancel" msgid="6830980399865683324">"Mégse"</string>
+ <string name="go_to_settings" msgid="3876892339342569259">"Beállítások"</string>
+ <string name="install_dict" msgid="180852772562189365">"Telepítés"</string>
+ <string name="cancel_download_dict" msgid="7843340278507019303">"Mégse"</string>
+ <string name="delete_dict" msgid="756853268088330054">"Törlés"</string>
+ <string name="should_download_over_metered_prompt" msgid="6737084685073734292">"A mobileszközön kiválasztott nyelvhez szótár áll rendelkezésre.<br/> A gépelési élmény javításához javasoljuk a(z) <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> szótár <b>letöltését</b>.<br/> <br/> A letöltés 3G hálózaton keresztül néhány percig tart. Ha <b>előfizetése nem tartalmaz korlátlan adatforgalmat</b>, a letöltés költségekkel járhat.<br/> Ha nem biztos abban, hogy milyen adatcsomagot használ, javasoljuk, hogy keressen Wi-Fi-kapcsolatot a letöltés automatikus elindításához.<br/> <br/> Tipp: Szótárakat a mobileszköz <b>Beállítások</b> menüjének <b>Nyelvek és bevitel</b> szakaszában tölthet le és távolíthat el."</string>
+ <string name="download_over_metered" msgid="1643065851159409546">"Töltse le most (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+ <string name="do_not_download_over_metered" msgid="2176209579313941583">"Letöltés Wi-Fivel"</string>
+ <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> nyelvhez van rendelkezésre álló szótár"</string>
+ <string name="dict_available_notification_description" msgid="1075194169443163487">"Nyomja meg az áttekintéshez és letöltéshez"</string>
+ <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Letöltés: a(z) <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> nyelvvel kapcsolatos javaslatok hamarosan elérhetők lesznek."</string>
+ <string name="version_text" msgid="2715354215568469385">"Verzió: <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+ <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Hozzáadás"</string>
+ <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Hozzáadás a szótárhoz"</string>
+ <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Kifejezés"</string>
+ <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"További opciók"</string>
+ <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Kevesebb opció"</string>
+ <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"OK"</string>
+ <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Szó:"</string>
+ <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Gyorsparancs:"</string>
+ <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Nyelv:"</string>
+ <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Írjon be egy szót"</string>
+ <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Választható gyorsparancs"</string>
+ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Szó szerkesztése"</string>
+ <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Szerkesztés"</string>
+ <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Törlés"</string>
+ <string name="user_dict_settings_empty_text" msgid="6889278304342592383">"Nincsenek szavak a felhasználói szótárban. Új szavakat a Hozzáadás (+) gombra koppintva vehet fel."</string>
+ <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Minden nyelven"</string>
+ <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"További nyelvek…"</string>
+ <string name="user_dict_settings_delete" msgid="110413335187193859">"Törlés"</string>
+ <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-hu/cm_strings.xml b/java/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..2eafb76
--- /dev/null
+++ b/java/res/values-hu/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Ábécé (Bépo)</string>
+ <string name="subtype_hu_ZZ">Magyar (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - rendszerbeállításokat követve</string>
+ <string name="prefs_keyboard_height_scale">A billentyűzetmagasság értéke</string>
+ <string name="number_row">Számkarakterek</string>
+ <string name="number_row_summary">Négy gombsoros elrendezésnél mindig meg fogja jeleníteni a számkarakterek sorát is</string>
+ <string name="space_trackpad">Szóköz, mint egérpad</string>
+ <string name="space_trackpad_summary">A kurzor mozgatásához húzza az ujját a szóköz billentyűn</string>
+ <string name="show_longpress_hints">Tippek megjelenítése hosszan nyomáskor</string>
+ <string name="show_longpress_hints_summary">A támogatott billentyűkön, hosszan lenyomáskor tippeket jelenít meg</string>
+ <string name="show_emoji_key">Emoji-gomb megjelenítése</string>
+ <string name="show_emoji_key_summary">Mindig mutassa meg az emojik gombját. Ha ez az opció engedélyezve van, a nyelvváltó gomb nem jeleníthető meg.</string>
+</resources>
diff --git a/java/res/values-in/cm_strings.xml b/java/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..8d18107
--- /dev/null
+++ b/java/res/values-in/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungaria (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - ikuti setelan sistem</string>
+ <string name="prefs_keyboard_height_scale">Skala ketinggian keyboard</string>
+ <string name="number_row">Baris angka</string>
+ <string name="number_row_summary">Selalu tampilkan baris angka untuk semua tata letak yang menampilkan 4 baris tombol</string>
+</resources>
diff --git a/java/res/values-is/cm_strings.xml b/java/res/values-is/cm_strings.xml
new file mode 100644
index 0000000..3b4ace2
--- /dev/null
+++ b/java/res/values-is/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Stafróf (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungverska (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - fylgja kerfisstillingum</string>
+ <string name="prefs_keyboard_height_scale">Kvarði lyklaborðs í hæð</string>
+ <string name="number_row">Talnaröð</string>
+ <string name="number_row_summary">Alltaf birta talnaröð í öllum framsetningum með 4 röðum lykla</string>
+ <string name="space_trackpad">Bilslá sem tilfærsla</string>
+ <string name="space_trackpad_summary">Strjúka á bilslá til að færa bendilinn</string>
+ <string name="show_longpress_hints">Birta ábendingar þegar ýtt er lengi</string>
+ <string name="show_longpress_hints_summary">Birtir ábendingar þegar ýtt er lengi á studda lykla</string>
+ <string name="show_emoji_key">Sýna lykla með tjáningartáknum</string>
+ <string name="show_emoji_key_summary">Alltaf birta lykil með emoji-táknum. Sé þetta valið, er ekki hægt að hafa lykil til að skipta um tungumál.</string>
+</resources>
diff --git a/java/res/values-it/cm_strings.xml b/java/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..5e0149e
--- /dev/null
+++ b/java/res/values-it/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabeto (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungherese (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - utilizza le impostazioni di sistema</string>
+ <string name="prefs_keyboard_height_scale">Altezza tastiera</string>
+ <string name="number_row">Riga numeri</string>
+ <string name="number_row_summary">Mostra sempre la riga dei numeri per tutti i layout con quattro righe di tasti</string>
+ <string name="space_trackpad">Spostamento tramite barra spaziatrice</string>
+ <string name="space_trackpad_summary">Scorri sulla barra spaziatrice per spostare il cursore</string>
+ <string name="show_longpress_hints">Simboli di pressione prolungata</string>
+ <string name="show_longpress_hints_summary">Mostra i simboli di pressione prolungata per i tasti che li prevedono</string>
+ <string name="show_emoji_key">Mostra tasto emoji</string>
+ <string name="show_emoji_key_summary">Mostra sempre il tasto emoji. Quando questa opzione è abilitata, il tasto di selezione della lingua non può essere mostrato.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-iw/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-iw/cm_strings.xml
index 9dfc93a..3850edf 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-iw/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">אלפביתי (לטיני-Bépo)</string>
+ <string name="subtype_hu_ZZ">הונגרית (QWERTY)</string>
+</resources>
diff --git a/java/res/values-ja/cm_strings.xml b/java/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..51c88ab
--- /dev/null
+++ b/java/res/values-ja/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">アルファベット(Bépo)</string>
+ <string name="subtype_hu_ZZ">ハンガリー語(QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">マテリアル - システム設定に従う</string>
+ <string name="prefs_keyboard_height_scale">キーボードの高さ</string>
+ <string name="number_row">数の行</string>
+ <string name="number_row_summary">4行のキーを持つすべてのレイアウトに、常に数の行を表示します</string>
+ <string name="space_trackpad">スペースバーのトラックパッド</string>
+ <string name="space_trackpad_summary">スペースバーをスワイプしてカーソルを移動します</string>
+ <string name="show_longpress_hints">長押しのヒントを表示</string>
+ <string name="show_longpress_hints_summary">サポートしているキーでは長押しでヒントを表示します</string>
+ <string name="show_emoji_key">絵文字キーを表示</string>
+ <string name="show_emoji_key_summary">常に絵文字キーを表示します。このオプションを有効にすると、言語切り替えキーを表示できません。</string>
+</resources>
diff --git a/java/res/values-ka/cm_strings.xml b/java/res/values-ka/cm_strings.xml
new file mode 100644
index 0000000..fd63d82
--- /dev/null
+++ b/java/res/values-ka/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">ანბანი (Bépo)</string>
+ <string name="subtype_hu_ZZ">უნგრული (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - სისტემის შესაბამისი</string>
+ <string name="prefs_keyboard_height_scale">კლავიატურის სიმაღლე</string>
+ <string name="number_row">ციფრების ზოლი</string>
+ <string name="number_row_summary">ციფრების ზოლის გამოჩენა ყველა 4-რიგიანი ღილაკების მქონე განლაგებისთვის</string>
+ <string name="space_trackpad">შეხება დაშორების ღილაკზე</string>
+ <string name="space_trackpad_summary">ჰარიზე გადასმისას მაჩვენებლის გადაადგილება</string>
+ <string name="show_longpress_hints">მინიშნების გამოჩენა ხანგრძლივი დაჭერისას</string>
+ <string name="show_longpress_hints_summary">ხანგრძლივი დაჭერისას მინიშნების ჩვენება შესაბამის ღილაკებზე</string>
+ <string name="show_emoji_key">სიცილაკების ღილაკის ჩვენება</string>
+ <string name="show_emoji_key_summary">ყოველთვის ჩანდეს სიცილაკების ღილაკი. როცა მოქმედია, ენის გადართვის ღილაკი ვერ გამოჩნდება.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-kab-rDZ/cm_strings.xml
similarity index 63%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-kab-rDZ/cm_strings.xml
index 229f7a9..efd98e2 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-kab-rDZ/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Agemmay(Bépo)</string>
+ <string name="subtype_hu_ZZ">Tahungarit (QWERTY)</string>
+ <string name="prefs_keyboard_height_scale">Taskala tbeddi n unasiw</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-kn/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-kn/cm_strings.xml
index 9dfc93a..ba58cbb 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-kn/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">ಅಕ್ಷರ (Bépo)</string>
+</resources>
diff --git a/java/res/values-ko/cm_strings.xml b/java/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..70a79f8
--- /dev/null
+++ b/java/res/values-ko/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">알파벳 (Bépo)</string>
+ <string name="subtype_hu_ZZ">헝가리어 (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">머티리얼 - 시스템 설정에 따름</string>
+ <string name="prefs_keyboard_height_scale">키보드 높이</string>
+ <string name="number_row">숫자 행</string>
+ <string name="number_row_summary">키가 4줄인 모든 레이아웃에서 항상 숫자 행 표시</string>
+ <string name="space_trackpad">스페이스 바 트랙패드</string>
+ <string name="space_trackpad_summary">스페이스 바를 스와이프하여 커서 이동</string>
+ <string name="show_longpress_hints">길게 눌러 버튼 키 힌트 보기</string>
+ <string name="show_longpress_hints_summary">키를 길게 눌러 지원되는 키 보기</string>
+ <string name="show_emoji_key">이모지 키 보기</string>
+ <string name="show_emoji_key_summary">항상 이모지 키를 표시합니다. 이 옵션을 켜면 언어 전환 키가 나타나지 않습니다.</string>
+</resources>
diff --git a/java/res/values-land/config.xml b/java/res/values-land/config.xml
index d36f6a0..fdaba14 100644
--- a/java/res/values-land/config.xml
+++ b/java/res/values-land/config.xml
@@ -78,7 +78,7 @@
<!-- Emoji keyboard -->
<fraction name="config_emoji_keyboard_key_width">10%p</fraction>
- <fraction name="config_emoji_keyboard_row_height">50%p</fraction>
+ <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
<fraction name="config_emoji_keyboard_key_letter_size">54%p</fraction>
- <integer name="config_emoji_keyboard_max_page_key_count">20</integer>
+ <integer name="config_emoji_keyboard_max_page_key_count">30</integer>
</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-lt/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-lt/cm_strings.xml
index 9dfc93a..1bf49d1 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-lt/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabetas (Bépo)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-lu/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-lu/cm_strings.xml
index 9dfc93a..a1ebb28 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-lu/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-ml/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-ml/cm_strings.xml
index 9dfc93a..22fa0f4 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-ml/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">അക്ഷരമാല (Bépo)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-mr/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-mr/cm_strings.xml
index 9dfc93a..ead6b1b 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-mr/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">अक्षर (Bépo)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-nb/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-nb/cm_strings.xml
index 9dfc93a..19f38a4 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-nb/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabetet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungarsk (QWERTY)</string>
+</resources>
diff --git a/java/res/values-night/themes-you-colors.xml b/java/res/values-night/themes-you-colors.xml
new file mode 100644
index 0000000..a7c0306
--- /dev/null
+++ b/java/res/values-night/themes-you-colors.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <color name="keyboard_background_you">@android:color/system_neutral1_900</color>
+ <!-- Keys -->
+ <color name="keyboard_key_normal_color_you">@android:color/system_neutral1_800</color>
+ <color name="keyboard_key_pressed_color_you">@android:color/system_neutral1_900</color>
+ <color name="keyboard_key_text_color_you">@android:color/system_neutral1_50</color>
+ <color name="keyboard_key_functional_normal_color_you">@android:color/system_neutral1_700</color>
+ <color name="keyboard_key_functional_pressed_color_you">@android:color/system_neutral2_300</color>
+ <color name="keyboard_key_functional_text_color_you">@android:color/system_neutral1_50</color>
+ <color name="keyboard_key_action_normal_color_you">@android:color/system_accent1_400</color>
+ <color name="keyboard_key_action_pressed_color_you">@android:color/system_accent1_600</color>
+ <color name="shift_normal_color_you">@android:color/system_neutral1_50</color>
+ <color name="shift_locked_color_you">@android:color/system_neutral1_50</color>
+ <color name="icon_color_you">@android:color/system_neutral1_50</color>
+ <color name="key_hint_letter_color_you">@android:color/system_neutral1_400</color>
+ <!-- Suggestion bar -->
+ <color name="typed_word_color_you">@android:color/system_neutral1_50</color>
+ <color name="auto_correct_color_you">@android:color/system_neutral1_50</color>
+ <color name="suggested_word_color_you">@android:color/system_neutral1_50</color>
+ <!-- Gesture input -->
+ <color name="gesture_trail_color_you">@android:color/system_accent1_300</color>
+ <color name="gesture_floating_preview_text_color_you">@android:color/system_neutral1_50</color>
+ <!-- Misc -->
+ <color name="highlight_color_you">@android:color/system_accent1_500</color>
+ <color name="emoji_tab_page_indicator_background_you">@android:color/system_neutral1_900</color>
+</resources>
diff --git a/java/res/values-night/themes-you.xml b/java/res/values-night/themes-you.xml
new file mode 100644
index 0000000..526f676
--- /dev/null
+++ b/java/res/values-night/themes-you.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <style
+ name="EmojiPalettesView.You"
+ parent="MainKeyboardView.You"
+ >
+ <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_lxx_dark</item>
+ <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_lxx_dark</item>
+ <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_lxx_dark</item>
+ <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_lxx_dark</item>
+ <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_lxx_dark</item>
+ <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_lxx_dark</item>
+ <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_lxx_dark</item>
+ <item name="iconEmojiCategory7Tab">@drawable/ic_emoji_flag_lxx_dark</item>
+ <item name="iconEmojiCategory8Tab">@drawable/ic_emoji_people_lxx_dark</item>
+ <item name="iconEmojiCategory9Tab">@drawable/ic_emoji_nature_lxx_dark</item>
+ <item name="iconEmojiCategory10Tab">@drawable/ic_emoji_food_lxx_dark</item>
+ <item name="iconEmojiCategory11Tab">@drawable/ic_emoji_places_lxx_dark</item>
+ <item name="iconEmojiCategory12Tab">@drawable/ic_emoji_activity_lxx_dark</item>
+ <item name="iconEmojiCategory13Tab">@drawable/ic_emoji_objects_lxx_dark</item>
+ <item name="iconEmojiCategory14Tab">@drawable/ic_emoji_symbols_lxx_dark</item>
+ <item name="iconEmojiCategory15Tab">@drawable/ic_emoji_flag_lxx_dark</item>
+ <item name="iconEmojiCategory16Tab">@drawable/ic_emoji_people_lxx_dark</item>
+ </style>
+</resources>
diff --git a/java/res/values-nl/cm_strings.xml b/java/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..ab247d8
--- /dev/null
+++ b/java/res/values-nl/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hongaars (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - volg systeem instellingen</string>
+ <string name="prefs_keyboard_height_scale">Toetsenbord hoogte</string>
+ <string name="number_row">Nummerrij</string>
+ <string name="number_row_summary">Altijd een nummerrij weergeven voor alle lay-outs met 4 rijen toetsen</string>
+ <string name="space_trackpad">Spatiebalk trackpad</string>
+ <string name="space_trackpad_summary">Veeg op de spatiebalk om de cursor te verplaatsen</string>
+ <string name="show_longpress_hints">Toon langdruk-toets hints</string>
+ <string name="show_longpress_hints_summary">Toont langdruk-hints voor ondersteunde toetsen</string>
+ <string name="show_emoji_key">Toon emoji toets</string>
+ <string name="show_emoji_key_summary">Emoji-toets altijd weergeven. Als deze optie is ingeschakeld, kan de taalwisseltoets niet worden weergegeven.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-or/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-or/cm_strings.xml
index 9dfc93a..5ecc21b 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-or/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">ଅକ୍ଷର (ବେପୋ)</string>
+</resources>
diff --git a/java/res/values-pl/cm_strings.xml b/java/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..0bf5169
--- /dev/null
+++ b/java/res/values-pl/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Węgierski (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - zgodnie z ustawieniami systemowymi</string>
+ <string name="prefs_keyboard_height_scale">Rozmiar klawiatury</string>
+ <string name="number_row">Wiersz numeryczny</string>
+ <string name="number_row_summary">Zawsze wyświetlaj wiersz numeryczny dla wszystkich układów z 4 rzędami klawiszy</string>
+ <string name="space_trackpad">Klawisz spacji jako gładzik</string>
+ <string name="space_trackpad_summary">Przesuwaj palcem na spacji, aby poruszać kursorem</string>
+ <string name="show_longpress_hints">Pokaż podpowiedzi długiego przytrzymania klawisza</string>
+ <string name="show_longpress_hints_summary">Wyświetla podpowiedzi długiego przytrzymania dla obsługiwanych klawiszy</string>
+ <string name="show_emoji_key">Pokaż przycisk emoji</string>
+ <string name="show_emoji_key_summary">Zawsze pokazuj przycisk emoji. Gdy ta opcja jest włączona, przycisk przełączania języka nie będzie wyświetlany.</string>
+</resources>
diff --git a/java/res/values-pt-rBR/cm_strings.xml b/java/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..9f0e86a
--- /dev/null
+++ b/java/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabeto (Bépo)</string>
+ <string name="subtype_hu_ZZ">Húngaro (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - seguir configurações do sistema</string>
+ <string name="prefs_keyboard_height_scale">Altura do teclado</string>
+ <string name="number_row">Linha de números</string>
+ <string name="number_row_summary">Sempre mostrar uma linha de números para todos os layouts que tenham 4 linhas de teclas</string>
+ <string name="space_trackpad">Mover cursor com a barra de espaço</string>
+ <string name="space_trackpad_summary">Deslize na barra de espaço para mover o cursor</string>
+ <string name="show_longpress_hints">Mostrar dicas de tecla de toque longo</string>
+ <string name="show_longpress_hints_summary">Mostra dicas de toque longo para teclas suportadas</string>
+ <string name="show_emoji_key">Mostrar tecla de emoji</string>
+ <string name="show_emoji_key_summary">Sempre mostrar a tecla de emojis. Quando esta opção está habilitada, a tecla de alternar idioma não pode ser mostrada.</string>
+</resources>
diff --git a/java/res/values-pt-rPT/cm_strings.xml b/java/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..ac074d3
--- /dev/null
+++ b/java/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabeto (Bépo)</string>
+ <string name="subtype_hu_ZZ">Húngaro (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - seguir definições do sistema</string>
+ <string name="prefs_keyboard_height_scale">Altura do teclado</string>
+</resources>
diff --git a/java/res/values-ro/cm_strings.xml b/java/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..1b2b547
--- /dev/null
+++ b/java/res/values-ro/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Maghiară (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - urmează setările sistemului</string>
+ <string name="prefs_keyboard_height_scale">Scară înălţime tastatură</string>
+ <string name="number_row">Rând de numere</string>
+ <string name="number_row_summary">Întotdeauna arată un rând de numere pentru toate layout-urile care prezintă 4 rânduri de taste</string>
+ <string name="space_trackpad">Trackpad pe bara de spațiu</string>
+ <string name="space_trackpad_summary">Glisați pe bara de spațiu pentru a muta cursorul</string>
+ <string name="show_longpress_hints">Arată sugestii taste pentru apăsare lungă</string>
+ <string name="show_longpress_hints_summary">Afişează indicii de apăsare lungă pentru tastele acceptate</string>
+ <string name="show_emoji_key">Arată tastă emoji</string>
+ <string name="show_emoji_key_summary">Arată întotdeauna cheia emoji. Când această opțiune este activată, tasta de comutare a limbii nu poate fi afișată.</string>
+</resources>
diff --git a/java/res/values-ru/cm_strings.xml b/java/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..9525b09
--- /dev/null
+++ b/java/res/values-ru/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Алфавит (Bépo)</string>
+ <string name="subtype_hu_ZZ">Венгерский (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - следовать настройкам системы</string>
+ <string name="prefs_keyboard_height_scale">Высота клавиатуры</string>
+ <string name="number_row">Ряд цифр</string>
+ <string name="number_row_summary">Для всех раскладок, имеющих 4 ряда клавиш, всегда показывать ряд цифр</string>
+ <string name="space_trackpad">Пробел как трекпад</string>
+ <string name="space_trackpad_summary">Перемещать курсор свайпом по клавише пробела</string>
+ <string name="show_longpress_hints">Подсказки при длительном нажатии клавиш</string>
+ <string name="show_longpress_hints_summary">Показывать всплывающие подсказки при длительном нажатии клавиш</string>
+ <string name="show_emoji_key">Показать клавишу смайликов</string>
+ <string name="show_emoji_key_summary">Всегда показывать клавишу смайликов. Если эта опция включена, клавиша переключения языка не отображается.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-sc-rIT/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-sc-rIT/cm_strings.xml
index 9dfc93a..e01b0a2 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-sc-rIT/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabetu (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungheresu (QWERTY)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/values-sk/cm_strings.xml
similarity index 63%
copy from java/res/drawable/btn_keyboard_spacebar_ics.xml
copy to java/res/values-sk/cm_strings.xml
index 229f7a9..511bf5d 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/values-sk/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,9 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
- <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Abeceda (Bépo)</string>
+ <string name="subtype_hu_ZZ">Maďarčina (QWERTY)</string>
+ <string name="prefs_keyboard_height_scale">Výška klávesnice</string>
+</resources>
diff --git a/java/res/values-sl/cm_strings.xml b/java/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..7a23692
--- /dev/null
+++ b/java/res/values-sl/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Abeceda (Bépo)</string>
+ <string name="subtype_hu_ZZ">Madžarščina (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - sledi sistemskim nastavitvam</string>
+ <string name="prefs_keyboard_height_scale">Merilo višine tipkovnice</string>
+ <string name="number_row">Vrstica s številkami</string>
+ <string name="number_row_summary">Vedno prikaži vrstico s številkami za vse 4-vrstične postavitve gumbov</string>
+ <string name="space_trackpad">Sledilna ploščica preslednice</string>
+ <string name="space_trackpad_summary">Potegnite po preslednici za premik kazalca</string>
+ <string name="show_longpress_hints">Prikaži namige pridržanja tipke</string>
+ <string name="show_longpress_hints_summary">Prikaže namige pridržanja tipke za podprte tipke</string>
+ <string name="show_emoji_key">Prikaži tipko za izrazne ikone</string>
+ <string name="show_emoji_key_summary">Vedno prikaži tipko za izrazne ikone. Ko je ta možnost omogočena, preklopnik jezikov ne more biti prikazan.</string>
+</resources>
diff --git a/java/res/values-sq/cm_strings.xml b/java/res/values-sq/cm_strings.xml
new file mode 100644
index 0000000..255513b
--- /dev/null
+++ b/java/res/values-sq/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungarisht (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - ndiq cilësimet e sistemit</string>
+ <string name="prefs_keyboard_height_scale">Shkalla e lartësisë së tastierës</string>
+ <string name="number_row">Rreshti i numrave</string>
+ <string name="number_row_summary">Trego gjithmonë një rresht me numra për të gjitha paraqitjet që përmbajnë 4 rreshta çelësash</string>
+ <string name="space_trackpad">Tabela e shiritit hapësinor</string>
+ <string name="space_trackpad_summary">Rrëshqitni në shiritin e hapësirës për të lëvizur kursorin</string>
+ <string name="show_longpress_hints">Shfaq sugjerimet e tastit me shtypje të gjatë</string>
+ <string name="show_longpress_hints_summary">Tregon sugjerime për shtypjen e gjatë për çelësat e mbështetur</string>
+ <string name="show_emoji_key">Shfaq çelësin e emoji</string>
+ <string name="show_emoji_key_summary">Trego gjithmonë çelësin e emoji-t. Kur ky opsion është i aktivizuar, tasti i ndërrimit të gjuhës nuk mund të shfaqet.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-sr/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-sr/cm_strings.xml
index 9dfc93a..7a25228 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-sr/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Абецеда (Bépo)</string>
+ <string name="subtype_hu_ZZ">Мађарски (QWERTY)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-sv/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-sv/cm_strings.xml
index 9dfc93a..edb55d8 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-sv/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabetet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Ungerska (QWERTY)</string>
+</resources>
diff --git a/java/res/values-sw430dp/config-per-form-factor.xml b/java/res/values-sw430dp/config-per-form-factor.xml
index 8868081..1a539c1 100644
--- a/java/res/values-sw430dp/config-per-form-factor.xml
+++ b/java/res/values-sw430dp/config-per-form-factor.xml
@@ -24,6 +24,7 @@
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_key_preview_popup">true</bool>
<bool name="config_default_sound_enabled">false</bool>
+ <bool name="config_enable_show_emoji_key_option">true</bool>
<bool name="config_enable_show_voice_key_option">true</bool>
<bool name="config_key_selection_by_dragging_finger">true</bool>
<!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
diff --git a/java/res/values-sw600dp-land/config.xml b/java/res/values-sw600dp-land/config.xml
index d33af2e..af16ba5 100644
--- a/java/res/values-sw600dp-land/config.xml
+++ b/java/res/values-sw600dp-land/config.xml
@@ -27,8 +27,10 @@
<dimen name="config_more_keys_keyboard_key_height">81.9dp</dimen>
- <fraction name="config_keyboard_top_padding_holo">2.727%p</fraction>
- <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction>
+ <fraction name="config_keyboard_left_padding">4%p</fraction>
+ <fraction name="config_keyboard_right_padding">4%p</fraction>
+ <fraction name="config_keyboard_top_padding_holo">3%p</fraction>
+ <fraction name="config_keyboard_bottom_padding_holo">3%p</fraction>
<fraction name="config_key_vertical_gap_holo">4.5%p</fraction>
<fraction name="config_key_horizontal_gap_holo">0.9%p</fraction>
diff --git a/java/res/values-sw600dp/config-per-form-factor.xml b/java/res/values-sw600dp/config-per-form-factor.xml
index aa9a054..eff3ce6 100644
--- a/java/res/values-sw600dp/config-per-form-factor.xml
+++ b/java/res/values-sw600dp/config-per-form-factor.xml
@@ -23,7 +23,8 @@
<bool name="config_enable_show_key_preview_popup_option">false</bool>
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_key_preview_popup">false</bool>
- <bool name="config_default_sound_enabled">true</bool>
+ <bool name="config_default_sound_enabled">false</bool>
+ <bool name="config_enable_show_emoji_key_option">false</bool>
<bool name="config_enable_show_voice_key_option">false</bool>
<bool name="config_key_selection_by_dragging_finger">false</bool>
<!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index 44e0d06..520d1d7 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -34,6 +34,8 @@
<!-- config_more_keys_keyboard_key_height x 1.2 -->
<dimen name="config_more_keys_keyboard_slide_allowance">98.3dp</dimen>
+ <fraction name="config_keyboard_left_padding">2%p</fraction>
+ <fraction name="config_keyboard_right_padding">2%p</fraction>
<fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
<fraction name="config_keyboard_bottom_padding_holo">4.0%p</fraction>
<fraction name="config_key_vertical_gap_holo">4.5%p</fraction>
@@ -44,6 +46,7 @@
<fraction name="config_key_preview_text_ratio">50%</fraction>
<fraction name="config_key_letter_ratio_holo">42%</fraction>
<fraction name="config_key_letter_ratio_lxx">50%</fraction>
+ <fraction name="config_key_letter_ratio_you">45%</fraction>
<fraction name="config_key_large_letter_ratio_holo">45%</fraction>
<fraction name="config_key_large_letter_ratio_lxx">60%</fraction>
<fraction name="config_key_label_ratio_holo">25%</fraction>
diff --git a/java/res/values-sw768dp/config-per-form-factor.xml b/java/res/values-sw768dp/config-per-form-factor.xml
index b90fbae..1596db1 100644
--- a/java/res/values-sw768dp/config-per-form-factor.xml
+++ b/java/res/values-sw768dp/config-per-form-factor.xml
@@ -23,7 +23,8 @@
<bool name="config_enable_show_key_preview_popup_option">false</bool>
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_key_preview_popup">false</bool>
- <bool name="config_default_sound_enabled">true</bool>
+ <bool name="config_default_sound_enabled">false</bool>
+ <bool name="config_enable_show_emoji_key_option">false</bool>
<bool name="config_enable_show_voice_key_option">false</bool>
<bool name="config_key_selection_by_dragging_finger">false</bool>
<!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-ta/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-ta/cm_strings.xml
index 9dfc93a..663ce2b 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-ta/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">அல்பாபெட் (Bépo)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-te/cm_strings.xml
similarity index 65%
rename from java/res/drawable/btn_keyboard_key_popup_klp.xml
rename to java/res/values-te/cm_strings.xml
index 9dfc93a..28eda7c 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-te/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">అక్షరమాల (Bépo)</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-th/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-th/cm_strings.xml
index 9dfc93a..093b7cf 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-th/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,8 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">ตัวอักษร (Bépo)</string>
+ <string name="subtype_hu_ZZ">ฮังการี (QWERTY)</string>
+</resources>
diff --git a/java/res/values-tr/cm_strings.xml b/java/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..4a10b0d
--- /dev/null
+++ b/java/res/values-tr/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Alfabe (Bépo)</string>
+ <string name="subtype_hu_ZZ">Macarca (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - sistem ayarlarını takip et</string>
+ <string name="prefs_keyboard_height_scale">Klavye yükseklik ölçeği</string>
+ <string name="number_row">Sayı satırı</string>
+ <string name="number_row_summary">Her zaman 4 sıra tuş içeren tüm düzenler için bir sayı satırı göster</string>
+ <string name="space_trackpad">Boşluk çubuğu trackpad</string>
+ <string name="space_trackpad_summary">İmleci hareket ettirmek için boşluk çubuğunu kaydır</string>
+ <string name="show_longpress_hints">Uzun basıldığında tuş ipuçlarını göster</string>
+ <string name="show_longpress_hints_summary">Desteklenen tuşlar için uzun basma ipuçlarını göster</string>
+ <string name="show_emoji_key">Emoji tuşunu göster</string>
+ <string name="show_emoji_key_summary">Her zaman emoji tuşunu göster. Bu ayar açıkken dil değiştirme tuşu gösterilmez.</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-ug/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-ug/cm_strings.xml
index 9dfc93a..e3d13b3 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-ug/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">ئېلىپبە(Bépo)</string>
+</resources>
diff --git a/java/res/values-uk/cm_strings.xml b/java/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..ce49c08
--- /dev/null
+++ b/java/res/values-uk/cm_strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Алфавіт (Bépo)</string>
+ <string name="subtype_hu_ZZ">Угорська (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material — наслідування системних налаштувань</string>
+ <string name="prefs_keyboard_height_scale">Висота клавіатури</string>
+</resources>
diff --git a/java/res/values-v19/emoji-categories.xml b/java/res/values-v19/emoji-categories.xml
index d9b1738..e6f51f9 100644
--- a/java/res/values-v19/emoji-categories.xml
+++ b/java/res/values-v19/emoji-categories.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project
+ Copyright (C) 2018 The LineageOS Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -244,10 +245,10 @@
<item>1f6af</item>
<item>1f6b0</item>
<item>1f6b1</item>
- <item>1f170</item>
- <item>1f171</item>
+ <item>1f170,FE0F</item>
+ <item>1f171,FE0F</item>
<item>1f18e</item>
- <item>1f17e</item>
+ <item>1f17e,FE0F</item>
<item>1f4ae</item>
<item>1f4af</item>
<item>1f520</item>
@@ -264,10 +265,10 @@
<item>1f6ba</item>
<item>1f6bc</item>
<item>267f</item>
- <item>267b</item>
+ <item>267b,FE0F</item>
<item>1f6ad</item>
<item>1f6a9</item>
- <item>26a0</item>
+ <item>26a0,FE0F</item>
<item>1f201</item>
<item>1f51e</item>
<item>26d4</item>
@@ -284,33 +285,33 @@
<item>1f234</item>
<item>1f235</item>
<item>1f236</item>
- <item>1f237</item>
+ <item>1f237,FE0F</item>
<item>1f238</item>
<item>1f239</item>
- <item>1f202</item>
+ <item>1f202,FE0F</item>
<item>1f23a</item>
<item>1f250</item>
<item>1f251</item>
- <item>3299</item>
- <item>00ae</item>
- <item>00a9</item>
- <item>2122</item>
+ <item>3299,FE0F</item>
+ <item>00ae,FE0F</item>
+ <item>00a9,FE0F</item>
+ <item>2122,FE0F</item>
<item>1f21a</item>
<item>1f22f</item>
- <item>3297</item>
+ <item>3297,FE0F</item>
<item>2b55</item>
<item>274c</item>
<item>274e</item>
- <item>2139</item>
+ <item>2139,FE0F</item>
<item>1f6ab</item>
<item>2705</item>
- <item>2714</item>
+ <item>2714,FE0F</item>
<item>1f517</item>
- <item>2734</item>
- <item>2733</item>
+ <item>2734,FE0F</item>
+ <item>2733,FE0F</item>
<item>2795</item>
<item>2796</item>
- <item>2716</item>
+ <item>2716,FE0F</item>
<item>2797</item>
<item>1f4a0</item>
<item>1f4a1</item>
@@ -345,27 +346,27 @@
<item>1f565</item>
<item>1f55a</item>
<item>1f566</item>
- <item>2195</item>
- <item>2b06</item>
- <item>2197</item>
- <item>27a1</item>
- <item>2198</item>
- <item>2b07</item>
- <item>2199</item>
- <item>2b05</item>
- <item>2196</item>
- <item>2194</item>
- <item>2934</item>
- <item>2935</item>
+ <item>2195,FE0F</item>
+ <item>2b06,FE0F</item>
+ <item>2197,FE0F</item>
+ <item>27a1,FE0F</item>
+ <item>2198,FE0F</item>
+ <item>2b07,FE0F</item>
+ <item>2199,FE0F</item>
+ <item>2b05,FE0F</item>
+ <item>2196,FE0F</item>
+ <item>2194,FE0F</item>
+ <item>2934,FE0F</item>
+ <item>2935,FE0F</item>
<item>23ea</item>
<item>23eb</item>
<item>23ec</item>
<item>23e9</item>
- <item>25c0</item>
- <item>25b6</item>
+ <item>25c0,FE0F</item>
+ <item>25b6,FE0F</item>
<item>1f53d</item>
<item>1f53c</item>
- <item>2747</item>
+ <item>2747,FE0F</item>
<item>2728</item>
<item>1f534</item>
<item>1f535</item>
@@ -376,12 +377,12 @@
<item>2b50</item>
<item>1f31f</item>
<item>1f320</item>
- <item>25ab</item>
- <item>25aa</item>
+ <item>25ab,FE0F</item>
+ <item>25aa,FE0F</item>
<item>25fd</item>
<item>25fe</item>
- <item>25fb</item>
- <item>25fc</item>
+ <item>25fb,FE0F</item>
+ <item>25fc,FE0F</item>
<item>2b1c</item>
<item>2b1b</item>
<item>1f538</item>
@@ -394,9 +395,9 @@
<item>2753</item>
<item>2755</item>
<item>2757</item>
- <item>203c</item>
- <item>2049</item>
- <item>3030</item>
+ <item>203c,FE0F</item>
+ <item>2049,FE0F</item>
+ <item>3030,FE0F</item>
<item>27b0</item>
<item>2660</item>
<item>2665</item>
@@ -404,14 +405,14 @@
<item>2666</item>
<item>1f194</item>
<item>1f511</item>
- <item>21a9</item>
+ <item>21a9,FE0F</item>
<item>1f191</item>
<item>1f50d</item>
<item>1f512</item>
<item>1f513</item>
- <item>21aa</item>
+ <item>21aa,FE0F</item>
<item>1f510</item>
- <item>2611</item>
+ <item>2611,FE0F</item>
<item>1f518</item>
<item>1f50e</item>
<item>1f516</item>
@@ -428,6 +429,8 @@
<item>1f508</item>
<item>1f509</item>
<item>1f50a</item>
+ <item>1f5a4</item>
+ <item>1f6d1</item>
</array>
<array
name="emoji_faces"
@@ -563,6 +566,20 @@
<item>1f49b</item>
<item>1f49c</item>
<item>1f493</item>
+ <!--item>1f920</item-->
+ <!--item>1f921</item-->
+ <!--item>1f922</item-->
+ <item>1f923</item>
+ <item>1f924</item>
+ <!--item>1f925</item-->
+ <item>1f926</item>
+ <!--item>1f927</item-->
+ <item>1f930</item>
+ <item>1f933</item>
+ <item>1f934</item>
+ <item>1f935</item>
+ <item>1f936</item>
+ <item>1f937</item>
<item>1f494</item>
<item>1f495</item>
<item>1f496</item>
@@ -586,6 +603,12 @@
<item>1f44b</item>
<item>1f44f</item>
<item>1f450</item>
+ <item>1f919</item>
+ <item>1f91a</item>
+ <item>1f91b</item>
+ <item>1f91c</item>
+ <item>1f91d</item>
+ <item>1f91e</item>
</array>
<array
name="emoji_objects"
@@ -677,7 +700,7 @@
<item>1f4de</item>
<item>1f4e0</item>
<item>1f4e6</item>
- <item>2709</item>
+ <item>2709,FE0F</item>
<item>1f4e8</item>
<item>1f4e9</item>
<item>1f4ea</item>
@@ -693,15 +716,15 @@
<item>1f4e1</item>
<item>1f4ac</item>
<item>1f4ad</item>
- <item>2712</item>
- <item>270f</item>
+ <item>2712,FE0F</item>
+ <item>270f,FE0F</item>
<item>1f4dd</item>
<item>1f4cf</item>
<item>1f4d0</item>
<item>1f4cd</item>
<item>1f4cc</item>
<item>1f4ce</item>
- <item>2702</item>
+ <item>2702,FE0F</item>
<item>1f4ba</item>
<item>1f4bb</item>
<item>1f4bd</item>
@@ -752,7 +775,19 @@
<item>1f3b7</item>
<item>1f3ba</item>
<item>1f3b8</item>
- <item>303d</item>
+ <item>303d,FE0F</item>
+ <item>1f940</item>
+ <item>1f941</item>
+ <item>1f942</item>
+ <item>1f943</item>
+ <item>1f944</item>
+ <item>1f945</item>
+ <item>1f946</item>
+ <item>1f947</item>
+ <item>1f948</item>
+ <item>1f949</item>
+ <item>1f94a</item>
+ <item>1f94b</item>
</array>
<array
name="emoji_places"
@@ -818,7 +853,7 @@
<item>1f685</item>
<item>1f686</item>
<item>1f687</item>
- <item>24c2</item>
+ <item>24c2,FE0F</item>
<item>1f688</item>
<item>1f68a</item>
<item>1f68b</item>
@@ -847,7 +882,7 @@
<item>1f6a2</item>
<item>1f6a3</item>
<item>1f681</item>
- <item>2708</item>
+ <item>2708,FE0F</item>
<item>1f6c2</item>
<item>1f6c3</item>
<item>1f6c4</item>
@@ -864,12 +899,12 @@
<item>1f6a4</item>
<item>1f6b6</item>
<item>26fd</item>
- <item>1f17f</item>
+ <item>1f17f,FE0F</item>
<item>1f6a5</item>
<item>1f6a6</item>
<item>1f6a7</item>
<item>1f6a8</item>
- <item>2668</item>
+ <item>2668,FE0F</item>
<item>1f48c</item>
<item>1f48d</item>
<item>1f48e</item>
@@ -1120,1596 +1155,2608 @@
<item>1f1ff,1f1f2</item>
<item>1f1ff,1f1fc</item>
</array>
+
+ <!-- Reference: https://unicode.org/emoji/charts/full-emoji-list.html -->
+
<array
name="emoji_emoticons"
format="string"
>
- <item>=-O</item>
- <item>:-P</item>
- <item>;-)</item>
- <item>:-(</item>
- <item>:-)</item>
- <item>:-!</item>
- <item>:-$</item>
- <item>B-)</item>
- <item>:O</item>
- <item>:-*</item>
- <item>:-D</item>
- <item>:\'(</item>
- <item>:-\\</item>
- <item>O:-)</item>
- <item>:-[</item>
+ <item>(╯°</item>
+ <item>□°)</item>
+ <item>╯︵ </item>
+ <item>┻━┻</item>
+ <item> ¯\\_</item>
+ <item>(ツ)</item>
+ <item>_/¯</item>
+ <item>┬─┬</item>
+ <item>︵ /(</item>
+ <item>.□.\\</item>
</array>
<array
name="emoji_eight_symbols"
format="string"
>
- <item>1f3c1</item>
- <item>1f3f3</item>
- <item>1f3f4</item>
- <item>1f6a9</item>
- <item>1f3e7</item>
- <item>1f6ae</item>
- <item>1f6b0</item>
- <item>267f</item>
- <item>1f6b9</item>
- <item>1f6ba</item>
- <item>1f6bb</item>
- <item>1f6bc</item>
- <item>1f6be</item>
- <item>1f6c2</item>
- <item>1f6c3</item>
- <item>1f6c4</item>
- <item>1f6c5</item>
- <item>26a0</item>
- <item>1f6b8</item>
- <item>26d4</item>
- <item>1f6ab</item>
- <item>1f6b3</item>
- <item>1f6ad</item>
- <item>1f6af</item>
- <item>1f6b1</item>
- <item>1f6b7</item>
- <item>2622</item>
- <item>2623</item>
- <item>2b06</item>
- <item>2197</item>
- <item>27a1</item>
- <item>2198</item>
- <item>2b07</item>
- <item>2199</item>
- <item>2b05</item>
- <item>2196</item>
- <item>2195</item>
- <item>2194</item>
- <item>21a9</item>
- <item>21aa</item>
- <item>2934</item>
- <item>2935</item>
- <item>1f503</item>
- <item>1f504</item>
- <item>1f519</item>
- <item>1f51a</item>
- <item>1f51b</item>
- <item>1f51c</item>
- <item>1f51d</item>
- <item>1f6d0</item>
- <item>269b</item>
- <!-- Removed for lack of color glyph support. <item>1f549</item> -->
- <!-- Removed for lack of color glyph support. <item>2721</item> -->
- <!-- Removed for lack of color glyph support. <item>2638</item> -->
- <!-- Removed for lack of color glyph support. <item>262f</item> -->
- <!-- Removed for lack of color glyph support. <item>271d</item> -->
- <!-- Removed for lack of color glyph support. <item>2626</item> -->
- <!-- Removed for lack of color glyph support. <item>262a</item> -->
- <!-- Removed for lack of color glyph support. <item>262e</item> -->
- <!-- Removed for lack of color glyph support. <item>1f54e</item> -->
- <item>1f52f</item>
- <item>267b</item>
- <item>1f4db</item>
- <!-- Removed for lack of color glyph support. <item>269c</item> -->
- <item>1f530</item>
- <item>1f531</item>
- <item>2b55</item>
- <item>2705</item>
- <item>2611</item>
- <item>2714</item>
- <item>2716</item>
- <item>274c</item>
- <item>274e</item>
- <item>2795</item>
- <item>2796</item>
- <item>2797</item>
- <item>27b0</item>
- <item>27bf</item>
- <item>303d</item>
- <item>2733</item>
- <item>2734</item>
- <item>2747</item>
- <item>1f4b1</item>
- <item>1f4b2</item>
- <item>203c</item>
- <item>2049</item>
- <item>2753</item>
- <item>2754</item>
- <item>2755</item>
- <item>2757</item>
- <item>3030</item>
- <item>a9</item>
- <item>ae</item>
- <item>2122</item>
+ <!-- transport-sign -->
+ <item>1F3E7</item>
+ <item>1F6AE</item>
+ <item>1F6B0</item>
+ <item>267F</item>
+ <item>1F6B9</item>
+ <item>1F6BA</item>
+ <item>1F6BB</item>
+ <item>1F6BC</item>
+ <item>1F6BE</item>
+ <item>1F6C2</item>
+ <item>1F6C3</item>
+ <item>1F6C4</item>
+ <item>1F6C5</item>
+ <!-- warning -->
+ <item>26A0,FE0F</item>
+ <item>1F6B8</item>
+ <item>26D4</item>
+ <item>1F6AB</item>
+ <item>1F6B3</item>
+ <item>1F6AD</item>
+ <item>1F6AF</item>
+ <item>1F6B1</item>
+ <item>1F6B7</item>
+ <item>1F4F5</item>
+ <item>1F51E</item>
+ <item>2622,FE0F</item>
+ <item>2623,FE0F</item>
+ <!-- arrow -->
+ <item>2B06,FE0F</item>
+ <item>2197,FE0F</item>
+ <item>27A1,FE0F</item>
+ <item>2198,FE0F</item>
+ <item>2B07,FE0F</item>
+ <item>2199,FE0F</item>
+ <item>2B05,FE0F</item>
+ <item>2196,FE0F</item>
+ <item>2195,FE0F</item>
+ <item>2194,FE0F</item>
+ <item>21A9,FE0F</item>
+ <item>21AA,FE0F</item>
+ <item>2934,FE0F</item>
+ <item>2935,FE0F</item>
+ <item>1F503</item>
+ <item>1F504</item>
+ <item>1F519</item>
+ <item>1F51A</item>
+ <item>1F51B</item>
+ <item>1F51C</item>
+ <item>1F51D</item>
+ <!-- religion -->
+ <item>1F6D0</item>
+ <item>269B,FE0F</item>
+ <item>1F549,FE0F</item>
+ <item>2721,FE0F</item>
+ <item>2638,FE0F</item>
+ <item>262F,FE0F</item>
+ <item>271D,FE0F</item>
+ <item>2626,FE0F</item>
+ <item>262A,FE0F</item>
+ <item>262E,FE0F</item>
+ <item>1F54E</item>
+ <item>1F52F</item>
+ <item>1FAAF</item>
+ <!-- zodiac -->
<item>2648</item>
<item>2649</item>
- <item>264a</item>
- <item>264b</item>
- <item>264c</item>
- <item>264d</item>
- <item>264e</item>
- <item>264f</item>
+ <item>264A</item>
+ <item>264B</item>
+ <item>264C</item>
+ <item>264D</item>
+ <item>264E</item>
+ <item>264F</item>
<item>2650</item>
<item>2651</item>
<item>2652</item>
<item>2653</item>
- <item>26ce</item>
- <item>1f500</item>
- <item>1f501</item>
- <item>1f502</item>
- <item>25b6</item>
- <item>23e9</item>
- <item>23ed</item>
- <item>23ef</item>
- <item>25c0</item>
- <item>23ea</item>
- <item>23ee</item>
- <item>1f53c</item>
- <item>23eb</item>
- <item>1f53d</item>
- <item>23ec</item>
- <item>23f8</item>
- <item>23f9</item>
- <item>23fa</item>
- <item>23cf</item>
- <item>1f3a6</item>
- <item>1f505</item>
- <item>1f506</item>
- <item>1f4f6</item>
- <item>1f4f5</item>
- <item>1f4f3</item>
- <item>1f4f4</item>
- <item>23,20e3</item>
- <item>2a,20e3</item>
- <item>30,20e3</item>
- <item>31,20e3</item>
- <item>32,20e3</item>
- <item>33,20e3</item>
- <item>34,20e3</item>
- <item>35,20e3</item>
- <item>36,20e3</item>
- <item>37,20e3</item>
- <item>38,20e3</item>
- <item>39,20e3</item>
- <item>1f51f</item>
- <item>1f4af</item>
- <item>1f51e</item>
- <item>1f520</item>
- <item>1f521</item>
- <item>1f522</item>
- <item>1f523</item>
- <item>1f524</item>
- <item>1f170</item>
- <item>1f18e</item>
- <item>1f171</item>
- <item>1f191</item>
- <item>1f192</item>
- <item>1f193</item>
- <item>2139</item>
- <item>1f194</item>
- <item>24c2</item>
- <item>1f195</item>
- <item>1f196</item>
- <item>1f17e</item>
- <item>1f197</item>
- <item>1f17f</item>
- <item>1f198</item>
- <item>1f199</item>
- <item>1f19a</item>
- <item>1f201</item>
- <item>1f202</item>
- <item>1f237</item>
- <item>1f236</item>
- <item>1f22f</item>
- <item>1f250</item>
- <item>1f239</item>
- <item>1f21a</item>
- <item>1f232</item>
- <item>1f251</item>
- <item>1f238</item>
- <item>1f234</item>
- <item>1f233</item>
- <item>3297</item>
- <item>3299</item>
- <item>1f23a</item>
- <item>1f235</item>
- <item>25aa</item>
- <item>25ab</item>
- <item>25fb</item>
- <item>25fc</item>
- <item>25fd</item>
- <item>25fe</item>
- <item>2b1b</item>
- <item>2b1c</item>
- <item>1f536</item>
- <item>1f537</item>
- <item>1f538</item>
- <item>1f539</item>
- <item>1f53a</item>
- <item>1f53b</item>
- <item>1f4a0</item>
- <item>1f518</item>
- <item>1f532</item>
- <item>1f533</item>
- <item>26aa</item>
- <item>26ab</item>
- <item>1f534</item>
- <item>1f535</item>
+ <item>26CE</item>
+ <!-- av-symbol -->
+ <item>1F500</item>
+ <item>1F501</item>
+ <item>1F502</item>
+ <item>25B6,FE0F</item>
+ <item>23E9</item>
+ <item>23ED,FE0F</item>
+ <item>23EF,FE0F</item>
+ <item>25C0,FE0F</item>
+ <item>23EA</item>
+ <item>23EE,FE0F</item>
+ <item>1F53C</item>
+ <item>23EB</item>
+ <item>1F53D</item>
+ <item>23EC</item>
+ <item>23F8,FE0F</item>
+ <item>23F9,FE0F</item>
+ <item>23FA,FE0F</item>
+ <item>23CF,FE0F</item>
+ <item>1F3A6</item>
+ <item>1F505</item>
+ <item>1F506</item>
+ <item>1F4F6</item>
+ <item>1F6DC</item>
+ <item>1F4F3</item>
+ <item>1F4F4</item>
+ <!-- gender -->
+ <item>2640,FE0F</item>
+ <item>2642,FE0F</item>
+ <item>26A7,FE0F</item>
+ <!-- math -->
+ <item>2716,FE0F</item>
+ <item>2795</item>
+ <item>2796</item>
+ <item>2797</item>
+ <item>1F7F0</item>
+ <item>267E,FE0F</item>
+ <!-- punctuation -->
+ <item>203C,FE0F</item>
+ <item>2049,FE0F</item>
+ <item>2753</item>
+ <item>2754</item>
+ <item>2755</item>
+ <item>2757</item>
+ <item>3030,FE0F</item>
+ <!-- currency -->
+ <item>1F4B1</item>
+ <item>1F4B2</item>
+ <!-- other-symbol -->
+ <item>2695,FE0F</item>
+ <item>267B,FE0F</item>
+ <item>269C,FE0F</item>
+ <item>1F531</item>
+ <item>1F4DB</item>
+ <item>1F530</item>
+ <item>2B55</item>
+ <item>2705</item>
+ <item>2611,FE0F</item>
+ <item>2714,FE0F</item>
+ <item>274C</item>
+ <item>274E</item>
+ <item>27B0</item>
+ <item>27BF</item>
+ <item>303D,FE0F</item>
+ <item>2733,FE0F</item>
+ <item>2734,FE0F</item>
+ <item>2747,FE0F</item>
+ <item>00A9,FE0F</item>
+ <item>00AE,FE0F</item>
+ <item>2122,FE0F</item>
+ <!-- keycap -->
+ <item>0023,FE0F,20E3</item>
+ <item>002A,FE0F,20E3</item>
+ <item>0030,FE0F,20E3</item>
+ <item>0031,FE0F,20E3</item>
+ <item>0032,FE0F,20E3</item>
+ <item>0033,FE0F,20E3</item>
+ <item>0034,FE0F,20E3</item>
+ <item>0035,FE0F,20E3</item>
+ <item>0036,FE0F,20E3</item>
+ <item>0037,FE0F,20E3</item>
+ <item>0038,FE0F,20E3</item>
+ <item>0039,FE0F,20E3</item>
+ <item>1F51F</item>
+ <!-- alphanum -->
+ <item>1F520</item>
+ <item>1F521</item>
+ <item>1F522</item>
+ <item>1F523</item>
+ <item>1F524</item>
+ <item>1F170,FE0F</item>
+ <item>1F18E</item>
+ <item>1F171,FE0F</item>
+ <item>1F191</item>
+ <item>1F192</item>
+ <item>1F193</item>
+ <item>2139,FE0F</item>
+ <item>1F194</item>
+ <item>24C2,FE0F</item>
+ <item>1F195</item>
+ <item>1F196</item>
+ <item>1F17E,FE0F</item>
+ <item>1F197</item>
+ <item>1F17F,FE0F</item>
+ <item>1F198</item>
+ <item>1F199</item>
+ <item>1F19A</item>
+ <item>1F201</item>
+ <item>1F202,FE0F</item>
+ <item>1F237,FE0F</item>
+ <item>1F236</item>
+ <item>1F22F</item>
+ <item>1F250</item>
+ <item>1F239</item>
+ <item>1F21A</item>
+ <item>1F232</item>
+ <item>1F251</item>
+ <item>1F238</item>
+ <item>1F234</item>
+ <item>1F233</item>
+ <item>3297,FE0F</item>
+ <item>3299,FE0F</item>
+ <item>1F23A</item>
+ <item>1F235</item>
+ <!-- geometric -->
+ <item>1F534</item>
+ <item>1F7E0</item>
+ <item>1F7E1</item>
+ <item>1F7E2</item>
+ <item>1F535</item>
+ <item>1F7E3</item>
+ <item>1F7E4</item>
+ <item>26AB</item>
+ <item>26AA</item>
+ <item>1F7E5</item>
+ <item>1F7E7</item>
+ <item>1F7E8</item>
+ <item>1F7E9</item>
+ <item>1F7E6</item>
+ <item>1F7EA</item>
+ <item>1F7EB</item>
+ <item>2B1B</item>
+ <item>2B1C</item>
+ <item>25FC,FE0F</item>
+ <item>25FB,FE0F</item>
+ <item>25FE</item>
+ <item>25FD</item>
+ <item>25AA,FE0F</item>
+ <item>25AB,FE0F</item>
+ <item>1F536</item>
+ <item>1F537</item>
+ <item>1F538</item>
+ <item>1F539</item>
+ <item>1F53A</item>
+ <item>1F53B</item>
+ <item>1F4A0</item>
+ <item>1F518</item>
+ <item>1F533</item>
+ <item>1F532</item>
</array>
<array
name="emoji_eight_animals_nature"
format="string"
>
- <item>1f435</item>
- <item>1f412</item>
- <item>1f436</item>
- <item>1f415</item>
- <item>1f429</item>
- <item>1f43a</item>
- <item>1f431</item>
- <item>1f408</item>
- <item>1f981</item>
- <item>1f42f</item>
- <item>1f405</item>
- <item>1f406</item>
- <item>1f434</item>
- <item>1f40e</item>
- <item>1f984</item>
- <item>1f42e</item>
- <item>1f402</item>
- <item>1f403</item>
- <item>1f404</item>
- <item>1f437</item>
- <item>1f416</item>
- <item>1f417</item>
- <item>1f43d</item>
- <item>1f40f</item>
- <item>1f411</item>
- <item>1f410</item>
- <item>1f42a</item>
- <item>1f42b</item>
- <item>1f418</item>
- <item>1f42d</item>
- <item>1f401</item>
- <item>1f400</item>
- <item>1f439</item>
- <item>1f430</item>
- <item>1f407</item>
- <item>1f43f</item>
- <item>1f43b</item>
- <item>1f428</item>
- <item>1f43c</item>
- <item>1f43e</item>
- <item>1f983</item>
- <item>1f414</item>
- <item>1f413</item>
- <item>1f423</item>
- <item>1f424</item>
- <item>1f425</item>
- <item>1f426</item>
- <item>1f427</item>
- <item>1f54a</item>
- <item>1f438</item>
- <item>1f40a</item>
- <item>1f422</item>
- <item>1f40d</item>
- <item>1f432</item>
- <item>1f409</item>
- <item>1f433</item>
- <item>1f40b</item>
- <item>1f42c</item>
- <item>1f41f</item>
- <item>1f420</item>
- <item>1f421</item>
- <item>1f419</item>
- <item>1f41a</item>
- <item>1f980</item>
- <item>1f40c</item>
- <item>1f41b</item>
- <item>1f41c</item>
- <item>1f41d</item>
- <item>1f41e</item>
- <item>1f577</item>
- <item>1f578</item>
- <item>1f982</item>
- <item>1f490</item>
- <item>1f338</item>
- <item>1f4ae</item>
- <item>1f3f5</item>
- <item>1f339</item>
- <item>1f33a</item>
- <item>1f33b</item>
- <item>1f33c</item>
- <item>1f337</item>
- <!-- Removed for lack of color glyph support. <item>2618</item> -->
- <item>1f331</item>
- <item>1f332</item>
- <item>1f333</item>
- <item>1f334</item>
- <item>1f335</item>
- <item>1f33e</item>
- <item>1f33f</item>
- <item>1f340</item>
- <item>1f341</item>
- <item>1f342</item>
- <item>1f343</item>
+ <!-- animal-mammal -->
+ <item>1F435</item>
+ <item>1F412</item>
+ <item>1F98D</item>
+ <item>1F9A7</item>
+ <item>1F436</item>
+ <item>1F415</item>
+ <item>1F9AE</item>
+ <item>1F415,200D,1F9BA</item>
+ <item>1F429</item>
+ <item>1F43A</item>
+ <item>1F98A</item>
+ <item>1F99D</item>
+ <item>1F431</item>
+ <item>1F408</item>
+ <item>1F408,200D,2B1B</item>
+ <item>1F981</item>
+ <item>1F42F</item>
+ <item>1F405</item>
+ <item>1F406</item>
+ <item>1F434</item>
+ <item>1FACE</item>
+ <item>1FACF</item>
+ <item>1F40E</item>
+ <item>1F984</item>
+ <item>1F993</item>
+ <item>1F98C</item>
+ <item>1F9AC</item>
+ <item>1F42E</item>
+ <item>1F402</item>
+ <item>1F403</item>
+ <item>1F404</item>
+ <item>1F437</item>
+ <item>1F416</item>
+ <item>1F417</item>
+ <item>1F43D</item>
+ <item>1F40F</item>
+ <item>1F411</item>
+ <item>1F410</item>
+ <item>1F42A</item>
+ <item>1F42B</item>
+ <item>1F999</item>
+ <item>1F992</item>
+ <item>1F418</item>
+ <item>1F9A3</item>
+ <item>1F98F</item>
+ <item>1F99B</item>
+ <item>1F42D</item>
+ <item>1F401</item>
+ <item>1F400</item>
+ <item>1F439</item>
+ <item>1F430</item>
+ <item>1F407</item>
+ <item>1F43F,FE0F</item>
+ <item>1F9AB</item>
+ <item>1F994</item>
+ <item>1F987</item>
+ <item>1F43B</item>
+ <item>1F43B,200D,2744,FE0F</item>
+ <item>1F428</item>
+ <item>1F43C</item>
+ <item>1F9A5</item>
+ <item>1F9A6</item>
+ <item>1F9A8</item>
+ <item>1F998</item>
+ <item>1F9A1</item>
+ <item>1F43E</item>
+ <!-- animal-bird -->
+ <item>1F983</item>
+ <item>1F414</item>
+ <item>1F413</item>
+ <item>1F423</item>
+ <item>1F424</item>
+ <item>1F425</item>
+ <item>1F426</item>
+ <item>1F427</item>
+ <item>1F54A,FE0F</item>
+ <item>1F985</item>
+ <item>1F986</item>
+ <item>1F9A2</item>
+ <item>1F989</item>
+ <item>1F9A4</item>
+ <item>1FAB6</item>
+ <item>1F9A9</item>
+ <item>1F99A</item>
+ <item>1F99C</item>
+ <item>1FABD</item>
+ <item>1F426,200D,2B1B</item>
+ <item>1FABF</item>
+ <!-- animal-amphibian -->
+ <item>1F438</item>
+ <!-- animal-reptile -->
+ <item>1F40A</item>
+ <item>1F422</item>
+ <item>1F98E</item>
+ <item>1F40D</item>
+ <item>1F432</item>
+ <item>1F409</item>
+ <item>1F995</item>
+ <item>1F996</item>
+ <!-- animal-marine -->
+ <item>1F433</item>
+ <item>1F40B</item>
+ <item>1F42C</item>
+ <item>1F9AD</item>
+ <item>1F41F</item>
+ <item>1F420</item>
+ <item>1F421</item>
+ <item>1F988</item>
+ <item>1F419</item>
+ <item>1F41A</item>
+ <item>1FAB8</item>
+ <item>1FABC</item>
+ <!-- animal-bug -->
+ <item>1F40C</item>
+ <item>1F98B</item>
+ <item>1F41B</item>
+ <item>1F41C</item>
+ <item>1F41D</item>
+ <item>1FAB2</item>
+ <item>1F41E</item>
+ <item>1F997</item>
+ <item>1FAB3</item>
+ <item>1F577,FE0F</item>
+ <item>1F578,FE0F</item>
+ <item>1F982</item>
+ <item>1F99F</item>
+ <item>1FAB0</item>
+ <item>1FAB1</item>
+ <item>1F9A0</item>
+ <!-- plant-flower -->
+ <item>1F490</item>
+ <item>1F338</item>
+ <item>1F4AE</item>
+ <item>1FAB7</item>
+ <item>1F3F5,FE0F</item>
+ <item>1F339</item>
+ <item>1F940</item>
+ <item>1F33A</item>
+ <item>1F33B</item>
+ <item>1F33C</item>
+ <item>1F337</item>
+ <item>1FABB</item>
+ <!-- plant-other -->
+ <item>1F331</item>
+ <item>1FAB4</item>
+ <item>1F332</item>
+ <item>1F333</item>
+ <item>1F334</item>
+ <item>1F335</item>
+ <item>1F33E</item>
+ <item>1F33F</item>
+ <item>2618,FE0F</item>
+ <item>1F340</item>
+ <item>1F341</item>
+ <item>1F342</item>
+ <item>1F343</item>
+ <item>1FAB9</item>
+ <item>1FABA</item>
+ <item>1F344</item>
</array>
<array
name="emoji_eight_smiley_people"
format="string"
>
- <item>1f600</item>
- <item>1f601</item>
- <item>1f602</item>
- <item>1f603</item>
- <item>1f604</item>
- <item>1f605</item>
- <item>1f606</item>
- <item>1f609</item>
- <item>1f60a</item>
- <item>1f60b</item>
- <item>1f60e</item>
- <item>1f60d</item>
- <item>1f618</item>
- <item>1f617</item>
- <item>1f619</item>
- <item>1f61a</item>
- <item>263a</item>
- <item>1f642</item>
- <item>1f917</item>
- <item>1f607</item>
- <item>1f914</item>
- <item>1f610</item>
- <item>1f611</item>
- <item>1f636</item>
- <item>1f644</item>
- <item>1f60f</item>
- <item>1f623</item>
- <item>1f625</item>
- <item>1f62e</item>
- <item>1f910</item>
- <item>1f62f</item>
- <item>1f62a</item>
- <item>1f62b</item>
- <item>1f634</item>
- <item>1f60c</item>
- <item>1f913</item>
- <item>1f61b</item>
- <item>1f61c</item>
- <item>1f61d</item>
- <!-- Removed for lack of color glyph support. <item>2639</item> -->
- <item>1f641</item>
- <item>1f612</item>
- <item>1f613</item>
- <item>1f614</item>
- <item>1f615</item>
- <item>1f616</item>
- <item>1f643</item>
- <item>1f637</item>
- <item>1f912</item>
- <item>1f915</item>
- <item>1f911</item>
- <item>1f632</item>
- <item>1f61e</item>
- <item>1f61f</item>
- <item>1f624</item>
- <item>1f622</item>
- <item>1f62d</item>
- <item>1f626</item>
- <item>1f627</item>
- <item>1f628</item>
- <item>1f629</item>
- <item>1f62c</item>
- <item>1f630</item>
- <item>1f631</item>
- <item>1f633</item>
- <item>1f635</item>
- <item>1f621</item>
- <item>1f620</item>
- <item>1f608</item>
- <item>1f47f</item>
- <item>1f479</item>
- <item>1f47a</item>
- <item>1f480</item>
- <!-- Removed for lack of color glyph support. <item>2620</item> -->
- <item>1f47b</item>
- <item>1f47d</item>
- <item>1f47e</item>
- <item>1f916</item>
- <item>1f4a9</item>
- <item>1f63a</item>
- <item>1f638</item>
- <item>1f639</item>
- <item>1f63b</item>
- <item>1f63c</item>
- <item>1f63d</item>
- <item>1f640</item>
- <item>1f63f</item>
- <item>1f63e</item>
- <item>1f648</item>
- <item>1f649</item>
- <item>1f64a</item>
- <item>1f466</item>
- <item>1f467</item>
- <item>1f468</item>
- <item>1f469</item>
- <item>1f474</item>
- <item>1f475</item>
- <item>1f476</item>
- <item>1f471</item>
- <item>1f46e</item>
- <item>1f472</item>
- <item>1f473</item>
- <item>1f477</item>
- <!-- Removed for lack of color glyph support. <item>26d1</item> -->
- <item>1f478</item>
- <item>1f482</item>
- <item>1f575</item>
- <item>1f385</item>
- <item>1f47c</item>
- <item>1f46f</item>
- <item>1f486</item>
- <item>1f487</item>
- <item>1f470</item>
- <item>1f64d</item>
- <item>1f64e</item>
- <item>1f645</item>
- <item>1f646</item>
- <item>1f481</item>
- <item>1f64b</item>
- <item>1f647</item>
- <item>1f64c</item>
- <item>1f64f</item>
- <item>1f5e3</item>
- <item>1f464</item>
- <item>1f465</item>
- <item>1f6b6</item>
- <item>1f3c3</item>
- <item>1f483</item>
- <item>1f574</item>
- <item>1f46b</item>
- <item>1f46c</item>
- <item>1f46d</item>
- <item>1f48f</item>
- <item>1f468,200d,2764,fe0f,200d,1f48b,200d,1f468</item>
- <item>1f469,200d,2764,fe0f,200d,1f48b,200d,1f469</item>
- <item>1f491</item>
- <item>1f468,200d,2764,fe0f,200d,1f468</item>
- <item>1f469,200d,2764,fe0f,200d,1f469</item>
- <item>1f46a</item>
- <item>1f468,200d,1f468,200d,1f466</item>
- <item>1f468,200d,1f468,200d,1f466,200d,1f466</item>
- <item>1f468,200d,1f468,200d,1f467</item>
- <item>1f468,200d,1f468,200d,1f467,200d,1f466</item>
- <item>1f468,200d,1f468,200d,1f467,200d,1f467</item>
- <item>1f468,200d,1f469,200d,1f466</item>
- <item>1f468,200d,1f469,200d,1f466,200d,1f466</item>
- <item>1f468,200d,1f469,200d,1f467</item>
- <item>1f468,200d,1f469,200d,1f467,200d,1f466</item>
- <item>1f468,200d,1f469,200d,1f467,200d,1f467</item>
- <item>1f469,200d,1f469,200d,1f466</item>
- <item>1f469,200d,1f469,200d,1f466,200d,1f466</item>
- <item>1f469,200d,1f469,200d,1f467</item>
- <item>1f469,200d,1f469,200d,1f467,200d,1f466</item>
- <item>1f469,200d,1f469,200d,1f467,200d,1f467</item>
- <!-- Removed for lack of color glyph support. <item>1f3fb</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3fc</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3fd</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3fe</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3ff</item> -->
- <item>1f4aa</item>
- <item>1f448</item>
- <item>1f449</item>
- <item>261d</item>
- <item>1f446</item>
- <item>1f595</item>
- <item>1f447</item>
- <item>270c</item>
- <item>1f596</item>
- <item>1f918</item>
- <item>1f590</item>
- <item>270a</item>
- <item>270b</item>
- <item>1f44a</item>
- <item>1f44c</item>
- <item>1f44d</item>
- <item>1f44e</item>
- <item>1f44b</item>
- <item>1f44f</item>
- <item>1f450</item>
- <!-- Removed for lack of color glyph support. <item>270d</item> -->
- <item>1f485</item>
- <item>1f442</item>
- <item>1f443</item>
- <item>1f463</item>
- <item>1f440</item>
- <item>1f441</item>
- <item>1f445</item>
- <item>1f444</item>
- <item>1f48b</item>
- <item>1f498</item>
- <item>2764</item>
- <item>1f493</item>
- <item>1f494</item>
- <item>1f495</item>
- <item>1f496</item>
- <item>1f497</item>
- <item>1f499</item>
- <item>1f49a</item>
- <item>1f49b</item>
- <item>1f49c</item>
- <item>1f49d</item>
- <item>1f49e</item>
- <item>1f49f</item>
- <!-- Removed for lack of color glyph support. <item>2763</item> -->
- <item>1f48c</item>
- <item>1f4a4</item>
- <item>1f4a2</item>
- <item>1f4a3</item>
- <item>1f4a5</item>
- <item>1f4a6</item>
- <item>1f4a8</item>
- <item>1f4ab</item>
- <item>1f4ac</item>
- <item>1f5e8</item>
- <item>1f5ef</item>
- <item>1f4ad</item>
- <item>1f441,200d,1f5e8</item>
- <item>1f573</item>
- <item>1f453</item>
- <item>1f576</item>
- <item>1f454</item>
- <item>1f455</item>
- <item>1f456</item>
- <item>1f457</item>
- <item>1f458</item>
- <item>1f459</item>
- <item>1f45a</item>
- <item>1f45b</item>
- <item>1f45c</item>
- <item>1f45d</item>
- <item>1f6cd</item>
- <item>1f392</item>
- <item>1f45e</item>
- <item>1f45f</item>
- <item>1f460</item>
- <item>1f461</item>
- <item>1f462</item>
- <item>1f451</item>
- <item>1f452</item>
- <item>1f3a9</item>
- <item>1f393</item>
- <item>1f4ff</item>
- <item>1f484</item>
- <item>1f48d</item>
- <item>1f48e</item>
+ <!-- face-smiling -->
+ <item>1F600</item>
+ <item>1F603</item>
+ <item>1F604</item>
+ <item>1F601</item>
+ <item>1F606</item>
+ <item>1F605</item>
+ <item>1F923</item>
+ <item>1F602</item>
+ <item>1F642</item>
+ <item>1F643</item>
+ <item>1FAE0</item>
+ <item>1F609</item>
+ <item>1F60A</item>
+ <item>1F607</item>
+ <!-- face-affection -->
+ <item>1F970</item>
+ <item>1F60D</item>
+ <item>1F929</item>
+ <item>1F618</item>
+ <item>1F617</item>
+ <item>263A,FE0F</item>
+ <item>1F61A</item>
+ <item>1F619</item>
+ <item>1F972</item>
+ <!-- face-tongue -->
+ <item>1F60B</item>
+ <item>1F61B</item>
+ <item>1F61C</item>
+ <item>1F92A</item>
+ <item>1F61D</item>
+ <item>1F911</item>
+ <!-- face-hand -->
+ <item>1F917</item>
+ <item>1F92D</item>
+ <item>1FAE2</item>
+ <item>1FAE3</item>
+ <item>1F92B</item>
+ <item>1F914</item>
+ <item>1FAE1</item>
+ <!-- face-neutral-skeptical -->
+ <item>1F910</item>
+ <item>1F928</item>
+ <item>1F610</item>
+ <item>1F611</item>
+ <item>1F636</item>
+ <item>1FAE5</item>
+ <item>1F636,200D,1F32B,FE0F</item>
+ <item>1F60F</item>
+ <item>1F612</item>
+ <item>1F644</item>
+ <item>1F62C</item>
+ <item>1F62E,200D,1F4A8</item>
+ <item>1F925</item>
+ <item>1FAE8</item>
+ <!-- face-sleepy -->
+ <item>1F60C</item>
+ <item>1F614</item>
+ <item>1F62A</item>
+ <item>1F924</item>
+ <item>1F634</item>
+ <!-- face-unwell -->
+ <item>1F637</item>
+ <item>1F912</item>
+ <item>1F915</item>
+ <item>1F922</item>
+ <item>1F92E</item>
+ <item>1F927</item>
+ <item>1F975</item>
+ <item>1F976</item>
+ <item>1F974</item>
+ <item>1F635</item>
+ <item>1F635,200D,1F4AB</item>
+ <item>1F92F</item>
+ <!-- face-hat -->
+ <item>1F920</item>
+ <item>1F973</item>
+ <item>1F978</item>
+ <!-- face-glasses -->
+ <item>1F60E</item>
+ <item>1F913</item>
+ <item>1F9D0</item>
+ <!-- face-concerned -->
+ <item>1F615</item>
+ <item>1FAE4</item>
+ <item>1F61F</item>
+ <item>1F641</item>
+ <item>2639,FE0F</item>
+ <item>1F62E</item>
+ <item>1F62F</item>
+ <item>1F632</item>
+ <item>1F633</item>
+ <item>1F97A</item>
+ <item>1F979</item>
+ <item>1F626</item>
+ <item>1F627</item>
+ <item>1F628</item>
+ <item>1F630</item>
+ <item>1F625</item>
+ <item>1F622</item>
+ <item>1F62D</item>
+ <item>1F631</item>
+ <item>1F616</item>
+ <item>1F623</item>
+ <item>1F61E</item>
+ <item>1F613</item>
+ <item>1F629</item>
+ <item>1F62B</item>
+ <item>1F971</item>
+ <!-- face-negative -->
+ <item>1F624</item>
+ <item>1F621</item>
+ <item>1F620</item>
+ <item>1F92C</item>
+ <item>1F608</item>
+ <item>1F47F</item>
+ <item>1F480</item>
+ <item>2620,FE0F</item>
+ <!-- face-costume -->
+ <item>1F4A9</item>
+ <item>1F921</item>
+ <item>1F479</item>
+ <item>1F47A</item>
+ <item>1F47B</item>
+ <item>1F47D</item>
+ <item>1F47E</item>
+ <item>1F916</item>
+ <!-- cat-face -->
+ <item>1F63A</item>
+ <item>1F638</item>
+ <item>1F639</item>
+ <item>1F63B</item>
+ <item>1F63C</item>
+ <item>1F63D</item>
+ <item>1F640</item>
+ <item>1F63F</item>
+ <item>1F63E</item>
+ <!-- monkey-face -->
+ <item>1F648</item>
+ <item>1F649</item>
+ <item>1F64A</item>
+ <!-- heart -->
+ <item>1F48C</item>
+ <item>1F498</item>
+ <item>1F49D</item>
+ <item>1F496</item>
+ <item>1F497</item>
+ <item>1F493</item>
+ <item>1F49E</item>
+ <item>1F495</item>
+ <item>1F49F</item>
+ <item>2763,FE0F</item>
+ <item>1F494</item>
+ <item>2764,FE0F,200D,1F525</item>
+ <item>2764,FE0F,200D,1FA79</item>
+ <item>2764,FE0F</item>
+ <item>1FA77</item>
+ <item>1F9E1</item>
+ <item>1F49B</item>
+ <item>1F49A</item>
+ <item>1F499</item>
+ <item>1FA75</item>
+ <item>1F49C</item>
+ <item>1F90E</item>
+ <item>1F5A4</item>
+ <item>1FA76</item>
+ <item>1F90D</item>
+ <!-- emotion -->
+ <item>1F48B</item>
+ <item>1F4AF</item>
+ <item>1F4A2</item>
+ <item>1F4A5</item>
+ <item>1F4AB</item>
+ <item>1F4A6</item>
+ <item>1F4A8</item>
+ <item>1F573,FE0F</item>
+ <item>1F4AC</item>
+ <item>1F441,FE0F,200D,1F5E8,FE0F</item>
+ <item>1F5E8,FE0F</item>
+ <item>1F5EF,FE0F</item>
+ <item>1F4AD</item>
+ <item>1F4A4</item>
+ <!-- hand-fingers-open -->
+ <item>1F44B</item>
+ <item>1F91A</item>
+ <item>1F590,FE0F</item>
+ <item>270B</item>
+ <item>1F596</item>
+ <item>1FAF1</item>
+ <item>1FAF2</item>
+ <item>1FAF3</item>
+ <item>1FAF4</item>
+ <item>1FAF7</item>
+ <item>1FAF8</item>
+ <!-- hand-fingers-partial -->
+ <item>1F44C</item>
+ <item>1F90C</item>
+ <item>1F90F</item>
+ <item>270C,FE0F</item>
+ <item>1F91E</item>
+ <item>1FAF0</item>
+ <item>1F91F</item>
+ <item>1F918</item>
+ <item>1F919</item>
+ <!-- hand-single-finger -->
+ <item>1F448</item>
+ <item>1F449</item>
+ <item>1F446</item>
+ <item>1F595</item>
+ <item>1F447</item>
+ <item>261D,FE0F</item>
+ <item>1FAF5</item>
+ <!-- hand-fingers-closed -->
+ <item>1F44D</item>
+ <item>1F44E</item>
+ <item>270A</item>
+ <item>1F44A</item>
+ <item>1F91B</item>
+ <item>1F91C</item>
+ <!-- hands -->
+ <item>1F44F</item>
+ <item>1F64C</item>
+ <item>1FAF6</item>
+ <item>1F450</item>
+ <item>1F932</item>
+ <item>1F91D</item>
+ <item>1F64F</item>
+ <!-- hand-prop -->
+ <item>270D,FE0F</item>
+ <item>1F485</item>
+ <item>1F933</item>
+ <!-- body-parts -->
+ <item>1F4AA</item>
+ <item>1F9BE</item>
+ <item>1F9BF</item>
+ <item>1F9B5</item>
+ <item>1F9B6</item>
+ <item>1F442</item>
+ <item>1F9BB</item>
+ <item>1F443</item>
+ <item>1F9E0</item>
+ <item>1FAC0</item>
+ <item>1FAC1</item>
+ <item>1F9B7</item>
+ <item>1F9B4</item>
+ <item>1F440</item>
+ <item>1F441,FE0F</item>
+ <item>1F445</item>
+ <item>1F444</item>
+ <item>1FAE6</item>
+ <!-- person -->
+ <item>1F476</item>
+ <item>1F9D2</item>
+ <item>1F466</item>
+ <item>1F467</item>
+ <item>1F9D1</item>
+ <item>1F471</item>
+ <item>1F468</item>
+ <item>1F9D4</item>
+ <item>1F9D4,200D,2642,FE0F</item>
+ <item>1F9D4,200D,2640,FE0F</item>
+ <item>1F468,200D,1F9B0</item>
+ <item>1F468,200D,1F9B1</item>
+ <item>1F468,200D,1F9B3</item>
+ <item>1F468,200D,1F9B2</item>
+ <item>1F469</item>
+ <item>1F469,200D,1F9B0</item>
+ <item>1F9D1,200D,1F9B0</item>
+ <item>1F469,200D,1F9B1</item>
+ <item>1F9D1,200D,1F9B1</item>
+ <item>1F469,200D,1F9B3</item>
+ <item>1F9D1,200D,1F9B3</item>
+ <item>1F469,200D,1F9B2</item>
+ <item>1F9D1,200D,1F9B2</item>
+ <item>1F471,200D,2640,FE0F</item>
+ <item>1F471,200D,2642,FE0F</item>
+ <item>1F9D3</item>
+ <item>1F474</item>
+ <item>1F475</item>
+ <!-- person-gesture -->
+ <item>1F64D</item>
+ <item>1F64D,200D,2642,FE0F</item>
+ <item>1F64D,200D,2640,FE0F</item>
+ <item>1F64E</item>
+ <item>1F64E,200D,2642,FE0F</item>
+ <item>1F64E,200D,2640,FE0F</item>
+ <item>1F645</item>
+ <item>1F645,200D,2642,FE0F</item>
+ <item>1F645,200D,2640,FE0F</item>
+ <item>1F646</item>
+ <item>1F646,200D,2642,FE0F</item>
+ <item>1F646,200D,2640,FE0F</item>
+ <item>1F481</item>
+ <item>1F481,200D,2642,FE0F</item>
+ <item>1F481,200D,2640,FE0F</item>
+ <item>1F64B</item>
+ <item>1F64B,200D,2642,FE0F</item>
+ <item>1F64B,200D,2640,FE0F</item>
+ <item>1F9CF</item>
+ <item>1F9CF,200D,2642,FE0F</item>
+ <item>1F9CF,200D,2640,FE0F</item>
+ <item>1F647</item>
+ <item>1F647,200D,2642,FE0F</item>
+ <item>1F647,200D,2640,FE0F</item>
+ <item>1F926</item>
+ <item>1F926,200D,2642,FE0F</item>
+ <item>1F926,200D,2640,FE0F</item>
+ <item>1F937</item>
+ <item>1F937,200D,2642,FE0F</item>
+ <item>1F937,200D,2640,FE0F</item>
+ <!-- person-role -->
+ <item>1F9D1,200D,2695,FE0F</item>
+ <item>1F468,200D,2695,FE0F</item>
+ <item>1F469,200D,2695,FE0F</item>
+ <item>1F9D1,200D,1F393</item>
+ <item>1F468,200D,1F393</item>
+ <item>1F469,200D,1F393</item>
+ <item>1F9D1,200D,1F3EB</item>
+ <item>1F468,200D,1F3EB</item>
+ <item>1F469,200D,1F3EB</item>
+ <item>1F9D1,200D,2696,FE0F</item>
+ <item>1F468,200D,2696,FE0F</item>
+ <item>1F469,200D,2696,FE0F</item>
+ <item>1F9D1,200D,1F33E</item>
+ <item>1F468,200D,1F33E</item>
+ <item>1F469,200D,1F33E</item>
+ <item>1F9D1,200D,1F373</item>
+ <item>1F468,200D,1F373</item>
+ <item>1F469,200D,1F373</item>
+ <item>1F9D1,200D,1F527</item>
+ <item>1F468,200D,1F527</item>
+ <item>1F469,200D,1F527</item>
+ <item>1F9D1,200D,1F3ED</item>
+ <item>1F468,200D,1F3ED</item>
+ <item>1F469,200D,1F3ED</item>
+ <item>1F9D1,200D,1F4BC</item>
+ <item>1F468,200D,1F4BC</item>
+ <item>1F469,200D,1F4BC</item>
+ <item>1F9D1,200D,1F52C</item>
+ <item>1F468,200D,1F52C</item>
+ <item>1F469,200D,1F52C</item>
+ <item>1F9D1,200D,1F4BB</item>
+ <item>1F468,200D,1F4BB</item>
+ <item>1F469,200D,1F4BB</item>
+ <item>1F9D1,200D,1F3A4</item>
+ <item>1F468,200D,1F3A4</item>
+ <item>1F469,200D,1F3A4</item>
+ <item>1F9D1,200D,1F3A8</item>
+ <item>1F468,200D,1F3A8</item>
+ <item>1F469,200D,1F3A8</item>
+ <item>1F9D1,200D,2708,FE0F</item>
+ <item>1F468,200D,2708,FE0F</item>
+ <item>1F469,200D,2708,FE0F</item>
+ <item>1F9D1,200D,1F680</item>
+ <item>1F468,200D,1F680</item>
+ <item>1F469,200D,1F680</item>
+ <item>1F9D1,200D,1F692</item>
+ <item>1F468,200D,1F692</item>
+ <item>1F469,200D,1F692</item>
+ <item>1F46E</item>
+ <item>1F46E,200D,2642,FE0F</item>
+ <item>1F46E,200D,2640,FE0F</item>
+ <item>1F575,FE0F</item>
+ <item>1F575,FE0F,200D,2642,FE0F</item>
+ <item>1F575,FE0F,200D,2640,FE0F</item>
+ <item>1F482</item>
+ <item>1F482,200D,2642,FE0F</item>
+ <item>1F482,200D,2640,FE0F</item>
+ <item>1F977</item>
+ <item>1F477</item>
+ <item>1F477,200D,2642,FE0F</item>
+ <item>1F477,200D,2640,FE0F</item>
+ <item>1FAC5</item>
+ <item>1F934</item>
+ <item>1F478</item>
+ <item>1F473</item>
+ <item>1F473,200D,2642,FE0F</item>
+ <item>1F473,200D,2640,FE0F</item>
+ <item>1F472</item>
+ <item>1F9D5</item>
+ <item>1F935</item>
+ <item>1F935,200D,2642,FE0F</item>
+ <item>1F935,200D,2640,FE0F</item>
+ <item>1F470</item>
+ <item>1F470,200D,2642,FE0F</item>
+ <item>1F470,200D,2640,FE0F</item>
+ <item>1F930</item>
+ <item>1FAC3</item>
+ <item>1FAC4</item>
+ <item>1F931</item>
+ <item>1F469,200D,1F37C</item>
+ <item>1F468,200D,1F37C</item>
+ <item>1F9D1,200D,1F37C</item>
+ <!-- person-fantasy -->
+ <item>1F47C</item>
+ <item>1F385</item>
+ <item>1F936</item>
+ <item>1F9D1,200D,1F384</item>
+ <item>1F9B8</item>
+ <item>1F9B8,200D,2642,FE0F</item>
+ <item>1F9B8,200D,2640,FE0F</item>
+ <item>1F9B9</item>
+ <item>1F9B9,200D,2642,FE0F</item>
+ <item>1F9B9,200D,2640,FE0F</item>
+ <item>1F9D9</item>
+ <item>1F9D9,200D,2642,FE0F</item>
+ <item>1F9D9,200D,2640,FE0F</item>
+ <item>1F9DA</item>
+ <item>1F9DA,200D,2642,FE0F</item>
+ <item>1F9DA,200D,2640,FE0F</item>
+ <item>1F9DB</item>
+ <item>1F9DB,200D,2642,FE0F</item>
+ <item>1F9DB,200D,2640,FE0F</item>
+ <item>1F9DC</item>
+ <item>1F9DC,200D,2642,FE0F</item>
+ <item>1F9DC,200D,2640,FE0F</item>
+ <item>1F9DD</item>
+ <item>1F9DD,200D,2642,FE0F</item>
+ <item>1F9DD,200D,2640,FE0F</item>
+ <item>1F9DE</item>
+ <item>1F9DE,200D,2642,FE0F</item>
+ <item>1F9DE,200D,2640,FE0F</item>
+ <item>1F9DF</item>
+ <item>1F9DF,200D,2642,FE0F</item>
+ <item>1F9DF,200D,2640,FE0F</item>
+ <item>1F9CC</item>
+ <!-- person-activity -->
+ <item>1F486</item>
+ <item>1F486,200D,2642,FE0F</item>
+ <item>1F486,200D,2640,FE0F</item>
+ <item>1F487</item>
+ <item>1F487,200D,2642,FE0F</item>
+ <item>1F487,200D,2640,FE0F</item>
+ <item>1F6B6</item>
+ <item>1F6B6,200D,2642,FE0F</item>
+ <item>1F6B6,200D,2640,FE0F</item>
+ <item>1F9CD</item>
+ <item>1F9CD,200D,2642,FE0F</item>
+ <item>1F9CD,200D,2640,FE0F</item>
+ <item>1F9CE</item>
+ <item>1F9CE,200D,2642,FE0F</item>
+ <item>1F9CE,200D,2640,FE0F</item>
+ <item>1F9D1,200D,1F9AF</item>
+ <item>1F468,200D,1F9AF</item>
+ <item>1F469,200D,1F9AF</item>
+ <item>1F9D1,200D,1F9BC</item>
+ <item>1F468,200D,1F9BC</item>
+ <item>1F469,200D,1F9BC</item>
+ <item>1F9D1,200D,1F9BD</item>
+ <item>1F468,200D,1F9BD</item>
+ <item>1F469,200D,1F9BD</item>
+ <item>1F3C3</item>
+ <item>1F3C3,200D,2642,FE0F</item>
+ <item>1F3C3,200D,2640,FE0F</item>
+ <item>1F483</item>
+ <item>1F57A</item>
+ <item>1F574,FE0F</item>
+ <item>1F46F</item>
+ <item>1F46F,200D,2642,FE0F</item>
+ <item>1F46F,200D,2640,FE0F</item>
+ <item>1F9D6</item>
+ <item>1F9D6,200D,2642,FE0F</item>
+ <item>1F9D6,200D,2640,FE0F</item>
+ <item>1F9D7</item>
+ <item>1F9D7,200D,2642,FE0F</item>
+ <item>1F9D7,200D,2640,FE0F</item>
+ <!-- person-sport -->
+ <item>1F93A</item>
+ <item>1F3C7</item>
+ <item>26F7,FE0F</item>
+ <item>1F3C2</item>
+ <item>1F3CC,FE0F</item>
+ <item>1F3CC,FE0F,200D,2642,FE0F</item>
+ <item>1F3CC,FE0F,200D,2640,FE0F</item>
+ <item>1F3C4</item>
+ <item>1F3C4,200D,2642,FE0F</item>
+ <item>1F3C4,200D,2640,FE0F</item>
+ <item>1F6A3</item>
+ <item>1F6A3,200D,2642,FE0F</item>
+ <item>1F6A3,200D,2640,FE0F</item>
+ <item>1F3CA</item>
+ <item>1F3CA,200D,2642,FE0F</item>
+ <item>1F3CA,200D,2640,FE0F</item>
+ <item>26F9,FE0F</item>
+ <item>26F9,FE0F,200D,2642,FE0F</item>
+ <item>26F9,FE0F,200D,2640,FE0F</item>
+ <item>1F3CB,FE0F</item>
+ <item>1F3CB,FE0F,200D,2642,FE0F</item>
+ <item>1F3CB,FE0F,200D,2640,FE0F</item>
+ <item>1F6B4</item>
+ <item>1F6B4,200D,2642,FE0F</item>
+ <item>1F6B4,200D,2640,FE0F</item>
+ <item>1F6B5</item>
+ <item>1F6B5,200D,2642,FE0F</item>
+ <item>1F6B5,200D,2640,FE0F</item>
+ <item>1F938</item>
+ <item>1F938,200D,2642,FE0F</item>
+ <item>1F938,200D,2640,FE0F</item>
+ <item>1F93C</item>
+ <item>1F93C,200D,2642,FE0F</item>
+ <item>1F93C,200D,2640,FE0F</item>
+ <item>1F93D</item>
+ <item>1F93D,200D,2642,FE0F</item>
+ <item>1F93D,200D,2640,FE0F</item>
+ <item>1F93E</item>
+ <item>1F93E,200D,2642,FE0F</item>
+ <item>1F93E,200D,2640,FE0F</item>
+ <item>1F939</item>
+ <item>1F939,200D,2642,FE0F</item>
+ <item>1F939,200D,2640,FE0F</item>
+ <!-- person-resting -->
+ <item>1F9D8</item>
+ <item>1F9D8,200D,2642,FE0F</item>
+ <item>1F9D8,200D,2640,FE0F</item>
+ <item>1F6C0</item>
+ <item>1F6CC</item>
+ <!-- family -->
+ <item>1F9D1,200D,1F91D,200D,1F9D1</item>
+ <item>1F46D</item>
+ <item>1F46B</item>
+ <item>1F46C</item>
+ <item>1F48F</item>
+ <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+ <item>1F468,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+ <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F469</item>
+ <item>1F491</item>
+ <item>1F469,200D,2764,FE0F,200D,1F468</item>
+ <item>1F468,200D,2764,FE0F,200D,1F468</item>
+ <item>1F469,200D,2764,FE0F,200D,1F469</item>
+ <item>1F46A</item>
+ <item>1F468,200D,1F469,200D,1F466</item>
+ <item>1F468,200D,1F469,200D,1F467</item>
+ <item>1F468,200D,1F469,200D,1F467,200D,1F466</item>
+ <item>1F468,200D,1F469,200D,1F466,200D,1F466</item>
+ <item>1F468,200D,1F469,200D,1F467,200D,1F467</item>
+ <item>1F468,200D,1F468,200D,1F466</item>
+ <item>1F468,200D,1F468,200D,1F467</item>
+ <item>1F468,200D,1F468,200D,1F467,200D,1F466</item>
+ <item>1F468,200D,1F468,200D,1F466,200D,1F466</item>
+ <item>1F468,200D,1F468,200D,1F467,200D,1F467</item>
+ <item>1F469,200D,1F469,200D,1F466</item>
+ <item>1F469,200D,1F469,200D,1F467</item>
+ <item>1F469,200D,1F469,200D,1F467,200D,1F466</item>
+ <item>1F469,200D,1F469,200D,1F466,200D,1F466</item>
+ <item>1F469,200D,1F469,200D,1F467,200D,1F467</item>
+ <item>1F468,200D,1F466</item>
+ <item>1F468,200D,1F466,200D,1F466</item>
+ <item>1F468,200D,1F467</item>
+ <item>1F468,200D,1F467,200D,1F466</item>
+ <item>1F468,200D,1F467,200D,1F467</item>
+ <item>1F469,200D,1F466</item>
+ <item>1F469,200D,1F466,200D,1F466</item>
+ <item>1F469,200D,1F467</item>
+ <item>1F469,200D,1F467,200D,1F466</item>
+ <item>1F469,200D,1F467,200D,1F467</item>
+ <!-- person-symbol -->
+ <item>1F5E3,FE0F</item>
+ <item>1F464</item>
+ <item>1F465</item>
+ <item>1FAC2</item>
+ <item>1F463</item>
+ <!-- hair-style -->
+ <item>1F9B0</item>
+ <item>1F9B1</item>
+ <item>1F9B3</item>
+ <item>1F9B2</item>
</array>
<array
name="emoji_eight_smiley_people_boring"
format="string"
>
- <item>1f600</item>
- <item>1f601</item>
- <item>1f602</item>
- <item>1f603</item>
- <item>1f604</item>
- <item>1f605</item>
- <item>1f606</item>
- <item>1f609</item>
- <item>1f60a</item>
- <item>1f60b</item>
- <item>1f60e</item>
- <item>1f60d</item>
- <item>1f618</item>
- <item>1f617</item>
- <item>1f619</item>
- <item>1f61a</item>
- <item>263a</item>
- <item>1f642</item>
- <item>1f917</item>
- <item>1f607</item>
- <item>1f914</item>
- <item>1f610</item>
- <item>1f611</item>
- <item>1f636</item>
- <item>1f644</item>
- <item>1f60f</item>
- <item>1f623</item>
- <item>1f625</item>
- <item>1f62e</item>
- <item>1f910</item>
- <item>1f62f</item>
- <item>1f62a</item>
- <item>1f62b</item>
- <item>1f634</item>
- <item>1f60c</item>
- <item>1f913</item>
- <item>1f61b</item>
- <item>1f61c</item>
- <item>1f61d</item>
- <!-- Removed for lack of color glyph support. <item>2639</item> -->
- <item>1f641</item>
- <item>1f612</item>
- <item>1f613</item>
- <item>1f614</item>
- <item>1f615</item>
- <item>1f616</item>
- <item>1f643</item>
- <item>1f637</item>
- <item>1f912</item>
- <item>1f915</item>
- <item>1f911</item>
- <item>1f632</item>
- <item>1f61e</item>
- <item>1f61f</item>
- <item>1f624</item>
- <item>1f622</item>
- <item>1f62d</item>
- <item>1f626</item>
- <item>1f627</item>
- <item>1f628</item>
- <item>1f629</item>
- <item>1f62c</item>
- <item>1f630</item>
- <item>1f631</item>
- <item>1f633</item>
- <item>1f635</item>
- <item>1f621</item>
- <item>1f620</item>
- <item>1f608</item>
- <item>1f47f</item>
- <item>1f479</item>
- <item>1f47a</item>
- <item>1f480</item>
- <!-- Removed for lack of color glyph support. <item>2620</item> -->
- <item>1f47b</item>
- <item>1f47d</item>
- <item>1f47e</item>
- <item>1f916</item>
- <item>1f4a9</item>
- <item>1f63a</item>
- <item>1f638</item>
- <item>1f639</item>
- <item>1f63b</item>
- <item>1f63c</item>
- <item>1f63d</item>
- <item>1f640</item>
- <item>1f63f</item>
- <item>1f63e</item>
- <item>1f648</item>
- <item>1f649</item>
- <item>1f64a</item>
- <item>1f466</item>
- <item>1f467</item>
- <item>1f468</item>
- <item>1f469</item>
- <item>1f474</item>
- <item>1f475</item>
- <item>1f476</item>
- <item>1f471</item>
- <item>1f46e</item>
- <item>1f472</item>
- <item>1f473</item>
- <item>1f477</item>
- <!-- Removed for lack of color glyph support. <item>26d1</item> -->
- <item>1f478</item>
- <item>1f482</item>
- <item>1f575</item>
- <item>1f385</item>
- <item>1f47c</item>
- <item>1f46f</item>
- <item>1f486</item>
- <item>1f487</item>
- <item>1f470</item>
- <item>1f64d</item>
- <item>1f64e</item>
- <item>1f645</item>
- <item>1f646</item>
- <item>1f481</item>
- <item>1f64b</item>
- <item>1f647</item>
- <item>1f64c</item>
- <item>1f64f</item>
- <item>1f5e3</item>
- <item>1f464</item>
- <item>1f465</item>
- <item>1f6b6</item>
- <item>1f3c3</item>
- <item>1f483</item>
- <item>1f574</item>
- <item>1f46b</item>
- <item>1f46c</item>
- <item>1f46d</item>
- <item>1f48f</item>
- <item>1f491</item>
- <item>1f46a</item>
- <!-- Removed for lack of color glyph support. <item>1f3fb</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3fc</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3fd</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3fe</item> -->
- <!-- Removed for lack of color glyph support. <item>1f3ff</item> -->
- <item>1f4aa</item>
- <item>1f448</item>
- <item>1f449</item>
- <item>261d</item>
- <item>1f446</item>
- <item>1f595</item>
- <item>1f447</item>
- <item>270c</item>
- <item>1f596</item>
- <item>1f918</item>
- <item>1f590</item>
- <item>270a</item>
- <item>270b</item>
- <item>1f44a</item>
- <item>1f44c</item>
- <item>1f44d</item>
- <item>1f44e</item>
- <item>1f44b</item>
- <item>1f44f</item>
- <item>1f450</item>
- <!-- Removed for lack of color glyph support. <item>270d</item> -->
- <item>1f485</item>
- <item>1f442</item>
- <item>1f443</item>
- <item>1f463</item>
- <item>1f440</item>
- <item>1f441</item>
- <item>1f445</item>
- <item>1f444</item>
- <item>1f48b</item>
- <item>1f498</item>
- <item>2764</item>
- <item>1f493</item>
- <item>1f494</item>
- <item>1f495</item>
- <item>1f496</item>
- <item>1f497</item>
- <item>1f499</item>
- <item>1f49a</item>
- <item>1f49b</item>
- <item>1f49c</item>
- <item>1f49d</item>
- <item>1f49e</item>
- <item>1f49f</item>
- <!-- Removed for lack of color glyph support. <item>2763</item> -->
- <item>1f48c</item>
- <item>1f4a4</item>
- <item>1f4a2</item>
- <item>1f4a3</item>
- <item>1f4a5</item>
- <item>1f4a6</item>
- <item>1f4a8</item>
- <item>1f4ab</item>
- <item>1f4ac</item>
- <item>1f5e8</item>
- <item>1f5ef</item>
- <item>1f4ad</item>
- <item>1f573</item>
- <item>1f453</item>
- <item>1f576</item>
- <item>1f454</item>
- <item>1f455</item>
- <item>1f456</item>
- <item>1f457</item>
- <item>1f458</item>
- <item>1f459</item>
- <item>1f45a</item>
- <item>1f45b</item>
- <item>1f45c</item>
- <item>1f45d</item>
- <item>1f6cd</item>
- <item>1f392</item>
- <item>1f45e</item>
- <item>1f45f</item>
- <item>1f460</item>
- <item>1f461</item>
- <item>1f462</item>
- <item>1f451</item>
- <item>1f452</item>
- <item>1f3a9</item>
- <item>1f393</item>
- <item>1f4ff</item>
- <item>1f484</item>
- <item>1f48d</item>
- <item>1f48e</item>
+ <!-- face-smiling -->
+ <item>1F600</item>
+ <item>1F603</item>
+ <item>1F604</item>
+ <item>1F601</item>
+ <item>1F606</item>
+ <item>1F605</item>
+ <item>1F923</item>
+ <item>1F602</item>
+ <item>1F642</item>
+ <item>1F643</item>
+ <item>1FAE0</item>
+ <item>1F609</item>
+ <item>1F60A</item>
+ <item>1F607</item>
+ <!-- face-affection -->
+ <item>1F970</item>
+ <item>1F60D</item>
+ <item>1F929</item>
+ <item>1F618</item>
+ <item>1F617</item>
+ <item>263A,FE0F</item>
+ <item>1F61A</item>
+ <item>1F619</item>
+ <item>1F972</item>
+ <!-- face-tongue -->
+ <item>1F60B</item>
+ <item>1F61B</item>
+ <item>1F61C</item>
+ <item>1F92A</item>
+ <item>1F61D</item>
+ <item>1F911</item>
+ <!-- face-hand -->
+ <item>1F917</item>
+ <item>1F92D</item>
+ <item>1FAE2</item>
+ <item>1FAE3</item>
+ <item>1F92B</item>
+ <item>1F914</item>
+ <item>1FAE1</item>
+ <!-- face-neutral-skeptical -->
+ <item>1F910</item>
+ <item>1F928</item>
+ <item>1F610</item>
+ <item>1F611</item>
+ <item>1F636</item>
+ <item>1FAE5</item>
+ <item>1F636,200D,1F32B,FE0F</item>
+ <item>1F60F</item>
+ <item>1F612</item>
+ <item>1F644</item>
+ <item>1F62C</item>
+ <item>1F62E,200D,1F4A8</item>
+ <item>1F925</item>
+ <item>1FAE8</item>
+ <!-- face-sleepy -->
+ <item>1F60C</item>
+ <item>1F614</item>
+ <item>1F62A</item>
+ <item>1F924</item>
+ <item>1F634</item>
+ <!-- face-unwell -->
+ <item>1F637</item>
+ <item>1F912</item>
+ <item>1F915</item>
+ <item>1F922</item>
+ <item>1F92E</item>
+ <item>1F927</item>
+ <item>1F975</item>
+ <item>1F976</item>
+ <item>1F974</item>
+ <item>1F635</item>
+ <item>1F635,200D,1F4AB</item>
+ <item>1F92F</item>
+ <!-- face-hat -->
+ <item>1F920</item>
+ <item>1F973</item>
+ <item>1F978</item>
+ <!-- face-glasses -->
+ <item>1F60E</item>
+ <item>1F913</item>
+ <item>1F9D0</item>
+ <!-- face-concerned -->
+ <item>1F615</item>
+ <item>1FAE4</item>
+ <item>1F61F</item>
+ <item>1F641</item>
+ <item>2639,FE0F</item>
+ <item>1F62E</item>
+ <item>1F62F</item>
+ <item>1F632</item>
+ <item>1F633</item>
+ <item>1F97A</item>
+ <item>1F979</item>
+ <item>1F626</item>
+ <item>1F627</item>
+ <item>1F628</item>
+ <item>1F630</item>
+ <item>1F625</item>
+ <item>1F622</item>
+ <item>1F62D</item>
+ <item>1F631</item>
+ <item>1F616</item>
+ <item>1F623</item>
+ <item>1F61E</item>
+ <item>1F613</item>
+ <item>1F629</item>
+ <item>1F62B</item>
+ <item>1F971</item>
+ <!-- face-negative -->
+ <item>1F624</item>
+ <item>1F621</item>
+ <item>1F620</item>
+ <item>1F92C</item>
+ <item>1F608</item>
+ <item>1F47F</item>
+ <item>1F480</item>
+ <item>2620,FE0F</item>
+ <!-- face-costume -->
+ <item>1F4A9</item>
+ <item>1F921</item>
+ <item>1F479</item>
+ <item>1F47A</item>
+ <item>1F47B</item>
+ <item>1F47D</item>
+ <item>1F47E</item>
+ <item>1F916</item>
+ <!-- cat-face -->
+ <item>1F63A</item>
+ <item>1F638</item>
+ <item>1F639</item>
+ <item>1F63B</item>
+ <item>1F63C</item>
+ <item>1F63D</item>
+ <item>1F640</item>
+ <item>1F63F</item>
+ <item>1F63E</item>
+ <!-- monkey-face -->
+ <item>1F648</item>
+ <item>1F649</item>
+ <item>1F64A</item>
+ <!-- heart -->
+ <item>1F48C</item>
+ <item>1F498</item>
+ <item>1F49D</item>
+ <item>1F496</item>
+ <item>1F497</item>
+ <item>1F493</item>
+ <item>1F49E</item>
+ <item>1F495</item>
+ <item>1F49F</item>
+ <item>2763,FE0F</item>
+ <item>1F494</item>
+ <item>2764,FE0F,200D,1F525</item>
+ <item>2764,FE0F,200D,1FA79</item>
+ <item>2764,FE0F</item>
+ <item>1FA77</item>
+ <item>1F9E1</item>
+ <item>1F49B</item>
+ <item>1F49A</item>
+ <item>1F499</item>
+ <item>1FA75</item>
+ <item>1F49C</item>
+ <item>1F90E</item>
+ <item>1F5A4</item>
+ <item>1FA76</item>
+ <item>1F90D</item>
+ <!-- emotion -->
+ <item>1F48B</item>
+ <item>1F4AF</item>
+ <item>1F4A2</item>
+ <item>1F4A5</item>
+ <item>1F4AB</item>
+ <item>1F4A6</item>
+ <item>1F4A8</item>
+ <item>1F573,FE0F</item>
+ <item>1F4AC</item>
+ <item>1F441,FE0F,200D,1F5E8,FE0F</item>
+ <item>1F5E8,FE0F</item>
+ <item>1F5EF,FE0F</item>
+ <item>1F4AD</item>
+ <item>1F4A4</item>
+ <!-- hand-fingers-open -->
+ <item>1F44B</item>
+ <item>1F91A</item>
+ <item>1F590,FE0F</item>
+ <item>270B</item>
+ <item>1F596</item>
+ <item>1FAF1</item>
+ <item>1FAF2</item>
+ <item>1FAF3</item>
+ <item>1FAF4</item>
+ <item>1FAF7</item>
+ <item>1FAF8</item>
+ <!-- hand-fingers-partial -->
+ <item>1F44C</item>
+ <item>1F90C</item>
+ <item>1F90F</item>
+ <item>270C,FE0F</item>
+ <item>1F91E</item>
+ <item>1FAF0</item>
+ <item>1F91F</item>
+ <item>1F918</item>
+ <item>1F919</item>
+ <!-- hand-single-finger -->
+ <item>1F448</item>
+ <item>1F449</item>
+ <item>1F446</item>
+ <item>1F595</item>
+ <item>1F447</item>
+ <item>261D,FE0F</item>
+ <item>1FAF5</item>
+ <!-- hand-fingers-closed -->
+ <item>1F44D</item>
+ <item>1F44E</item>
+ <item>270A</item>
+ <item>1F44A</item>
+ <item>1F91B</item>
+ <item>1F91C</item>
+ <!-- hands -->
+ <item>1F44F</item>
+ <item>1F64C</item>
+ <item>1FAF6</item>
+ <item>1F450</item>
+ <item>1F932</item>
+ <item>1F91D</item>
+ <item>1F64F</item>
+ <!-- hand-prop -->
+ <item>270D,FE0F</item>
+ <item>1F485</item>
+ <item>1F933</item>
+ <!-- body-parts -->
+ <item>1F4AA</item>
+ <item>1F9BE</item>
+ <item>1F9BF</item>
+ <item>1F9B5</item>
+ <item>1F9B6</item>
+ <item>1F442</item>
+ <item>1F9BB</item>
+ <item>1F443</item>
+ <item>1F9E0</item>
+ <item>1FAC0</item>
+ <item>1FAC1</item>
+ <item>1F9B7</item>
+ <item>1F9B4</item>
+ <item>1F440</item>
+ <item>1F441,FE0F</item>
+ <item>1F445</item>
+ <item>1F444</item>
+ <item>1FAE6</item>
+ <!-- person -->
+ <item>1F476</item>
+ <item>1F9D2</item>
+ <item>1F466</item>
+ <item>1F467</item>
+ <item>1F9D1</item>
+ <item>1F471</item>
+ <item>1F468</item>
+ <item>1F9D4</item>
+ <item>1F9D4,200D,2642,FE0F</item>
+ <item>1F9D4,200D,2640,FE0F</item>
+ <item>1F468,200D,1F9B0</item>
+ <item>1F468,200D,1F9B1</item>
+ <item>1F468,200D,1F9B3</item>
+ <item>1F468,200D,1F9B2</item>
+ <item>1F469</item>
+ <item>1F469,200D,1F9B0</item>
+ <item>1F9D1,200D,1F9B0</item>
+ <item>1F469,200D,1F9B1</item>
+ <item>1F9D1,200D,1F9B1</item>
+ <item>1F469,200D,1F9B3</item>
+ <item>1F9D1,200D,1F9B3</item>
+ <item>1F469,200D,1F9B2</item>
+ <item>1F9D1,200D,1F9B2</item>
+ <item>1F471,200D,2640,FE0F</item>
+ <item>1F471,200D,2642,FE0F</item>
+ <item>1F9D3</item>
+ <item>1F474</item>
+ <item>1F475</item>
+ <!-- person-gesture -->
+ <item>1F64D</item>
+ <item>1F64D,200D,2642,FE0F</item>
+ <item>1F64D,200D,2640,FE0F</item>
+ <item>1F64E</item>
+ <item>1F64E,200D,2642,FE0F</item>
+ <item>1F64E,200D,2640,FE0F</item>
+ <item>1F645</item>
+ <item>1F645,200D,2642,FE0F</item>
+ <item>1F645,200D,2640,FE0F</item>
+ <item>1F646</item>
+ <item>1F646,200D,2642,FE0F</item>
+ <item>1F646,200D,2640,FE0F</item>
+ <item>1F481</item>
+ <item>1F481,200D,2642,FE0F</item>
+ <item>1F481,200D,2640,FE0F</item>
+ <item>1F64B</item>
+ <item>1F64B,200D,2642,FE0F</item>
+ <item>1F64B,200D,2640,FE0F</item>
+ <item>1F9CF</item>
+ <item>1F9CF,200D,2642,FE0F</item>
+ <item>1F9CF,200D,2640,FE0F</item>
+ <item>1F647</item>
+ <item>1F647,200D,2642,FE0F</item>
+ <item>1F647,200D,2640,FE0F</item>
+ <item>1F926</item>
+ <item>1F926,200D,2642,FE0F</item>
+ <item>1F926,200D,2640,FE0F</item>
+ <item>1F937</item>
+ <item>1F937,200D,2642,FE0F</item>
+ <item>1F937,200D,2640,FE0F</item>
+ <!-- person-role -->
+ <item>1F9D1,200D,2695,FE0F</item>
+ <item>1F468,200D,2695,FE0F</item>
+ <item>1F469,200D,2695,FE0F</item>
+ <item>1F9D1,200D,1F393</item>
+ <item>1F468,200D,1F393</item>
+ <item>1F469,200D,1F393</item>
+ <item>1F9D1,200D,1F3EB</item>
+ <item>1F468,200D,1F3EB</item>
+ <item>1F469,200D,1F3EB</item>
+ <item>1F9D1,200D,2696,FE0F</item>
+ <item>1F468,200D,2696,FE0F</item>
+ <item>1F469,200D,2696,FE0F</item>
+ <item>1F9D1,200D,1F33E</item>
+ <item>1F468,200D,1F33E</item>
+ <item>1F469,200D,1F33E</item>
+ <item>1F9D1,200D,1F373</item>
+ <item>1F468,200D,1F373</item>
+ <item>1F469,200D,1F373</item>
+ <item>1F9D1,200D,1F527</item>
+ <item>1F468,200D,1F527</item>
+ <item>1F469,200D,1F527</item>
+ <item>1F9D1,200D,1F3ED</item>
+ <item>1F468,200D,1F3ED</item>
+ <item>1F469,200D,1F3ED</item>
+ <item>1F9D1,200D,1F4BC</item>
+ <item>1F468,200D,1F4BC</item>
+ <item>1F469,200D,1F4BC</item>
+ <item>1F9D1,200D,1F52C</item>
+ <item>1F468,200D,1F52C</item>
+ <item>1F469,200D,1F52C</item>
+ <item>1F9D1,200D,1F4BB</item>
+ <item>1F468,200D,1F4BB</item>
+ <item>1F469,200D,1F4BB</item>
+ <item>1F9D1,200D,1F3A4</item>
+ <item>1F468,200D,1F3A4</item>
+ <item>1F469,200D,1F3A4</item>
+ <item>1F9D1,200D,1F3A8</item>
+ <item>1F468,200D,1F3A8</item>
+ <item>1F469,200D,1F3A8</item>
+ <item>1F9D1,200D,2708,FE0F</item>
+ <item>1F468,200D,2708,FE0F</item>
+ <item>1F469,200D,2708,FE0F</item>
+ <item>1F9D1,200D,1F680</item>
+ <item>1F468,200D,1F680</item>
+ <item>1F469,200D,1F680</item>
+ <item>1F9D1,200D,1F692</item>
+ <item>1F468,200D,1F692</item>
+ <item>1F469,200D,1F692</item>
+ <item>1F46E</item>
+ <item>1F46E,200D,2642,FE0F</item>
+ <item>1F46E,200D,2640,FE0F</item>
+ <item>1F575,FE0F</item>
+ <item>1F575,FE0F,200D,2642,FE0F</item>
+ <item>1F575,FE0F,200D,2640,FE0F</item>
+ <item>1F482</item>
+ <item>1F482,200D,2642,FE0F</item>
+ <item>1F482,200D,2640,FE0F</item>
+ <item>1F977</item>
+ <item>1F477</item>
+ <item>1F477,200D,2642,FE0F</item>
+ <item>1F477,200D,2640,FE0F</item>
+ <item>1FAC5</item>
+ <item>1F934</item>
+ <item>1F478</item>
+ <item>1F473</item>
+ <item>1F473,200D,2642,FE0F</item>
+ <item>1F473,200D,2640,FE0F</item>
+ <item>1F472</item>
+ <item>1F9D5</item>
+ <item>1F935</item>
+ <item>1F935,200D,2642,FE0F</item>
+ <item>1F935,200D,2640,FE0F</item>
+ <item>1F470</item>
+ <item>1F470,200D,2642,FE0F</item>
+ <item>1F470,200D,2640,FE0F</item>
+ <item>1F930</item>
+ <item>1FAC3</item>
+ <item>1FAC4</item>
+ <item>1F931</item>
+ <item>1F469,200D,1F37C</item>
+ <item>1F468,200D,1F37C</item>
+ <item>1F9D1,200D,1F37C</item>
+ <!-- person-fantasy -->
+ <item>1F47C</item>
+ <item>1F385</item>
+ <item>1F936</item>
+ <item>1F9D1,200D,1F384</item>
+ <item>1F9B8</item>
+ <item>1F9B8,200D,2642,FE0F</item>
+ <item>1F9B8,200D,2640,FE0F</item>
+ <item>1F9B9</item>
+ <item>1F9B9,200D,2642,FE0F</item>
+ <item>1F9B9,200D,2640,FE0F</item>
+ <item>1F9D9</item>
+ <item>1F9D9,200D,2642,FE0F</item>
+ <item>1F9D9,200D,2640,FE0F</item>
+ <item>1F9DA</item>
+ <item>1F9DA,200D,2642,FE0F</item>
+ <item>1F9DA,200D,2640,FE0F</item>
+ <item>1F9DB</item>
+ <item>1F9DB,200D,2642,FE0F</item>
+ <item>1F9DB,200D,2640,FE0F</item>
+ <item>1F9DC</item>
+ <item>1F9DC,200D,2642,FE0F</item>
+ <item>1F9DC,200D,2640,FE0F</item>
+ <item>1F9DD</item>
+ <item>1F9DD,200D,2642,FE0F</item>
+ <item>1F9DD,200D,2640,FE0F</item>
+ <item>1F9DE</item>
+ <item>1F9DE,200D,2642,FE0F</item>
+ <item>1F9DE,200D,2640,FE0F</item>
+ <item>1F9DF</item>
+ <item>1F9DF,200D,2642,FE0F</item>
+ <item>1F9DF,200D,2640,FE0F</item>
+ <item>1F9CC</item>
+ <!-- person-activity -->
+ <item>1F486</item>
+ <item>1F486,200D,2642,FE0F</item>
+ <item>1F486,200D,2640,FE0F</item>
+ <item>1F487</item>
+ <item>1F487,200D,2642,FE0F</item>
+ <item>1F487,200D,2640,FE0F</item>
+ <item>1F6B6</item>
+ <item>1F6B6,200D,2642,FE0F</item>
+ <item>1F6B6,200D,2640,FE0F</item>
+ <item>1F9CD</item>
+ <item>1F9CD,200D,2642,FE0F</item>
+ <item>1F9CD,200D,2640,FE0F</item>
+ <item>1F9CE</item>
+ <item>1F9CE,200D,2642,FE0F</item>
+ <item>1F9CE,200D,2640,FE0F</item>
+ <item>1F9D1,200D,1F9AF</item>
+ <item>1F468,200D,1F9AF</item>
+ <item>1F469,200D,1F9AF</item>
+ <item>1F9D1,200D,1F9BC</item>
+ <item>1F468,200D,1F9BC</item>
+ <item>1F469,200D,1F9BC</item>
+ <item>1F9D1,200D,1F9BD</item>
+ <item>1F468,200D,1F9BD</item>
+ <item>1F469,200D,1F9BD</item>
+ <item>1F3C3</item>
+ <item>1F3C3,200D,2642,FE0F</item>
+ <item>1F3C3,200D,2640,FE0F</item>
+ <item>1F483</item>
+ <item>1F57A</item>
+ <item>1F574,FE0F</item>
+ <item>1F46F</item>
+ <item>1F46F,200D,2642,FE0F</item>
+ <item>1F46F,200D,2640,FE0F</item>
+ <item>1F9D6</item>
+ <item>1F9D6,200D,2642,FE0F</item>
+ <item>1F9D6,200D,2640,FE0F</item>
+ <item>1F9D7</item>
+ <item>1F9D7,200D,2642,FE0F</item>
+ <item>1F9D7,200D,2640,FE0F</item>
+ <!-- person-sport -->
+ <item>1F93A</item>
+ <item>1F3C7</item>
+ <item>26F7,FE0F</item>
+ <item>1F3C2</item>
+ <item>1F3CC,FE0F</item>
+ <item>1F3CC,FE0F,200D,2642,FE0F</item>
+ <item>1F3CC,FE0F,200D,2640,FE0F</item>
+ <item>1F3C4</item>
+ <item>1F3C4,200D,2642,FE0F</item>
+ <item>1F3C4,200D,2640,FE0F</item>
+ <item>1F6A3</item>
+ <item>1F6A3,200D,2642,FE0F</item>
+ <item>1F6A3,200D,2640,FE0F</item>
+ <item>1F3CA</item>
+ <item>1F3CA,200D,2642,FE0F</item>
+ <item>1F3CA,200D,2640,FE0F</item>
+ <item>26F9,FE0F</item>
+ <item>26F9,FE0F,200D,2642,FE0F</item>
+ <item>26F9,FE0F,200D,2640,FE0F</item>
+ <item>1F3CB,FE0F</item>
+ <item>1F3CB,FE0F,200D,2642,FE0F</item>
+ <item>1F3CB,FE0F,200D,2640,FE0F</item>
+ <item>1F6B4</item>
+ <item>1F6B4,200D,2642,FE0F</item>
+ <item>1F6B4,200D,2640,FE0F</item>
+ <item>1F6B5</item>
+ <item>1F6B5,200D,2642,FE0F</item>
+ <item>1F6B5,200D,2640,FE0F</item>
+ <item>1F938</item>
+ <item>1F938,200D,2642,FE0F</item>
+ <item>1F938,200D,2640,FE0F</item>
+ <item>1F93C</item>
+ <item>1F93C,200D,2642,FE0F</item>
+ <item>1F93C,200D,2640,FE0F</item>
+ <item>1F93D</item>
+ <item>1F93D,200D,2642,FE0F</item>
+ <item>1F93D,200D,2640,FE0F</item>
+ <item>1F93E</item>
+ <item>1F93E,200D,2642,FE0F</item>
+ <item>1F93E,200D,2640,FE0F</item>
+ <item>1F939</item>
+ <item>1F939,200D,2642,FE0F</item>
+ <item>1F939,200D,2640,FE0F</item>
+ <!-- person-resting -->
+ <item>1F9D8</item>
+ <item>1F9D8,200D,2642,FE0F</item>
+ <item>1F9D8,200D,2640,FE0F</item>
+ <item>1F6C0</item>
+ <item>1F6CC</item>
+ <!-- family -->
+ <item>1F9D1,200D,1F91D,200D,1F9D1</item>
+ <item>1F46D</item>
+ <item>1F46B</item>
+ <item>1F46C</item>
+ <item>1F48F</item>
+ <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+ <item>1F468,200D,2764,FE0F,200D,1F48B,200D,1F468</item>
+ <item>1F469,200D,2764,FE0F,200D,1F48B,200D,1F469</item>
+ <item>1F491</item>
+ <item>1F469,200D,2764,FE0F,200D,1F468</item>
+ <item>1F468,200D,2764,FE0F,200D,1F468</item>
+ <item>1F469,200D,2764,FE0F,200D,1F469</item>
+ <item>1F46A</item>
+ <item>1F468,200D,1F469,200D,1F466</item>
+ <item>1F468,200D,1F469,200D,1F467</item>
+ <item>1F468,200D,1F469,200D,1F467,200D,1F466</item>
+ <item>1F468,200D,1F469,200D,1F466,200D,1F466</item>
+ <item>1F468,200D,1F469,200D,1F467,200D,1F467</item>
+ <item>1F468,200D,1F468,200D,1F466</item>
+ <item>1F468,200D,1F468,200D,1F467</item>
+ <item>1F468,200D,1F468,200D,1F467,200D,1F466</item>
+ <item>1F468,200D,1F468,200D,1F466,200D,1F466</item>
+ <item>1F468,200D,1F468,200D,1F467,200D,1F467</item>
+ <item>1F469,200D,1F469,200D,1F466</item>
+ <item>1F469,200D,1F469,200D,1F467</item>
+ <item>1F469,200D,1F469,200D,1F467,200D,1F466</item>
+ <item>1F469,200D,1F469,200D,1F466,200D,1F466</item>
+ <item>1F469,200D,1F469,200D,1F467,200D,1F467</item>
+ <item>1F468,200D,1F466</item>
+ <item>1F468,200D,1F466,200D,1F466</item>
+ <item>1F468,200D,1F467</item>
+ <item>1F468,200D,1F467,200D,1F466</item>
+ <item>1F468,200D,1F467,200D,1F467</item>
+ <item>1F469,200D,1F466</item>
+ <item>1F469,200D,1F466,200D,1F466</item>
+ <item>1F469,200D,1F467</item>
+ <item>1F469,200D,1F467,200D,1F466</item>
+ <item>1F469,200D,1F467,200D,1F467</item>
+ <!-- person-symbol -->
+ <item>1F5E3,FE0F</item>
+ <item>1F464</item>
+ <item>1F465</item>
+ <item>1FAC2</item>
+ <item>1F463</item>
+ <!-- hair-style -->
+ <item>1F9B0</item>
+ <item>1F9B1</item>
+ <item>1F9B3</item>
+ <item>1F9B2</item>
</array>
+
<array
name="emoji_eight_food_drink"
format="string"
>
- <item>1f347</item>
- <item>1f348</item>
- <item>1f349</item>
- <item>1f34a</item>
- <item>1f34b</item>
- <item>1f34c</item>
- <item>1f34d</item>
- <item>1f34e</item>
- <item>1f34f</item>
- <item>1f350</item>
- <item>1f351</item>
- <item>1f352</item>
- <item>1f353</item>
- <item>1f345</item>
- <item>1f346</item>
- <item>1f33d</item>
- <item>1f336</item>
- <item>1f344</item>
- <item>1f330</item>
- <item>1f35e</item>
- <item>1f9c0</item>
- <item>1f356</item>
- <item>1f357</item>
- <item>1f354</item>
- <item>1f35f</item>
- <item>1f355</item>
- <item>1f32d</item>
- <item>1f32e</item>
- <item>1f32f</item>
- <item>1f37f</item>
- <item>1f372</item>
- <item>1f371</item>
- <item>1f358</item>
- <item>1f359</item>
- <item>1f35a</item>
- <item>1f35b</item>
- <item>1f35c</item>
- <item>1f35d</item>
- <item>1f360</item>
- <item>1f362</item>
- <item>1f363</item>
- <item>1f364</item>
- <item>1f365</item>
- <item>1f361</item>
- <item>1f366</item>
- <item>1f367</item>
- <item>1f368</item>
- <item>1f369</item>
- <item>1f36a</item>
- <item>1f382</item>
- <item>1f370</item>
- <item>1f36b</item>
- <item>1f36c</item>
- <item>1f36d</item>
- <item>1f36e</item>
- <item>1f36f</item>
- <item>1f37c</item>
+ <!-- food-fruit -->
+ <item>1F347</item>
+ <item>1F348</item>
+ <item>1F349</item>
+ <item>1F34A</item>
+ <item>1F34B</item>
+ <item>1F34C</item>
+ <item>1F34D</item>
+ <item>1F96D</item>
+ <item>1F34E</item>
+ <item>1F34F</item>
+ <item>1F350</item>
+ <item>1F351</item>
+ <item>1F352</item>
+ <item>1F353</item>
+ <item>1FAD0</item>
+ <item>1F95D</item>
+ <item>1F345</item>
+ <item>1FAD2</item>
+ <item>1F965</item>
+ <!-- food-vegetable -->
+ <item>1F951</item>
+ <item>1F346</item>
+ <item>1F954</item>
+ <item>1F955</item>
+ <item>1F33D</item>
+ <item>1F336,FE0F</item>
+ <item>1FAD1</item>
+ <item>1F952</item>
+ <item>1F96C</item>
+ <item>1F966</item>
+ <item>1F9C4</item>
+ <item>1F9C5</item>
+ <item>1F95C</item>
+ <item>1FAD8</item>
+ <item>1F330</item>
+ <item>1FADA</item>
+ <item>1FADB</item>
+ <!-- food-prepared -->
+ <item>1F35E</item>
+ <item>1F950</item>
+ <item>1F956</item>
+ <item>1FAD3</item>
+ <item>1F968</item>
+ <item>1F96F</item>
+ <item>1F95E</item>
+ <item>1F9C7</item>
+ <item>1F9C0</item>
+ <item>1F356</item>
+ <item>1F357</item>
+ <item>1F969</item>
+ <item>1F953</item>
+ <item>1F354</item>
+ <item>1F35F</item>
+ <item>1F355</item>
+ <item>1F32D</item>
+ <item>1F96A</item>
+ <item>1F32E</item>
+ <item>1F32F</item>
+ <item>1FAD4</item>
+ <item>1F959</item>
+ <item>1F9C6</item>
+ <item>1F95A</item>
+ <item>1F373</item>
+ <item>1F958</item>
+ <item>1F372</item>
+ <item>1FAD5</item>
+ <item>1F963</item>
+ <item>1F957</item>
+ <item>1F37F</item>
+ <item>1F9C8</item>
+ <item>1F9C2</item>
+ <item>1F96B</item>
+ <!-- food-asian -->
+ <item>1F371</item>
+ <item>1F358</item>
+ <item>1F359</item>
+ <item>1F35A</item>
+ <item>1F35B</item>
+ <item>1F35C</item>
+ <item>1F35D</item>
+ <item>1F360</item>
+ <item>1F362</item>
+ <item>1F363</item>
+ <item>1F364</item>
+ <item>1F365</item>
+ <item>1F96E</item>
+ <item>1F361</item>
+ <item>1F95F</item>
+ <item>1F960</item>
+ <item>1F961</item>
+ <!-- food-marine -->
+ <item>1F980</item>
+ <item>1F99E</item>
+ <item>1F990</item>
+ <item>1F991</item>
+ <item>1F9AA</item>
+ <!-- food-sweet -->
+ <item>1F366</item>
+ <item>1F367</item>
+ <item>1F368</item>
+ <item>1F369</item>
+ <item>1F36A</item>
+ <item>1F382</item>
+ <item>1F370</item>
+ <item>1F9C1</item>
+ <item>1F967</item>
+ <item>1F36B</item>
+ <item>1F36C</item>
+ <item>1F36D</item>
+ <item>1F36E</item>
+ <item>1F36F</item>
+ <!-- drink -->
+ <item>1F37C</item>
+ <item>1F95B</item>
<item>2615</item>
- <item>1f375</item>
- <item>1f376</item>
- <item>1f37e</item>
- <item>1f377</item>
- <item>1f378</item>
- <item>1f379</item>
- <item>1f37a</item>
- <item>1f37b</item>
- <item>1f37d</item>
- <item>1f374</item>
- <item>1f373</item>
- <item>1f3fa</item>
+ <item>1FAD6</item>
+ <item>1F375</item>
+ <item>1F376</item>
+ <item>1F37E</item>
+ <item>1F377</item>
+ <item>1F378</item>
+ <item>1F379</item>
+ <item>1F37A</item>
+ <item>1F37B</item>
+ <item>1F942</item>
+ <item>1F943</item>
+ <item>1FAD7</item>
+ <item>1F964</item>
+ <item>1F9CB</item>
+ <item>1F9C3</item>
+ <item>1F9C9</item>
+ <item>1F9CA</item>
+ <!-- dishware -->
+ <item>1F962</item>
+ <item>1F37D,FE0F</item>
+ <item>1F374</item>
+ <item>1F944</item>
+ <item>1F52A</item>
+ <item>1FAD9</item>
+ <item>1F3FA</item>
</array>
<array
name="emoji_eight_objects"
format="string"
>
- <item>1f507</item>
- <item>1f508</item>
- <item>1f509</item>
- <item>1f50a</item>
- <item>1f4e2</item>
- <item>1f4e3</item>
- <item>1f4ef</item>
- <item>1f514</item>
- <item>1f515</item>
- <item>1f3bc</item>
- <item>1f3b5</item>
- <item>1f3b6</item>
- <item>1f399</item>
- <item>1f39a</item>
- <item>1f39b</item>
- <item>1f3a4</item>
- <item>1f3a7</item>
- <item>1f3b7</item>
- <item>1f3b8</item>
- <item>1f3b9</item>
- <item>1f3ba</item>
- <item>1f3bb</item>
- <item>1f4fb</item>
- <item>1f4f1</item>
- <item>1f4f2</item>
- <item>260e</item>
- <item>1f4de</item>
- <item>1f4df</item>
- <item>1f4e0</item>
- <item>1f50b</item>
- <item>1f50c</item>
- <item>1f4bb</item>
- <item>1f5a5</item>
- <item>1f5a8</item>
- <item>2328</item>
- <item>1f5b1</item>
- <item>1f5b2</item>
- <item>1f4bd</item>
- <item>1f4be</item>
- <item>1f4bf</item>
- <item>1f4c0</item>
- <item>1f3a5</item>
- <item>1f3ac</item>
- <item>1f4fd</item>
- <item>1f4fa</item>
- <item>1f4f7</item>
- <item>1f4f8</item>
- <item>1f4f9</item>
- <item>1f4fc</item>
- <item>1f50d</item>
- <item>1f50e</item>
- <item>1f52c</item>
- <item>1f52d</item>
- <item>1f4e1</item>
- <item>1f56f</item>
- <item>1f4a1</item>
- <item>1f526</item>
- <item>1f3ee</item>
- <item>1f4d4</item>
- <item>1f4d5</item>
- <item>1f4d6</item>
- <item>1f4d7</item>
- <item>1f4d8</item>
- <item>1f4d9</item>
- <item>1f4da</item>
- <item>1f4d3</item>
- <item>1f4d2</item>
- <item>1f4c3</item>
- <item>1f4dc</item>
- <item>1f4c4</item>
- <item>1f4f0</item>
- <item>1f5de</item>
- <item>1f4d1</item>
- <item>1f516</item>
- <item>1f4b0</item>
- <item>1f4b4</item>
- <item>1f4b5</item>
- <item>1f4b6</item>
- <item>1f4b7</item>
- <item>1f4b8</item>
- <item>1f4b3</item>
- <item>1f4b9</item>
- <item>2709</item>
- <item>1f4e7</item>
- <item>1f4e8</item>
- <item>1f4e9</item>
- <item>1f4e4</item>
- <item>1f4e5</item>
- <item>1f4e6</item>
- <item>1f4eb</item>
- <item>1f4ea</item>
- <item>1f4ec</item>
- <item>1f4ed</item>
- <item>1f4ee</item>
- <item>1f5f3</item>
- <item>270f</item>
- <item>2712</item>
- <item>1f58b</item>
- <item>1f58a</item>
- <item>1f58c</item>
- <item>1f58d</item>
- <item>1f4dd</item>
- <item>1f4bc</item>
- <item>1f4c1</item>
- <item>1f4c2</item>
- <item>1f5c2</item>
- <item>1f4c5</item>
- <item>1f4c6</item>
- <item>1f5d2</item>
- <item>1f5d3</item>
- <item>1f4c7</item>
- <item>1f4c8</item>
- <item>1f4c9</item>
- <item>1f4ca</item>
- <item>1f4cb</item>
- <item>1f4cc</item>
- <item>1f4cd</item>
- <item>1f4ce</item>
- <item>1f587</item>
- <item>1f4cf</item>
- <item>1f4d0</item>
- <item>2702</item>
- <item>1f5c3</item>
- <item>1f5c4</item>
- <item>1f5d1</item>
- <item>1f512</item>
- <item>1f513</item>
- <item>1f50f</item>
- <item>1f510</item>
- <item>1f511</item>
- <item>1f5dd</item>
- <item>1f528</item>
- <!-- Removed for lack of color glyph support. <item>26cf</item> -->
- <!-- Removed for lack of color glyph support. <item>2692</item> -->
- <item>1f6e0</item>
- <item>1f527</item>
- <item>1f529</item>
- <!-- Removed for lack of color glyph support. <item>2699</item> -->
- <item>1f5dc</item>
- <!-- Removed for lack of color glyph support. <item>2697</item> -->
- <!-- Removed for lack of color glyph support. <item>2696</item> -->
- <item>1f517</item>
- <!-- Removed for lack of color glyph support. <item>26d3</item> -->
- <item>1f489</item>
- <item>1f48a</item>
- <item>1f5e1</item>
- <item>1f52a</item>
- <!-- Removed for lack of color glyph support. <item>2694</item> -->
- <item>1f52b</item>
- <item>1f6e1</item>
- <item>1f3f9</item>
- <item>1f6ac</item>
- <!-- Removed for lack of color glyph support. <item>26b0</item> -->
- <!-- Removed for lack of color glyph support. <item>26b1</item> -->
- <item>1f5ff</item>
- <item>1f6e2</item>
- <item>1f52e</item>
+ <!-- clothing -->
+ <item>1F453</item>
+ <item>1F576,FE0F</item>
+ <item>1F97D</item>
+ <item>1F97C</item>
+ <item>1F9BA</item>
+ <item>1F454</item>
+ <item>1F455</item>
+ <item>1F456</item>
+ <item>1F9E3</item>
+ <item>1F9E4</item>
+ <item>1F9E5</item>
+ <item>1F9E6</item>
+ <item>1F457</item>
+ <item>1F458</item>
+ <item>1F97B</item>
+ <item>1FA71</item>
+ <item>1FA72</item>
+ <item>1FA73</item>
+ <item>1F459</item>
+ <item>1F45A</item>
+ <item>1FAAD</item>
+ <item>1F45B</item>
+ <item>1F45C</item>
+ <item>1F45D</item>
+ <item>1F6CD,FE0F</item>
+ <item>1F392</item>
+ <item>1FA74</item>
+ <item>1F45E</item>
+ <item>1F45F</item>
+ <item>1F97E</item>
+ <item>1F97F</item>
+ <item>1F460</item>
+ <item>1F461</item>
+ <item>1FA70</item>
+ <item>1F462</item>
+ <item>1FAAE</item>
+ <item>1F451</item>
+ <item>1F452</item>
+ <item>1F3A9</item>
+ <item>1F393</item>
+ <item>1F9E2</item>
+ <item>1FA96</item>
+ <item>26D1,FE0F</item>
+ <item>1F4FF</item>
+ <item>1F484</item>
+ <item>1F48D</item>
+ <item>1F48E</item>
+ <!-- sound -->
+ <item>1F507</item>
+ <item>1F508</item>
+ <item>1F509</item>
+ <item>1F50A</item>
+ <item>1F4E2</item>
+ <item>1F4E3</item>
+ <item>1F4EF</item>
+ <item>1F514</item>
+ <item>1F515</item>
+ <!-- music -->
+ <item>1F3BC</item>
+ <item>1F3B5</item>
+ <item>1F3B6</item>
+ <item>1F399,FE0F</item>
+ <item>1F39A,FE0F</item>
+ <item>1F39B,FE0F</item>
+ <item>1F3A4</item>
+ <item>1F3A7</item>
+ <item>1F4FB</item>
+ <!-- musical-instrument -->
+ <item>1F3B7</item>
+ <item>1FA97</item>
+ <item>1F3B8</item>
+ <item>1F3B9</item>
+ <item>1F3BA</item>
+ <item>1F3BB</item>
+ <item>1FA95</item>
+ <item>1F941</item>
+ <item>1FA98</item>
+ <item>1FA87</item>
+ <item>1FA88</item>
+ <!-- phone -->
+ <item>1F4F1</item>
+ <item>1F4F2</item>
+ <item>260E,FE0F</item>
+ <item>1F4DE</item>
+ <item>1F4DF</item>
+ <item>1F4E0</item>
+ <!-- computer -->
+ <item>1F50B</item>
+ <item>1FAAB</item>
+ <item>1F50C</item>
+ <item>1F4BB</item>
+ <item>1F5A5,FE0F</item>
+ <item>1F5A8,FE0F</item>
+ <item>2328,FE0F</item>
+ <item>1F5B1,FE0F</item>
+ <item>1F5B2,FE0F</item>
+ <item>1F4BD</item>
+ <item>1F4BE</item>
+ <item>1F4BF</item>
+ <item>1F4C0</item>
+ <item>1F9EE</item>
+ <!-- light & video -->
+ <item>1F3A5</item>
+ <item>1F39E,FE0F</item>
+ <item>1F4FD,FE0F</item>
+ <item>1F3AC</item>
+ <item>1F4FA</item>
+ <item>1F4F7</item>
+ <item>1F4F8</item>
+ <item>1F4F9</item>
+ <item>1F4FC</item>
+ <item>1F50D</item>
+ <item>1F50E</item>
+ <item>1F56F,FE0F</item>
+ <item>1F4A1</item>
+ <item>1F526</item>
+ <item>1F3EE</item>
+ <item>1FA94</item>
+ <!-- book-paper -->
+ <item>1F4D4</item>
+ <item>1F4D5</item>
+ <item>1F4D6</item>
+ <item>1F4D7</item>
+ <item>1F4D8</item>
+ <item>1F4D9</item>
+ <item>1F4DA</item>
+ <item>1F4D3</item>
+ <item>1F4D2</item>
+ <item>1F4C3</item>
+ <item>1F4DC</item>
+ <item>1F4C4</item>
+ <item>1F4F0</item>
+ <item>1F5DE,FE0F</item>
+ <item>1F4D1</item>
+ <item>1F516</item>
+ <item>1F3F7,FE0F</item>
+ <!-- money -->
+ <item>1F4B0</item>
+ <item>1FA99</item>
+ <item>1F4B4</item>
+ <item>1F4B5</item>
+ <item>1F4B6</item>
+ <item>1F4B7</item>
+ <item>1F4B8</item>
+ <item>1F4B3</item>
+ <item>1F9FE</item>
+ <item>1F4B9</item>
+ <!-- mail -->
+ <item>2709,FE0F</item>
+ <item>1F4E7</item>
+ <item>1F4E8</item>
+ <item>1F4E9</item>
+ <item>1F4E4</item>
+ <item>1F4E5</item>
+ <item>1F4E6</item>
+ <item>1F4EB</item>
+ <item>1F4EA</item>
+ <item>1F4EC</item>
+ <item>1F4ED</item>
+ <item>1F4EE</item>
+ <item>1F5F3,FE0F</item>
+ <!-- writing -->
+ <item>270F,FE0F</item>
+ <item>2712,FE0F</item>
+ <item>1F58B,FE0F</item>
+ <item>1F58A,FE0F</item>
+ <item>1F58C,FE0F</item>
+ <item>1F58D,FE0F</item>
+ <item>1F4DD</item>
+ <!-- office -->
+ <item>1F4BC</item>
+ <item>1F4C1</item>
+ <item>1F4C2</item>
+ <item>1F5C2,FE0F</item>
+ <item>1F4C5</item>
+ <item>1F4C6</item>
+ <item>1F5D2,FE0F</item>
+ <item>1F5D3,FE0F</item>
+ <item>1F4C7</item>
+ <item>1F4C8</item>
+ <item>1F4C9</item>
+ <item>1F4CA</item>
+ <item>1F4CB</item>
+ <item>1F4CC</item>
+ <item>1F4CD</item>
+ <item>1F4CE</item>
+ <item>1F587,FE0F</item>
+ <item>1F4CF</item>
+ <item>1F4D0</item>
+ <item>2702,FE0F</item>
+ <item>1F5C3,FE0F</item>
+ <item>1F5C4,FE0F</item>
+ <item>1F5D1,FE0F</item>
+ <!-- lock -->
+ <item>1F512</item>
+ <item>1F513</item>
+ <item>1F50F</item>
+ <item>1F510</item>
+ <item>1F511</item>
+ <item>1F5DD,FE0F</item>
+ <!-- tool -->
+ <item>1F528</item>
+ <item>1FA93</item>
+ <item>26CF,FE0F</item>
+ <item>2692,FE0F</item>
+ <item>1F6E0,FE0F</item>
+ <item>1F5E1,FE0F</item>
+ <item>2694,FE0F</item>
+ <item>1F4A3</item>
+ <item>1FA83</item>
+ <item>1F3F9</item>
+ <item>1F6E1,FE0F</item>
+ <item>1FA9A</item>
+ <item>1F527</item>
+ <item>1FA9B</item>
+ <item>1F529</item>
+ <item>2699,FE0F</item>
+ <item>1F5DC,FE0F</item>
+ <item>2696,FE0F</item>
+ <item>1F9AF</item>
+ <item>1F517</item>
+ <item>26D3,FE0F</item>
+ <item>1FA9D</item>
+ <item>1F9F0</item>
+ <item>1F9F2</item>
+ <item>1FA9C</item>
+ <!-- science -->
+ <item>2697,FE0F</item>
+ <item>1F9EA</item>
+ <item>1F9EB</item>
+ <item>1F9EC</item>
+ <item>1F52C</item>
+ <item>1F52D</item>
+ <item>1F4E1</item>
+ <!-- medical -->
+ <item>1F489</item>
+ <item>1FA78</item>
+ <item>1F48A</item>
+ <item>1FA79</item>
+ <item>1FA7C</item>
+ <item>1FA7A</item>
+ <item>1FA7B</item>
+ <!-- household -->
+ <item>1F6AA</item>
+ <item>1F6D7</item>
+ <item>1FA9E</item>
+ <item>1FA9F</item>
+ <item>1F6CF,FE0F</item>
+ <item>1F6CB,FE0F</item>
+ <item>1FA91</item>
+ <item>1F6BD</item>
+ <item>1FAA0</item>
+ <item>1F6BF</item>
+ <item>1F6C1</item>
+ <item>1FAA4</item>
+ <item>1FA92</item>
+ <item>1F9F4</item>
+ <item>1F9F7</item>
+ <item>1F9F9</item>
+ <item>1F9FA</item>
+ <item>1F9FB</item>
+ <item>1FAA3</item>
+ <item>1F9FC</item>
+ <item>1FAE7</item>
+ <item>1FAA5</item>
+ <item>1F9FD</item>
+ <item>1F9EF</item>
+ <item>1F6D2</item>
+ <!-- other-object -->
+ <item>1F6AC</item>
+ <item>26B0,FE0F</item>
+ <item>1FAA6</item>
+ <item>26B1,FE0F</item>
+ <item>1F9FF</item>
+ <item>1FAAC</item>
+ <item>1F5FF</item>
+ <item>1FAA7</item>
+ <item>1FAAA</item>
</array>
<array
name="emoji_eight_activity"
format="string"
>
- <item>1f383</item>
- <item>1f384</item>
- <item>1f386</item>
- <item>1f387</item>
+ <!-- event -->
+ <item>1F383</item>
+ <item>1F384</item>
+ <item>1F386</item>
+ <item>1F387</item>
+ <item>1F9E8</item>
<item>2728</item>
- <item>1f388</item>
- <item>1f389</item>
- <item>1f38a</item>
- <item>1f38b</item>
- <item>1f38c</item>
- <item>1f38d</item>
- <item>1f38e</item>
- <item>1f38f</item>
- <item>1f390</item>
- <item>1f391</item>
- <item>1f380</item>
- <item>1f381</item>
- <item>1f396</item>
- <item>1f397</item>
- <item>1f39e</item>
- <item>1f39f</item>
- <item>1f3ab</item>
- <item>1f3f7</item>
- <item>26bd</item>
- <item>26be</item>
- <item>1f3c0</item>
- <item>1f3c8</item>
- <item>1f3c9</item>
- <item>1f3be</item>
- <item>1f3b1</item>
- <item>1f3b3</item>
- <item>26f3</item>
- <item>1f3cc</item>
- <!-- Removed for lack of color glyph support. <item>26f8</item> -->
- <item>1f3a3</item>
- <item>1f3bd</item>
- <item>1f3bf</item>
- <!-- Removed for lack of color glyph support. <item>26f7</item> -->
- <item>1f3c2</item>
- <item>1f3c4</item>
- <item>1f3c7</item>
- <item>1f3ca</item>
- <!-- Removed for lack of color glyph support. <item>26f9</item> -->
- <item>1f3cb</item>
- <item>1f6b4</item>
- <item>1f6b5</item>
- <item>1f3ce</item>
- <item>1f3cd</item>
- <item>1f3c5</item>
- <item>1f3c6</item>
- <item>1f3cf</item>
- <item>1f3d0</item>
- <item>1f3d1</item>
- <item>1f3d2</item>
- <item>1f3d3</item>
- <item>1f3f8</item>
- <item>1f3af</item>
- <item>1f3ae</item>
- <item>1f579</item>
- <item>1f3b2</item>
- <item>2660</item>
- <item>2665</item>
- <item>2666</item>
- <item>2663</item>
- <item>1f0cf</item>
- <item>1f004</item>
- <item>1f3b4</item>
+ <item>1F388</item>
+ <item>1F389</item>
+ <item>1F38A</item>
+ <item>1F38B</item>
+ <item>1F38D</item>
+ <item>1F38E</item>
+ <item>1F38F</item>
+ <item>1F390</item>
+ <item>1F391</item>
+ <item>1F9E7</item>
+ <item>1F380</item>
+ <item>1F381</item>
+ <item>1F397,FE0F</item>
+ <item>1F39F,FE0F</item>
+ <item>1F3AB</item>
+ <!-- award-medal -->
+ <item>1F396,FE0F</item>
+ <item>1F3C6</item>
+ <item>1F3C5</item>
+ <item>1F947</item>
+ <item>1F948</item>
+ <item>1F949</item>
+ <!-- sport -->
+ <item>26BD</item>
+ <item>26BE</item>
+ <item>1F94E</item>
+ <item>1F3C0</item>
+ <item>1F3D0</item>
+ <item>1F3C8</item>
+ <item>1F3C9</item>
+ <item>1F3BE</item>
+ <item>1F94F</item>
+ <item>1F3B3</item>
+ <item>1F3CF</item>
+ <item>1F3D1</item>
+ <item>1F3D2</item>
+ <item>1F94D</item>
+ <item>1F3D3</item>
+ <item>1F3F8</item>
+ <item>1F94A</item>
+ <item>1F94B</item>
+ <item>1F945</item>
+ <item>26F3</item>
+ <item>26F8,FE0F</item>
+ <item>1F3A3</item>
+ <item>1F93F</item>
+ <item>1F3BD</item>
+ <item>1F3BF</item>
+ <item>1F6F7</item>
+ <item>1F94C</item>
+ <!-- game -->
+ <item>1F3AF</item>
+ <item>1FA80</item>
+ <item>1FA81</item>
+ <item>1F52B</item>
+ <item>1F3B1</item>
+ <item>1F52E</item>
+ <item>1FA84</item>
+ <item>1F3AE</item>
+ <item>1F579,FE0F</item>
+ <item>1F3B0</item>
+ <item>1F3B2</item>
+ <item>1F9E9</item>
+ <item>1F9F8</item>
+ <item>1FA85</item>
+ <item>1FAA9</item>
+ <item>1FA86</item>
+ <item>2660,FE0F</item>
+ <item>2665,FE0F</item>
+ <item>2666,FE0F</item>
+ <item>2663,FE0F</item>
+ <item>265F,FE0F</item>
+ <item>1F0CF</item>
+ <item>1F004</item>
+ <item>1F3B4</item>
+ <!-- arts & crafts -->
+ <item>1F3AD</item>
+ <item>1F5BC,FE0F</item>
+ <item>1F3A8</item>
+ <item>1F9F5</item>
+ <item>1FAA1</item>
+ <item>1F9F6</item>
+ <item>1FAA2</item>
</array>
<array
name="emoji_eight_travel_places"
format="string"
>
- <item>1f30d</item>
- <item>1f30e</item>
- <item>1f30f</item>
- <item>1f310</item>
- <item>1f5fa</item>
- <item>1f3d4</item>
- <!-- Removed for lack of color glyph support. <item>26f0</item> -->
- <item>1f30b</item>
- <item>1f5fb</item>
- <item>1f3d5</item>
- <item>1f3d6</item>
- <item>1f3dc</item>
- <item>1f3dd</item>
- <item>1f3de</item>
- <item>1f3df</item>
- <item>1f3db</item>
- <item>1f3d7</item>
- <item>1f3d8</item>
- <item>1f3d9</item>
- <item>1f3da</item>
- <item>1f3e0</item>
- <item>1f3e1</item>
- <item>26ea</item>
- <item>1f54b</item>
- <item>1f54c</item>
- <item>1f54d</item>
- <!-- Removed for lack of color glyph support. <item>26e9</item> -->
- <item>1f3e2</item>
- <item>1f3e3</item>
- <item>1f3e4</item>
- <item>1f3e5</item>
- <item>1f3e6</item>
- <item>1f3e8</item>
- <item>1f3e9</item>
- <item>1f3ea</item>
- <item>1f3eb</item>
- <item>1f3ec</item>
- <item>1f3ed</item>
- <item>1f3ef</item>
- <item>1f3f0</item>
- <item>1f492</item>
- <item>1f5fc</item>
- <item>1f5fd</item>
- <item>1f5fe</item>
- <item>26f2</item>
- <item>26fa</item>
- <item>1f301</item>
- <item>1f303</item>
- <item>1f304</item>
- <item>1f305</item>
- <item>1f306</item>
- <item>1f307</item>
- <item>1f309</item>
- <item>2668</item>
- <item>1f30c</item>
- <item>1f3a0</item>
- <item>1f3a1</item>
- <item>1f3a2</item>
- <item>1f488</item>
- <item>1f3aa</item>
- <item>1f3ad</item>
- <item>1f5bc</item>
- <item>1f3a8</item>
- <item>1f3b0</item>
- <item>1f682</item>
- <item>1f683</item>
- <item>1f684</item>
- <item>1f685</item>
- <item>1f686</item>
- <item>1f687</item>
- <item>1f688</item>
- <item>1f689</item>
- <item>1f68a</item>
- <item>1f69d</item>
- <item>1f69e</item>
- <item>1f68b</item>
- <item>1f68c</item>
- <item>1f68d</item>
- <item>1f68e</item>
- <item>1f68f</item>
- <item>1f690</item>
- <item>1f691</item>
- <item>1f692</item>
- <item>1f693</item>
- <item>1f694</item>
- <item>1f695</item>
- <item>1f696</item>
- <item>1f697</item>
- <item>1f698</item>
- <item>1f699</item>
- <item>1f69a</item>
- <item>1f69b</item>
- <item>1f69c</item>
- <item>1f6b2</item>
- <item>26fd</item>
- <item>1f6e3</item>
- <item>1f6e4</item>
- <item>1f6a8</item>
- <item>1f6a5</item>
- <item>1f6a6</item>
- <item>1f6a7</item>
+ <!-- place-map -->
+ <item>1F30D</item>
+ <item>1F30E</item>
+ <item>1F30F</item>
+ <item>1F310</item>
+ <item>1F5FA,FE0F</item>
+ <item>1F5FE</item>
+ <item>1F9ED</item>
+ <!-- place-geographic -->
+ <item>1F3D4,FE0F</item>
+ <item>26F0,FE0F</item>
+ <item>1F30B</item>
+ <item>1F5FB</item>
+ <item>1F3D5,FE0F</item>
+ <item>1F3D6,FE0F</item>
+ <item>1F3DC,FE0F</item>
+ <item>1F3DD,FE0F</item>
+ <item>1F3DE,FE0F</item>
+ <!-- place-building -->
+ <item>1F3DF,FE0F</item>
+ <item>1F3DB,FE0F</item>
+ <item>1F3D7,FE0F</item>
+ <item>1F9F1</item>
+ <item>1FAA8</item>
+ <item>1FAB5</item>
+ <item>1F6D6</item>
+ <item>1F3D8,FE0F</item>
+ <item>1F3DA,FE0F</item>
+ <item>1F3E0</item>
+ <item>1F3E1</item>
+ <item>1F3E2</item>
+ <item>1F3E3</item>
+ <item>1F3E4</item>
+ <item>1F3E5</item>
+ <item>1F3E6</item>
+ <item>1F3E8</item>
+ <item>1F3E9</item>
+ <item>1F3EA</item>
+ <item>1F3EB</item>
+ <item>1F3EC</item>
+ <item>1F3ED</item>
+ <item>1F3EF</item>
+ <item>1F3F0</item>
+ <item>1F492</item>
+ <item>1F5FC</item>
+ <item>1F5FD</item>
+ <!-- place-religious -->
+ <item>26EA</item>
+ <item>1F54C</item>
+ <item>1F6D5</item>
+ <item>1F54D</item>
+ <item>26E9,FE0F</item>
+ <item>1F54B</item>
+ <!-- place-other -->
+ <item>26F2</item>
+ <item>26FA</item>
+ <item>1F301</item>
+ <item>1F303</item>
+ <item>1F3D9,FE0F</item>
+ <item>1F304</item>
+ <item>1F305</item>
+ <item>1F306</item>
+ <item>1F307</item>
+ <item>1F309</item>
+ <item>2668,FE0F</item>
+ <item>1F3A0</item>
+ <item>1F6DD</item>
+ <item>1F3A1</item>
+ <item>1F3A2</item>
+ <item>1F488</item>
+ <item>1F3AA</item>
+ <!-- transport-ground -->
+ <item>1F682</item>
+ <item>1F683</item>
+ <item>1F684</item>
+ <item>1F685</item>
+ <item>1F686</item>
+ <item>1F687</item>
+ <item>1F688</item>
+ <item>1F689</item>
+ <item>1F68A</item>
+ <item>1F69D</item>
+ <item>1F69E</item>
+ <item>1F68B</item>
+ <item>1F68C</item>
+ <item>1F68D</item>
+ <item>1F68E</item>
+ <item>1F690</item>
+ <item>1F691</item>
+ <item>1F692</item>
+ <item>1F693</item>
+ <item>1F694</item>
+ <item>1F695</item>
+ <item>1F696</item>
+ <item>1F697</item>
+ <item>1F698</item>
+ <item>1F699</item>
+ <item>1F6FB</item>
+ <item>1F69A</item>
+ <item>1F69B</item>
+ <item>1F69C</item>
+ <item>1F3CE,FE0F</item>
+ <item>1F3CD,FE0F</item>
+ <item>1F6F5</item>
+ <item>1F9BD</item>
+ <item>1F9BC</item>
+ <item>1F6FA</item>
+ <item>1F6B2</item>
+ <item>1F6F4</item>
+ <item>1F6F9</item>
+ <item>1F6FC</item>
+ <item>1F68F</item>
+ <item>1F6E3,FE0F</item>
+ <item>1F6E4,FE0F</item>
+ <item>1F6E2,FE0F</item>
+ <item>26FD</item>
+ <item>1F6DE</item>
+ <item>1F6A8</item>
+ <item>1F6A5</item>
+ <item>1F6A6</item>
+ <item>1F6D1</item>
+ <item>1F6A7</item>
+ <!-- transport-water -->
<item>2693</item>
- <item>26f5</item>
- <item>1f6a3</item>
- <item>1f6a4</item>
- <item>1f6f3</item>
- <!-- Removed for lack of color glyph support. <item>26f4</item> -->
- <item>1f6e5</item>
- <item>1f6a2</item>
- <item>2708</item>
- <item>1f6e9</item>
- <item>1f6eb</item>
- <item>1f6ec</item>
- <item>1f4ba</item>
- <item>1f681</item>
- <item>1f69f</item>
- <item>1f6a0</item>
- <item>1f6a1</item>
- <item>1f680</item>
- <item>1f6f0</item>
- <item>1f6ce</item>
- <item>1f6aa</item>
- <item>1f6cc</item>
- <item>1f6cf</item>
- <item>1f6cb</item>
- <item>1f6bd</item>
- <item>1f6bf</item>
- <item>1f6c0</item>
- <item>1f6c1</item>
- <item>231b</item>
- <item>23f3</item>
- <item>231a</item>
- <item>23f0</item>
- <!-- Removed for lack of color glyph support. <item>23f1</item> -->
- <!-- Removed for lack of color glyph support. <item>23f2</item> -->
- <item>1f570</item>
- <item>1f55b</item>
- <item>1f567</item>
- <item>1f550</item>
- <item>1f55c</item>
- <item>1f551</item>
- <item>1f55d</item>
- <item>1f552</item>
- <item>1f55e</item>
- <item>1f553</item>
- <item>1f55f</item>
- <item>1f554</item>
- <item>1f560</item>
- <item>1f555</item>
- <item>1f561</item>
- <item>1f556</item>
- <item>1f562</item>
- <item>1f557</item>
- <item>1f563</item>
- <item>1f558</item>
- <item>1f564</item>
- <item>1f559</item>
- <item>1f565</item>
- <item>1f55a</item>
- <item>1f566</item>
- <item>1f311</item>
- <item>1f312</item>
- <item>1f313</item>
- <item>1f314</item>
- <item>1f315</item>
- <item>1f316</item>
- <item>1f317</item>
- <item>1f318</item>
- <item>1f319</item>
- <item>1f31a</item>
- <item>1f31b</item>
- <item>1f31c</item>
- <item>1f321</item>
- <item>2600</item>
- <item>1f31d</item>
- <item>1f31e</item>
- <item>2b50</item>
- <item>1f31f</item>
- <item>1f320</item>
- <item>2601</item>
- <item>26c5</item>
- <!-- Removed for lack of color glyph support. <item>26c8</item> -->
- <item>1f324</item>
- <item>1f325</item>
- <item>1f326</item>
- <item>1f327</item>
- <item>1f328</item>
- <item>1f329</item>
- <item>1f32a</item>
- <item>1f32b</item>
- <item>1f32c</item>
- <item>1f300</item>
- <item>1f308</item>
- <item>1f302</item>
- <!-- Removed for lack of color glyph support. <item>2602</item> -->
+ <item>1F6DF</item>
+ <item>26F5</item>
+ <item>1F6F6</item>
+ <item>1F6A4</item>
+ <item>1F6F3,FE0F</item>
+ <item>26F4,FE0F</item>
+ <item>1F6E5,FE0F</item>
+ <item>1F6A2</item>
+ <!-- transport-air -->
+ <item>2708,FE0F</item>
+ <item>1F6E9,FE0F</item>
+ <item>1F6EB</item>
+ <item>1F6EC</item>
+ <item>1FA82</item>
+ <item>1F4BA</item>
+ <item>1F681</item>
+ <item>1F69F</item>
+ <item>1F6A0</item>
+ <item>1F6A1</item>
+ <item>1F6F0,FE0F</item>
+ <item>1F680</item>
+ <item>1F6F8</item>
+ <!-- hotel -->
+ <item>1F6CE,FE0F</item>
+ <item>1F9F3</item>
+ <!-- time -->
+ <item>231B</item>
+ <item>23F3</item>
+ <item>231A</item>
+ <item>23F0</item>
+ <item>23F1,FE0F</item>
+ <item>23F2,FE0F</item>
+ <item>1F570,FE0F</item>
+ <item>1F55B</item>
+ <item>1F567</item>
+ <item>1F550</item>
+ <item>1F55C</item>
+ <item>1F551</item>
+ <item>1F55D</item>
+ <item>1F552</item>
+ <item>1F55E</item>
+ <item>1F553</item>
+ <item>1F55F</item>
+ <item>1F554</item>
+ <item>1F560</item>
+ <item>1F555</item>
+ <item>1F561</item>
+ <item>1F556</item>
+ <item>1F562</item>
+ <item>1F557</item>
+ <item>1F563</item>
+ <item>1F558</item>
+ <item>1F564</item>
+ <item>1F559</item>
+ <item>1F565</item>
+ <item>1F55A</item>
+ <item>1F566</item>
+ <!-- sky & weather -->
+ <item>1F311</item>
+ <item>1F312</item>
+ <item>1F313</item>
+ <item>1F314</item>
+ <item>1F315</item>
+ <item>1F316</item>
+ <item>1F317</item>
+ <item>1F318</item>
+ <item>1F319</item>
+ <item>1F31A</item>
+ <item>1F31B</item>
+ <item>1F31C</item>
+ <item>1F321,FE0F</item>
+ <item>2600,FE0F</item>
+ <item>1F31D</item>
+ <item>1F31E</item>
+ <item>1FA90</item>
+ <item>2B50</item>
+ <item>1F31F</item>
+ <item>1F320</item>
+ <item>1F30C</item>
+ <item>2601,FE0F</item>
+ <item>26C5</item>
+ <item>26C8,FE0F</item>
+ <item>1F324,FE0F</item>
+ <item>1F325,FE0F</item>
+ <item>1F326,FE0F</item>
+ <item>1F327,FE0F</item>
+ <item>1F328,FE0F</item>
+ <item>1F329,FE0F</item>
+ <item>1F32A,FE0F</item>
+ <item>1F32B,FE0F</item>
+ <item>1F32C,FE0F</item>
+ <item>1F300</item>
+ <item>1F308</item>
+ <item>1F302</item>
+ <item>2602,FE0F</item>
<item>2614</item>
- <!-- Removed for lack of color glyph support. <item>26f1</item> -->
- <item>26a1</item>
- <item>2744</item>
- <!-- Removed for lack of color glyph support. <item>2603</item> -->
- <item>26c4</item>
- <!-- Removed for lack of color glyph support. <item>2604</item> -->
- <item>1f525</item>
- <item>1f4a7</item>
- <item>1f30a</item>
+ <item>26F1,FE0F</item>
+ <item>26A1</item>
+ <item>2744,FE0F</item>
+ <item>2603,FE0F</item>
+ <item>26C4</item>
+ <item>2604,FE0F</item>
+ <item>1F525</item>
+ <item>1F4A7</item>
+ <item>1F30A</item>
</array>
<array
name="emoji_eight_flags"
format="string"
>
- <item>1f1e6,1f1e8</item>
- <item>1f1e6,1f1e9</item>
- <item>1f1e6,1f1ea</item>
- <item>1f1e6,1f1eb</item>
- <item>1f1e6,1f1ec</item>
- <item>1f1e6,1f1ee</item>
- <item>1f1e6,1f1f1</item>
- <item>1f1e6,1f1f2</item>
- <item>1f1e6,1f1f4</item>
- <item>1f1e6,1f1f6</item>
- <item>1f1e6,1f1f7</item>
- <item>1f1e6,1f1f8</item>
- <item>1f1e6,1f1f9</item>
- <item>1f1e6,1f1fa</item>
- <item>1f1e6,1f1fc</item>
- <item>1f1e6,1f1fd</item>
- <item>1f1e6,1f1ff</item>
- <item>1f1e7,1f1e6</item>
- <item>1f1e7,1f1e7</item>
- <item>1f1e7,1f1e9</item>
- <item>1f1e7,1f1ea</item>
- <item>1f1e7,1f1eb</item>
- <item>1f1e7,1f1ec</item>
- <item>1f1e7,1f1ed</item>
- <item>1f1e7,1f1ee</item>
- <item>1f1e7,1f1ef</item>
- <item>1f1e7,1f1f1</item>
- <item>1f1e7,1f1f2</item>
- <item>1f1e7,1f1f3</item>
- <item>1f1e7,1f1f4</item>
- <item>1f1e7,1f1f6</item>
- <item>1f1e7,1f1f7</item>
- <item>1f1e7,1f1f8</item>
- <item>1f1e7,1f1f9</item>
- <item>1f1e7,1f1fb</item>
- <item>1f1e7,1f1fc</item>
- <item>1f1e7,1f1fe</item>
- <item>1f1e7,1f1ff</item>
- <item>1f1e8,1f1e6</item>
- <item>1f1e8,1f1e8</item>
- <item>1f1e8,1f1e9</item>
- <item>1f1e8,1f1eb</item>
- <item>1f1e8,1f1ec</item>
- <item>1f1e8,1f1ed</item>
- <item>1f1e8,1f1ee</item>
- <item>1f1e8,1f1f0</item>
- <item>1f1e8,1f1f1</item>
- <item>1f1e8,1f1f2</item>
- <item>1f1e8,1f1f3</item>
- <item>1f1e8,1f1f4</item>
- <item>1f1e8,1f1f5</item>
- <item>1f1e8,1f1f7</item>
- <item>1f1e8,1f1fa</item>
- <item>1f1e8,1f1fb</item>
- <item>1f1e8,1f1fc</item>
- <item>1f1e8,1f1fd</item>
- <item>1f1e8,1f1fe</item>
- <item>1f1e8,1f1ff</item>
- <item>1f1e9,1f1ea</item>
- <item>1f1e9,1f1ec</item>
- <item>1f1e9,1f1ef</item>
- <item>1f1e9,1f1f0</item>
- <item>1f1e9,1f1f2</item>
- <item>1f1e9,1f1f4</item>
- <item>1f1e9,1f1ff</item>
- <item>1f1ea,1f1e6</item>
- <item>1f1ea,1f1e8</item>
- <item>1f1ea,1f1ea</item>
- <item>1f1ea,1f1ec</item>
- <item>1f1ea,1f1ed</item>
- <item>1f1ea,1f1f7</item>
- <item>1f1ea,1f1f8</item>
- <item>1f1ea,1f1f9</item>
- <item>1f1ea,1f1fa</item>
- <item>1f1eb,1f1ee</item>
- <item>1f1eb,1f1ef</item>
- <item>1f1eb,1f1f0</item>
- <item>1f1eb,1f1f2</item>
- <item>1f1eb,1f1f4</item>
- <item>1f1eb,1f1f7</item>
- <item>1f1ec,1f1e6</item>
- <item>1f1ec,1f1e7</item>
- <item>1f1ec,1f1e9</item>
- <item>1f1ec,1f1ea</item>
- <item>1f1ec,1f1eb</item>
- <item>1f1ec,1f1ec</item>
- <item>1f1ec,1f1ed</item>
- <item>1f1ec,1f1ee</item>
- <item>1f1ec,1f1f1</item>
- <item>1f1ec,1f1f2</item>
- <item>1f1ec,1f1f3</item>
- <item>1f1ec,1f1f5</item>
- <item>1f1ec,1f1f6</item>
- <item>1f1ec,1f1f7</item>
- <item>1f1ec,1f1f8</item>
- <item>1f1ec,1f1f9</item>
- <item>1f1ec,1f1fa</item>
- <item>1f1ec,1f1fc</item>
- <item>1f1ec,1f1fe</item>
- <item>1f1ed,1f1f0</item>
- <item>1f1ed,1f1f2</item>
- <item>1f1ed,1f1f3</item>
- <item>1f1ed,1f1f7</item>
- <item>1f1ed,1f1f9</item>
- <item>1f1ed,1f1fa</item>
- <item>1f1ee,1f1e8</item>
- <item>1f1ee,1f1e9</item>
- <item>1f1ee,1f1ea</item>
- <item>1f1ee,1f1f1</item>
- <item>1f1ee,1f1f2</item>
- <item>1f1ee,1f1f3</item>
- <item>1f1ee,1f1f4</item>
- <item>1f1ee,1f1f6</item>
- <item>1f1ee,1f1f7</item>
- <item>1f1ee,1f1f8</item>
- <item>1f1ee,1f1f9</item>
- <item>1f1ef,1f1ea</item>
- <item>1f1ef,1f1f2</item>
- <item>1f1ef,1f1f4</item>
- <item>1f1ef,1f1f5</item>
- <item>1f1f0,1f1ea</item>
- <item>1f1f0,1f1ec</item>
- <item>1f1f0,1f1ed</item>
- <item>1f1f0,1f1ee</item>
- <item>1f1f0,1f1f2</item>
- <item>1f1f0,1f1f3</item>
- <item>1f1f0,1f1f5</item>
- <item>1f1f0,1f1f7</item>
- <item>1f1f0,1f1fc</item>
- <item>1f1f0,1f1fe</item>
- <item>1f1f0,1f1ff</item>
- <item>1f1f1,1f1e6</item>
- <item>1f1f1,1f1e7</item>
- <item>1f1f1,1f1e8</item>
- <item>1f1f1,1f1ee</item>
- <item>1f1f1,1f1f0</item>
- <item>1f1f1,1f1f7</item>
- <item>1f1f1,1f1f8</item>
- <item>1f1f1,1f1f9</item>
- <item>1f1f1,1f1fa</item>
- <item>1f1f1,1f1fb</item>
- <item>1f1f1,1f1fe</item>
- <item>1f1f2,1f1e6</item>
- <item>1f1f2,1f1e8</item>
- <item>1f1f2,1f1e9</item>
- <item>1f1f2,1f1ea</item>
- <item>1f1f2,1f1eb</item>
- <item>1f1f2,1f1ec</item>
- <item>1f1f2,1f1ed</item>
- <item>1f1f2,1f1f0</item>
- <item>1f1f2,1f1f1</item>
- <item>1f1f2,1f1f2</item>
- <item>1f1f2,1f1f3</item>
- <item>1f1f2,1f1f4</item>
- <item>1f1f2,1f1f5</item>
- <item>1f1f2,1f1f6</item>
- <item>1f1f2,1f1f7</item>
- <item>1f1f2,1f1f8</item>
- <item>1f1f2,1f1f9</item>
- <item>1f1f2,1f1fa</item>
- <item>1f1f2,1f1fb</item>
- <item>1f1f2,1f1fc</item>
- <item>1f1f2,1f1fd</item>
- <item>1f1f2,1f1fe</item>
- <item>1f1f2,1f1ff</item>
- <item>1f1f3,1f1e6</item>
- <item>1f1f3,1f1e8</item>
- <item>1f1f3,1f1ea</item>
- <item>1f1f3,1f1eb</item>
- <item>1f1f3,1f1ec</item>
- <item>1f1f3,1f1ee</item>
- <item>1f1f3,1f1f1</item>
- <item>1f1f3,1f1f4</item>
- <item>1f1f3,1f1f5</item>
- <item>1f1f3,1f1f7</item>
- <item>1f1f3,1f1fa</item>
- <item>1f1f3,1f1ff</item>
- <item>1f1f4,1f1f2</item>
- <item>1f1f5,1f1e6</item>
- <item>1f1f5,1f1ea</item>
- <item>1f1f5,1f1eb</item>
- <item>1f1f5,1f1ec</item>
- <item>1f1f5,1f1ed</item>
- <item>1f1f5,1f1f0</item>
- <item>1f1f5,1f1f1</item>
- <item>1f1f5,1f1f2</item>
- <item>1f1f5,1f1f3</item>
- <item>1f1f5,1f1f7</item>
- <item>1f1f5,1f1f8</item>
- <item>1f1f5,1f1f9</item>
- <item>1f1f5,1f1fc</item>
- <item>1f1f5,1f1fe</item>
- <item>1f1f6,1f1e6</item>
- <item>1f1f7,1f1ea</item>
- <item>1f1f7,1f1f4</item>
- <item>1f1f7,1f1f8</item>
- <item>1f1f7,1f1fa</item>
- <item>1f1f7,1f1fc</item>
- <item>1f1f8,1f1e6</item>
- <item>1f1f8,1f1e7</item>
- <item>1f1f8,1f1e8</item>
- <item>1f1f8,1f1e9</item>
- <item>1f1f8,1f1ea</item>
- <item>1f1f8,1f1ec</item>
- <item>1f1f8,1f1ed</item>
- <item>1f1f8,1f1ee</item>
- <item>1f1f8,1f1ef</item>
- <item>1f1f8,1f1f0</item>
- <item>1f1f8,1f1f1</item>
- <item>1f1f8,1f1f2</item>
- <item>1f1f8,1f1f3</item>
- <item>1f1f8,1f1f4</item>
- <item>1f1f8,1f1f7</item>
- <item>1f1f8,1f1f8</item>
- <item>1f1f8,1f1f9</item>
- <item>1f1f8,1f1fb</item>
- <item>1f1f8,1f1fd</item>
- <item>1f1f8,1f1fe</item>
- <item>1f1f8,1f1ff</item>
- <item>1f1f9,1f1e6</item>
- <item>1f1f9,1f1e8</item>
- <item>1f1f9,1f1e9</item>
- <item>1f1f9,1f1eb</item>
- <item>1f1f9,1f1ec</item>
- <item>1f1f9,1f1ed</item>
- <item>1f1f9,1f1ef</item>
- <item>1f1f9,1f1f0</item>
- <item>1f1f9,1f1f1</item>
- <item>1f1f9,1f1f2</item>
- <item>1f1f9,1f1f3</item>
- <item>1f1f9,1f1f4</item>
- <item>1f1f9,1f1f7</item>
- <item>1f1f9,1f1f9</item>
- <item>1f1f9,1f1fb</item>
- <item>1f1f9,1f1fc</item>
- <item>1f1f9,1f1ff</item>
- <item>1f1fa,1f1e6</item>
- <item>1f1fa,1f1ec</item>
- <item>1f1fa,1f1f2</item>
- <item>1f1fa,1f1f8</item>
- <item>1f1fa,1f1fe</item>
- <item>1f1fa,1f1ff</item>
- <item>1f1fb,1f1e6</item>
- <item>1f1fb,1f1e8</item>
- <item>1f1fb,1f1ea</item>
- <item>1f1fb,1f1ec</item>
- <item>1f1fb,1f1ee</item>
- <item>1f1fb,1f1f3</item>
- <item>1f1fb,1f1fa</item>
- <item>1f1fc,1f1eb</item>
- <item>1f1fc,1f1f8</item>
- <item>1f1fd,1f1f0</item>
- <item>1f1fe,1f1ea</item>
- <item>1f1fe,1f1f9</item>
- <item>1f1ff,1f1e6</item>
- <item>1f1ff,1f1f2</item>
- <item>1f1ff,1f1fc</item>
+ <!-- flag -->
+ <item>1F3C1</item>
+ <item>1F6A9</item>
+ <item>1F38C</item>
+ <item>1F3F4</item>
+ <item>1F3F3,FE0F</item>
+ <item>1F3F3,FE0F,200D,1F308</item>
+ <item>1F3F3,FE0F,200D,26A7,FE0F</item>
+ <item>1F3F4,200D,2620,FE0F</item>
+ <!-- country-flag -->
+ <item>1F1E6,1F1E8</item>
+ <item>1F1E6,1F1E9</item>
+ <item>1F1E6,1F1EA</item>
+ <item>1F1E6,1F1EB</item>
+ <item>1F1E6,1F1EC</item>
+ <item>1F1E6,1F1EE</item>
+ <item>1F1E6,1F1F1</item>
+ <item>1F1E6,1F1F2</item>
+ <item>1F1E6,1F1F4</item>
+ <item>1F1E6,1F1F6</item>
+ <item>1F1E6,1F1F7</item>
+ <item>1F1E6,1F1F8</item>
+ <item>1F1E6,1F1F9</item>
+ <item>1F1E6,1F1FA</item>
+ <item>1F1E6,1F1FC</item>
+ <item>1F1E6,1F1FD</item>
+ <item>1F1E6,1F1FF</item>
+ <item>1F1E7,1F1E6</item>
+ <item>1F1E7,1F1E7</item>
+ <item>1F1E7,1F1E9</item>
+ <item>1F1E7,1F1EA</item>
+ <item>1F1E7,1F1EB</item>
+ <item>1F1E7,1F1EC</item>
+ <item>1F1E7,1F1ED</item>
+ <item>1F1E7,1F1EE</item>
+ <item>1F1E7,1F1EF</item>
+ <item>1F1E7,1F1F1</item>
+ <item>1F1E7,1F1F2</item>
+ <item>1F1E7,1F1F3</item>
+ <item>1F1E7,1F1F4</item>
+ <item>1F1E7,1F1F6</item>
+ <item>1F1E7,1F1F7</item>
+ <item>1F1E7,1F1F8</item>
+ <item>1F1E7,1F1F9</item>
+ <item>1F1E7,1F1FB</item>
+ <item>1F1E7,1F1FC</item>
+ <item>1F1E7,1F1FE</item>
+ <item>1F1E7,1F1FF</item>
+ <item>1F1E8,1F1E6</item>
+ <item>1F1E8,1F1E8</item>
+ <item>1F1E8,1F1E9</item>
+ <item>1F1E8,1F1EB</item>
+ <item>1F1E8,1F1EC</item>
+ <item>1F1E8,1F1ED</item>
+ <item>1F1E8,1F1EE</item>
+ <item>1F1E8,1F1F0</item>
+ <item>1F1E8,1F1F1</item>
+ <item>1F1E8,1F1F2</item>
+ <item>1F1E8,1F1F3</item>
+ <item>1F1E8,1F1F4</item>
+ <item>1F1E8,1F1F5</item>
+ <item>1F1E8,1F1F7</item>
+ <item>1F1E8,1F1FA</item>
+ <item>1F1E8,1F1FB</item>
+ <item>1F1E8,1F1FC</item>
+ <item>1F1E8,1F1FD</item>
+ <item>1F1E8,1F1FE</item>
+ <item>1F1E8,1F1FF</item>
+ <item>1F1E9,1F1EA</item>
+ <item>1F1E9,1F1EC</item>
+ <item>1F1E9,1F1EF</item>
+ <item>1F1E9,1F1F0</item>
+ <item>1F1E9,1F1F2</item>
+ <item>1F1E9,1F1F4</item>
+ <item>1F1E9,1F1FF</item>
+ <item>1F1EA,1F1E6</item>
+ <item>1F1EA,1F1E8</item>
+ <item>1F1EA,1F1EA</item>
+ <item>1F1EA,1F1EC</item>
+ <item>1F1EA,1F1ED</item>
+ <item>1F1EA,1F1F7</item>
+ <item>1F1EA,1F1F8</item>
+ <item>1F1EA,1F1F9</item>
+ <item>1F1EA,1F1FA</item>
+ <item>1F1EB,1F1EE</item>
+ <item>1F1EB,1F1EF</item>
+ <item>1F1EB,1F1F0</item>
+ <item>1F1EB,1F1F2</item>
+ <item>1F1EB,1F1F4</item>
+ <item>1F1EB,1F1F7</item>
+ <item>1F1EC,1F1E6</item>
+ <item>1F1EC,1F1E7</item>
+ <item>1F1EC,1F1E9</item>
+ <item>1F1EC,1F1EA</item>
+ <item>1F1EC,1F1EB</item>
+ <item>1F1EC,1F1EC</item>
+ <item>1F1EC,1F1ED</item>
+ <item>1F1EC,1F1EE</item>
+ <item>1F1EC,1F1F1</item>
+ <item>1F1EC,1F1F2</item>
+ <item>1F1EC,1F1F3</item>
+ <item>1F1EC,1F1F5</item>
+ <item>1F1EC,1F1F6</item>
+ <item>1F1EC,1F1F7</item>
+ <item>1F1EC,1F1F8</item>
+ <item>1F1EC,1F1F9</item>
+ <item>1F1EC,1F1FA</item>
+ <item>1F1EC,1F1FC</item>
+ <item>1F1EC,1F1FE</item>
+ <item>1F1ED,1F1F0</item>
+ <item>1F1ED,1F1F2</item>
+ <item>1F1ED,1F1F3</item>
+ <item>1F1ED,1F1F7</item>
+ <item>1F1ED,1F1F9</item>
+ <item>1F1ED,1F1FA</item>
+ <item>1F1EE,1F1E8</item>
+ <item>1F1EE,1F1E9</item>
+ <item>1F1EE,1F1EA</item>
+ <item>1F1EE,1F1F1</item>
+ <item>1F1EE,1F1F2</item>
+ <item>1F1EE,1F1F3</item>
+ <item>1F1EE,1F1F4</item>
+ <item>1F1EE,1F1F6</item>
+ <item>1F1EE,1F1F7</item>
+ <item>1F1EE,1F1F8</item>
+ <item>1F1EE,1F1F9</item>
+ <item>1F1EF,1F1EA</item>
+ <item>1F1EF,1F1F2</item>
+ <item>1F1EF,1F1F4</item>
+ <item>1F1EF,1F1F5</item>
+ <item>1F1F0,1F1EA</item>
+ <item>1F1F0,1F1EC</item>
+ <item>1F1F0,1F1ED</item>
+ <item>1F1F0,1F1EE</item>
+ <item>1F1F0,1F1F2</item>
+ <item>1F1F0,1F1F3</item>
+ <item>1F1F0,1F1F5</item>
+ <item>1F1F0,1F1F7</item>
+ <item>1F1F0,1F1FC</item>
+ <item>1F1F0,1F1FE</item>
+ <item>1F1F0,1F1FF</item>
+ <item>1F1F1,1F1E6</item>
+ <item>1F1F1,1F1E7</item>
+ <item>1F1F1,1F1E8</item>
+ <item>1F1F1,1F1EE</item>
+ <item>1F1F1,1F1F0</item>
+ <item>1F1F1,1F1F7</item>
+ <item>1F1F1,1F1F8</item>
+ <item>1F1F1,1F1F9</item>
+ <item>1F1F1,1F1FA</item>
+ <item>1F1F1,1F1FB</item>
+ <item>1F1F1,1F1FE</item>
+ <item>1F1F2,1F1E6</item>
+ <item>1F1F2,1F1E8</item>
+ <item>1F1F2,1F1E9</item>
+ <item>1F1F2,1F1EA</item>
+ <item>1F1F2,1F1EB</item>
+ <item>1F1F2,1F1EC</item>
+ <item>1F1F2,1F1ED</item>
+ <item>1F1F2,1F1F0</item>
+ <item>1F1F2,1F1F1</item>
+ <item>1F1F2,1F1F2</item>
+ <item>1F1F2,1F1F3</item>
+ <item>1F1F2,1F1F4</item>
+ <item>1F1F2,1F1F5</item>
+ <item>1F1F2,1F1F6</item>
+ <item>1F1F2,1F1F7</item>
+ <item>1F1F2,1F1F8</item>
+ <item>1F1F2,1F1F9</item>
+ <item>1F1F2,1F1FA</item>
+ <item>1F1F2,1F1FB</item>
+ <item>1F1F2,1F1FC</item>
+ <item>1F1F2,1F1FD</item>
+ <item>1F1F2,1F1FE</item>
+ <item>1F1F2,1F1FF</item>
+ <item>1F1F3,1F1E6</item>
+ <item>1F1F3,1F1E8</item>
+ <item>1F1F3,1F1EA</item>
+ <item>1F1F3,1F1EB</item>
+ <item>1F1F3,1F1EC</item>
+ <item>1F1F3,1F1EE</item>
+ <item>1F1F3,1F1F1</item>
+ <item>1F1F3,1F1F4</item>
+ <item>1F1F3,1F1F5</item>
+ <item>1F1F3,1F1F7</item>
+ <item>1F1F3,1F1FA</item>
+ <item>1F1F3,1F1FF</item>
+ <item>1F1F4,1F1F2</item>
+ <item>1F1F5,1F1E6</item>
+ <item>1F1F5,1F1EA</item>
+ <item>1F1F5,1F1EB</item>
+ <item>1F1F5,1F1EC</item>
+ <item>1F1F5,1F1ED</item>
+ <item>1F1F5,1F1F0</item>
+ <item>1F1F5,1F1F1</item>
+ <item>1F1F5,1F1F2</item>
+ <item>1F1F5,1F1F3</item>
+ <item>1F1F5,1F1F7</item>
+ <item>1F1F5,1F1F8</item>
+ <item>1F1F5,1F1F9</item>
+ <item>1F1F5,1F1FC</item>
+ <item>1F1F5,1F1FE</item>
+ <item>1F1F6,1F1E6</item>
+ <item>1F1F7,1F1EA</item>
+ <item>1F1F7,1F1F4</item>
+ <item>1F1F7,1F1F8</item>
+ <item>1F1F7,1F1FA</item>
+ <item>1F1F7,1F1FC</item>
+ <item>1F1F8,1F1E6</item>
+ <item>1F1F8,1F1E7</item>
+ <item>1F1F8,1F1E8</item>
+ <item>1F1F8,1F1E9</item>
+ <item>1F1F8,1F1EA</item>
+ <item>1F1F8,1F1EC</item>
+ <item>1F1F8,1F1ED</item>
+ <item>1F1F8,1F1EE</item>
+ <item>1F1F8,1F1EF</item>
+ <item>1F1F8,1F1F0</item>
+ <item>1F1F8,1F1F1</item>
+ <item>1F1F8,1F1F2</item>
+ <item>1F1F8,1F1F3</item>
+ <item>1F1F8,1F1F4</item>
+ <item>1F1F8,1F1F7</item>
+ <item>1F1F8,1F1F8</item>
+ <item>1F1F8,1F1F9</item>
+ <item>1F1F8,1F1FB</item>
+ <item>1F1F8,1F1FD</item>
+ <item>1F1F8,1F1FE</item>
+ <item>1F1F8,1F1FF</item>
+ <item>1F1F9,1F1E6</item>
+ <item>1F1F9,1F1E8</item>
+ <item>1F1F9,1F1E9</item>
+ <item>1F1F9,1F1EB</item>
+ <item>1F1F9,1F1EC</item>
+ <item>1F1F9,1F1ED</item>
+ <item>1F1F9,1F1EF</item>
+ <item>1F1F9,1F1F0</item>
+ <item>1F1F9,1F1F1</item>
+ <item>1F1F9,1F1F2</item>
+ <item>1F1F9,1F1F3</item>
+ <item>1F1F9,1F1F4</item>
+ <item>1F1F9,1F1F7</item>
+ <item>1F1F9,1F1F9</item>
+ <item>1F1F9,1F1FB</item>
+ <item>1F1F9,1F1FC</item>
+ <item>1F1F9,1F1FF</item>
+ <item>1F1FA,1F1E6</item>
+ <item>1F1FA,1F1EC</item>
+ <item>1F1FA,1F1F2</item>
+ <item>1F1FA,1F1F3</item>
+ <item>1F1FA,1F1F8</item>
+ <item>1F1FA,1F1FE</item>
+ <item>1F1FA,1F1FF</item>
+ <item>1F1FB,1F1E6</item>
+ <item>1F1FB,1F1E8</item>
+ <item>1F1FB,1F1EA</item>
+ <item>1F1FB,1F1EC</item>
+ <item>1F1FB,1F1EE</item>
+ <item>1F1FB,1F1F3</item>
+ <item>1F1FB,1F1FA</item>
+ <item>1F1FC,1F1EB</item>
+ <item>1F1FC,1F1F8</item>
+ <item>1F1FD,1F1F0</item>
+ <item>1F1FE,1F1EA</item>
+ <item>1F1FE,1F1F9</item>
+ <item>1F1FF,1F1E6</item>
+ <item>1F1FF,1F1F2</item>
+ <item>1F1FF,1F1FC</item>
+ <!-- subdivision-flag -->
+ <item>1F3F4,E0067,E0062,E0065,E006E,E0067,E007F</item>
+ <item>1F3F4,E0067,E0062,E0073,E0063,E0074,E007F</item>
+ <item>1F3F4,E0067,E0062,E0077,E006C,E0073,E007F</item>
</array>
</resources>
diff --git a/java/res/values-vi/cm_strings.xml b/java/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..c1cb707
--- /dev/null
+++ b/java/res/values-vi/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">Bảng chữ cái (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungary (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - theo cài đặt hệ thống</string>
+ <string name="prefs_keyboard_height_scale">Chiều cao của bàn phím</string>
+ <string name="number_row">Dãy phím số</string>
+ <string name="number_row_summary">Luôn hiển thị dãy phím số cho tất cả các bố cục có 4 hàng phím</string>
+ <string name="space_trackpad">Phím cách trackpad</string>
+ <string name="space_trackpad_summary">Vuốt trên phím cách để di chuyển con trỏ</string>
+ <string name="show_longpress_hints">Hiển thị các gợi ý khi nhấn giữ phím</string>
+ <string name="show_longpress_hints_summary">Hiển thị các gợi ý khi nhấn giữ phím được hỗ trợ</string>
+ <string name="show_emoji_key">Hiển thị phím biểu tượng cảm xúc</string>
+ <string name="show_emoji_key_summary">Luôn hiển thị phím biểu tượng cảm xúc. Khi tùy chọn này được bật, phím chuyển đổi ngôn ngữ không thể được hiển thị.</string>
+</resources>
diff --git a/java/res/values-zh-rCN/cm_strings.xml b/java/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..52fb575
--- /dev/null
+++ b/java/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">字母表 (Bépo)</string>
+ <string name="subtype_hu_ZZ">匈牙利 (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">主题材质 - 跟随系统设置</string>
+ <string name="prefs_keyboard_height_scale">键盘高度缩放</string>
+ <string name="number_row">数字行</string>
+ <string name="number_row_summary">对于具有 4 行按键的所有布局,始终显示数字行</string>
+ <string name="space_trackpad">空格键触控板</string>
+ <string name="space_trackpad_summary">滑动空格键即可移动光标</string>
+ <string name="show_longpress_hints">显示长按键提示</string>
+ <string name="show_longpress_hints_summary">显示受支持按键的长按提示</string>
+ <string name="show_emoji_key">显示表情符号键</string>
+ <string name="show_emoji_key_summary">始终显示表情符号键。 启用此选项后,无法显示语言切换键。</string>
+</resources>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/values-zh-rHK/cm_strings.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/values-zh-rHK/cm_strings.xml
index 9dfc93a..9b397ab 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/values-zh-rHK/cm_strings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,7 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">字母表 (Bépo)</string>
+</resources>
diff --git a/java/res/values-zh-rTW/cm_strings.xml b/java/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..3d10fae
--- /dev/null
+++ b/java/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="subtype_no_language_bepo">字母表 (Bépo)</string>
+ <string name="subtype_hu_ZZ">匈牙利文 (QWERTY)</string>
+ <string name="keyboard_theme_material_follow_system">Material - 遵循系統設定</string>
+ <string name="prefs_keyboard_height_scale">鍵盤高度比例</string>
+ <string name="number_row">列數</string>
+ <string name="number_row_summary">對於有 4 列鍵的所有佈局,一律顯示數字列</string>
+ <string name="space_trackpad">空格鍵觸控板</string>
+ <string name="space_trackpad_summary">在空格鍵上滑動來移動游標</string>
+ <string name="show_longpress_hints">顯示長按按鍵提示</string>
+ <string name="show_longpress_hints_summary">對支援的鍵顯示長按提示</string>
+ <string name="show_emoji_key">顯示表情符號鍵</string>
+ <string name="show_emoji_key_summary">一律顯示表情符號鍵。啟用此選項時,將不會顯示語言切換鍵。</string>
+</resources>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 8ff5a87..c771f11 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -59,6 +59,8 @@
<attr name="spacebarIconWidthRatio" format="float" />
<!-- Right padding of hint letter to the edge of the key.-->
<attr name="keyHintLetterPadding" format="dimension" />
+ <!-- Top padding of hint letter to the edge of the key.-->
+ <attr name="keyHintLetterPaddingVertical" format="dimension" />
<!-- Popup hint letter string-->
<attr name="keyPopupHintLetter" format="string" />
<!-- Bottom padding of popup hint letter to the edge of the key.-->
@@ -238,6 +240,7 @@
<enum name="KLP" value="2" />
<enum name="LXXLight" value="3" />
<enum name="LXXDark" value="4" />
+ <enum name="You" value="6" />
</attr>
<!-- Touch position correction -->
<attr name="touchPositionCorrectionData" format="reference" />
@@ -482,6 +485,7 @@
<enum name="KLP" value="2" />
<enum name="LXXLight" value="3" />
<enum name="LXXDark" value="4" />
+ <enum name="You" value="6" />
</attr>
<!-- This should be aligned with
{@link com.android.inputmethod.keyboard.KeyboardId#MODE_TEXT} etc. -->
@@ -498,6 +502,8 @@
<attr name="passwordInput" format="boolean" />
<attr name="clobberSettingsKey" format="boolean" />
<attr name="hasShortcutKey" format="boolean" />
+ <attr name="numberRowEnabled" format="boolean" />
+ <attr name="emojiKeyEnabled" format="boolean" />
<attr name="languageSwitchKeyEnabled" format="boolean" />
<attr name="isMultiLine" format="boolean" />
<attr name="imeAction" format="enum">
diff --git a/java/res/values/cm_strings.xml b/java/res/values/cm_strings.xml
new file mode 100644
index 0000000..c7c9e74
--- /dev/null
+++ b/java/res/values/cm_strings.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- This string is displayed in the description for a keyboard type. It refers specifically to
+the Latin alphabet, as opposed to Cyrillic, Arabic, Hebrew or other scripts.
+When the device is configured to use a language using a script other than the Latin alphabet, the
+user still needs a keyboard that can input Latin characters for passwords or login names for
+example, and a way to switch to this Latin alphabet keyboard. This string is the description for
+this keyboard, so users of other scripts should understand when they read this that it represents a
+keyboard that is meant for them to be able to enter Latin characters as opposed to the script they
+are used to. This keyboard does not provide a dictionary, and it is not tied to any specific
+language among those that use the Latin alphabet. This keyboard is laid out in the Bépo
+disposition rather than other common dispositions for Latin languages. [CHAR LIMIT=25] -->
+ <string name="subtype_no_language_bepo">Alphabet (Bépo)</string>
+ <string name="subtype_hu_ZZ">Hungarian (QWERTY)</string>
+
+ <string name="keyboard_theme_material_follow_system">Material - follow system settings</string>
+
+ <!-- Title of the settings for setting keyboard height -->
+ <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
+
+ <!-- Preference item for enabling the number row -->
+ <string name="number_row">Number row</string>
+ <string name="number_row_summary">Always show a number row for all layouts that feature 4 rows of keys</string>
+
+ <!-- Preference item for the space bar track pad -->
+ <string name="space_trackpad">Space bar trackpad</string>
+ <string name="space_trackpad_summary">Swipe on the spacebar to move the cursor</string>
+
+ <!-- Preference item for enabling longpress key hints -->
+ <string name="show_longpress_hints">Show long-press key hints</string>
+ <string name="show_longpress_hints_summary">Shows long-press hints for supported keys</string>
+
+ <!-- Preference item for always showing the emoji key -->
+ <string name="show_emoji_key">Show emoji key</string>
+ <string name="show_emoji_key_summary">Always show emoji key. When this option is enabled, the language switch key cannot be shown.</string>
+</resources>
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 5453d51..03619d2 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -19,27 +19,6 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- Color resources for IceCreamSandwich theme. Base color = 33B5E5 -->
- <!-- android:color/holo_blue_light value is #FF33B5E5 -->
- <color name="highlight_color_ics">#FF33B5E5</color>
- <color name="typed_word_color_ics">#D833B5E5</color>
- <color name="suggested_word_color_ics">#B233B5E5</color>
- <color name="highlight_translucent_color_ics">#9933B5E5</color>
- <color name="key_text_color_holo">@android:color/white</color>
- <color name="key_text_inactivated_color_holo">#66E0E4E5</color>
- <color name="key_hint_letter_color_holo">#80000000</color>
- <color name="key_hint_label_color_holo">#A0FFFFFF</color>
- <color name="key_shifted_letter_hint_inactivated_color_holo">#66E0E4E5</color>
- <color name="key_shifted_letter_hint_activated_color_holo">@android:color/white</color>
- <color name="spacebar_text_color_holo">#FFC0C0C0</color>
- <color name="spacebar_text_shadow_color_holo">#80000000</color>
- <color name="gesture_floating_preview_color_holo">#C0000000</color>
- <color name="emoji_tab_page_indicator_background_holo">#111111</color>
- <!-- Color resources for KLP theme. Base color = F0F0F0 -->
- <color name="highlight_color_klp">#FFF0F0F0</color>
- <color name="typed_word_color_klp">#D8F0F0F0</color>
- <color name="suggested_word_color_klp">#B2F0F0F0</color>
- <color name="highlight_translucent_color_klp">#99E0E0E0</color>
<!-- Color resources for LXX_Light theme.
15%:0x26 70%:0xB3 75%:0xC0 80%:0xCC 85%:0xD9 90%:0xE6 -->
<color name="key_text_color_lxx_light">#37474F</color>
diff --git a/java/res/values/config-per-form-factor.xml b/java/res/values/config-per-form-factor.xml
index 67fc751..a5259a6 100644
--- a/java/res/values/config-per-form-factor.xml
+++ b/java/res/values/config-per-form-factor.xml
@@ -24,6 +24,7 @@
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="config_default_key_preview_popup">true</bool>
<bool name="config_default_sound_enabled">false</bool>
+ <bool name="config_enable_show_emoji_key_option">true</bool>
<bool name="config_enable_show_voice_key_option">true</bool>
<bool name="config_key_selection_by_dragging_finger">true</bool>
<!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 33bcb06..9c20b92 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -38,6 +38,7 @@
<fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
<fraction name="config_keyboard_bottom_padding_holo">4.669%p</fraction>
+ <fraction name="config_key_vertical_gap_you">4.5%p</fraction>
<fraction name="config_key_vertical_gap_holo">6.127%p</fraction>
<fraction name="config_key_horizontal_gap_holo">1.739%p</fraction>
<!-- config_more_keys_keyboard_key_height x -0.5 -->
@@ -46,9 +47,13 @@
<dimen name="config_key_preview_height_holo">80dp</dimen>
<dimen name="config_key_preview_offset_lxx">50.0dp</dimen>
<dimen name="config_key_preview_height_lxx">122dp</dimen>
+ <dimen name="config_key_preview_offset_you">10.0dp</dimen>
+ <dimen name="config_key_preview_height_you">60dp</dimen>
<fraction name="config_key_preview_text_ratio">82%</fraction>
+ <fraction name="config_key_preview_text_ratio_you">70%</fraction>
<fraction name="config_key_letter_ratio_holo">55%</fraction>
<fraction name="config_key_letter_ratio_lxx">55%</fraction>
+ <fraction name="config_key_letter_ratio_you">55%</fraction>
<fraction name="config_key_large_letter_ratio_holo">65%</fraction>
<fraction name="config_key_large_letter_ratio_lxx">90%</fraction>
<fraction name="config_key_label_ratio_holo">34%</fraction>
@@ -61,6 +66,9 @@
<fraction name="config_key_shifted_letter_hint_ratio_lxx">35%</fraction>
<fraction name="config_language_on_spacebar_text_ratio">33.735%</fraction>
<dimen name="config_key_hint_letter_padding">1dp</dimen>
+ <dimen name="config_key_hint_letter_padding_vertical">0dp</dimen>
+ <dimen name="config_key_hint_letter_padding_you">3dp</dimen>
+ <dimen name="config_key_hint_letter_padding_vertical_you">1.5dp</dimen>
<dimen name="config_key_shifted_letter_hint_padding">2dp</dimen>
<!-- For 5-row keyboard -->
@@ -87,10 +95,10 @@
<dimen name="config_gesture_floating_preview_round_radius">2dp</dimen>
<!-- Emoji keyboard -->
- <fraction name="config_emoji_keyboard_key_width">14.2857%p</fraction>
- <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
- <fraction name="config_emoji_keyboard_key_letter_size">68%p</fraction>
- <integer name="config_emoji_keyboard_max_page_key_count">21</integer>
+ <fraction name="config_emoji_keyboard_key_width">12.5%p</fraction>
+ <fraction name="config_emoji_keyboard_row_height">25%p</fraction>
+ <fraction name="config_emoji_keyboard_key_letter_size">72%p</fraction>
+ <integer name="config_emoji_keyboard_max_page_key_count">32</integer>
<!-- Key codes of hardware keys that can be used to toggle the Emoji layout.
Each array defines a comma-separated tuple containing:
diff --git a/java/res/values/donottranslate-debug-settings.xml b/java/res/values/donottranslate-debug-settings.xml
index 9df73ae..a875c03 100644
--- a/java/res/values/donottranslate-debug-settings.xml
+++ b/java/res/values/donottranslate-debug-settings.xml
@@ -43,8 +43,6 @@
<string name="prefs_key_popup_dismiss_end_y_scale_settings">Key popup dismiss end Y scale</string>
<!-- Title of the settings to enable keyboard resizing -->
<string name="prefs_resize_keyboard">Enable keyboard resizing</string>
- <!-- Title of the settings for setting keyboard height -->
- <string name="prefs_keyboard_height_scale">Keyboard height scale</string>
<!-- Title of the settings group for dumpping dictionary files that have been created on the device [CHAR LIMIT=35] -->
<string name="prefs_dump_dynamic_dicts">Dump dictionary</string>
</resources>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 08d8bb2..3ff56a1 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -31,6 +31,7 @@
<item>en_GB</item>
<item>es_US</item>
<item>hi_ZZ</item>
+ <item>hu_ZZ</item>
<item>sr_ZZ</item>
</string-array>
@@ -52,6 +53,7 @@
<item>azerty</item>
<item>dvorak</item>
<item>colemak</item>
+ <item>bepo</item>
<item>pcqwerty</item>
</string-array>
<!-- Predefined keyboard layout display names -->
@@ -61,6 +63,7 @@
<item>AZERTY</item>
<item>Dvorak</item>
<item>Colemak</item>
+ <item>Bépo</item>
<item>PC</item>
</string-array>
<!-- Description for generic subtype that has predefined layout.
@@ -72,10 +75,14 @@
<string name="subtype_generic_azerty">%s (AZERTY)</string>
<string name="subtype_generic_dvorak">%s (Dvorak)</string>
<string name="subtype_generic_colemak">%s (Colemak)</string>
+ <string name="subtype_generic_bepo">%s (Bépo)</string>
<string name="subtype_generic_pcqwerty">%s (PC)</string>
<!-- Description for Bulgarian (BDS) subtype. -->
<string name="subtype_bulgarian_bds">%s (BDS)</string>
+
+ <!-- Description for Bulgarian (BEKL) subtype. -->
+ <string name="subtype_bulgarian_bekl">%s (BEKL)</string>
<!-- Compatibility map from subtypeLocale:subtypeExtraValue to keyboardLayoutSet -->
<string-array name="locale_and_extra_value_to_keyboard_layout_set_map">
diff --git a/java/res/values/keyboard-icons-holo.xml b/java/res/values/keyboard-icons-holo.xml
deleted file mode 100644
index f5484bf..0000000
--- a/java/res/values/keyboard-icons-holo.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="KeyboardIcons.Holo">
- <!-- Keyboard icons -->
- <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
- <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
- <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>
- <item name="iconSpaceKey">@null</item>
- <item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item>
- <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
- <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
- <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo_dark</item>
- <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
- <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
- <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item>
- <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_dark</item>
- <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo_dark</item>
- <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo_dark</item>
- <item name="iconEmojiActionKey">@drawable/sym_keyboard_smiley_holo_dark</item>
- <item name="iconEmojiNormalKey">@drawable/sym_keyboard_smiley_holo_dark</item>
- </style>
-</resources>
diff --git a/java/res/values/keyboard-icons-you.xml b/java/res/values/keyboard-icons-you.xml
new file mode 100644
index 0000000..d079578
--- /dev/null
+++ b/java/res/values/keyboard-icons-you.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <style name="KeyboardIcons.You">
+ <!-- Keyboard icons -->
+ <item name="iconShiftKey">@drawable/sym_keyboard_shift_you</item>
+ <item name="iconDeleteKey">@drawable/sym_keyboard_delete_you</item>
+ <item name="iconSettingsKey">@drawable/sym_keyboard_settings_you</item>
+ <item name="iconSpaceKey">@null</item>
+ <item name="iconEnterKey">@drawable/sym_keyboard_return_you</item>
+ <item name="iconGoKey">@drawable/sym_keyboard_next_you</item>
+ <item name="iconSearchKey">@drawable/sym_keyboard_search_you</item>
+ <item name="iconSendKey">@drawable/sym_keyboard_send_you</item>
+ <item name="iconNextKey">@drawable/sym_keyboard_next_you</item>
+ <item name="iconDoneKey">@drawable/sym_keyboard_done_you</item>
+ <item name="iconPreviousKey">@drawable/sym_keyboard_previous_you</item>
+ <item name="iconTabKey">@drawable/sym_keyboard_tab_you</item>
+ <item name="iconShortcutKey">@drawable/sym_keyboard_voice_you</item>
+ <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_you</item>
+ <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_you</item>
+ <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_you</item>
+ <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_you</item>
+ <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_lxx_dark</item>
+ <item name="iconZwjKey">@drawable/sym_keyboard_zwj_lxx_dark</item>
+ <item name="iconEmojiActionKey">@drawable/sym_keyboard_smiley_you</item>
+ <item name="iconEmojiNormalKey">@drawable/sym_keyboard_smiley_you</item>
+ </style>
+</resources>
diff --git a/java/res/values/keyboard-themes.xml b/java/res/values/keyboard-themes.xml
index 26b2582..2932200 100644
--- a/java/res/values/keyboard-themes.xml
+++ b/java/res/values/keyboard-themes.xml
@@ -22,15 +22,15 @@
<string-array name="keyboard_theme_names" translatable="false">
<item>@string/keyboard_theme_material_light</item>
<item>@string/keyboard_theme_material_dark</item>
- <item>@string/keyboard_theme_holo_white</item>
- <item>@string/keyboard_theme_holo_blue</item>
+ <item>@string/keyboard_theme_material_follow_system</item>
+ <item>@string/keyboard_theme_material_you</item>
</string-array>
<!-- An element must be a keyboard theme id of
{@link com.android.inputmethod.keyboard.KeyboardTheme#THEME_ID_ICS} etc. -->
<integer-array name="keyboard_theme_ids" translatable="false">
<item>3</item>
<item>4</item>
- <item>2</item>
- <item>0</item>
+ <item>5</item>
+ <item>6</item>
</integer-array>
</resources>
diff --git a/java/res/values/platform-theme.xml b/java/res/values/platform-theme.xml
index 2854ff7..0eee05c 100644
--- a/java/res/values/platform-theme.xml
+++ b/java/res/values/platform-theme.xml
@@ -20,6 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="platformActivityTheme" parent="@android:style/Theme.DeviceDefault" />
- <style name="platformSettingsTheme" parent="@android:style/Theme.DeviceDefault" />
+ <style name="platformSettingsTheme" parent="@android:style/Theme.DeviceDefault.Settings" />
<style name="platformDialogTheme" parent="@android:style/Theme.DeviceDefault.Dialog" />
</resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 6b985ce..d32ee3c 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -355,6 +355,8 @@
<string name="keyboard_theme_material_dark" translatable="false">Material Dark</string>
<!-- The keyboard theme name, Material Light. This is marked as translatable="false" because this is a proper name of system-wide UI Theme. -->
<string name="keyboard_theme_material_light" translatable="false">Material Light</string>
+ <!-- The keyboard theme name, Material You. This is marked as translatable="false" because this is a proper name of system-wide UI Theme. -->
+ <string name="keyboard_theme_material_you" translatable="false">Material You</string>
<!-- Title of the preference settings for custom input styles (language and keyboard layout pairs) [CHAR LIMIT=35]-->
<string name="custom_input_styles_title">Custom input styles</string>
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
index 2f768de..c4f6940 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -37,11 +37,12 @@
<style name="KeyboardView">
<!-- This keyBackground is needed to run unit tests based on {@link InputTestBase}. -->
<!-- TODO: Apply default {@link KeyboardTheme} to {@link InputTestBase} and remove this. -->
- <item name="keyBackground">@drawable/btn_keyboard_key_klp</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_lxx_light</item>
<item name="keyTypeface">normal</item>
<!-- A negative value to disable key text shadow layer. -->
<item name="keyTextShadowRadius">-1.0</item>
<item name="keyHintLetterPadding">@dimen/config_key_hint_letter_padding</item>
+ <item name="keyHintLetterPaddingVertical">@dimen/config_key_hint_letter_padding_vertical</item>
<item name="keyPopupHintLetterPadding">@dimen/config_key_popup_hint_letter_padding</item>
<item name="keyShiftedLetterHintPadding">@dimen/config_key_shifted_letter_hint_padding</item>
<item name="keyPreviewTextRatio">@fraction/config_key_preview_text_ratio</item>
diff --git a/java/res/values/themes-holo.xml b/java/res/values/themes-holo.xml
deleted file mode 100644
index efac656..0000000
--- a/java/res/values/themes-holo.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2014, 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.
-*/
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style
- name="InputView.Holo"
- parent="InputView"
- />
- <!-- Holo KeyboardView theme (ICS and KLP) -->
- <style
- name="KeyboardView.Holo"
- parent="KeyboardView"
- >
- <item name="keyTypeface">bold</item>
- <item name="keyLetterSize">@fraction/config_key_letter_ratio_holo</item>
- <item name="keyLabelSize">@fraction/config_key_label_ratio_holo</item>
- <item name="keyHintLetterRatio">@fraction/config_key_hint_letter_ratio_holo</item>
- <item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_ratio_holo</item>
- <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio_holo</item>
- <item name="keyLabelOffCenterRatio">-175%</item>
- <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio_holo</item>
- <item name="keyHintLabelOffCenterRatio">200%</item>
- <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
- <item name="keyPopupHintLetter">…</item>
- </style>
-</resources>
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
deleted file mode 100644
index 1a15b0e..0000000
--- a/java/res/values/themes-ics.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="KeyboardTheme.ICS" parent="KeyboardIcons.Holo">
- <item name="inputViewStyle">@style/InputView.Holo</item>
- <item name="keyboardStyle">@style/Keyboard.ICS</item>
- <item name="keyboardViewStyle">@style/KeyboardView.ICS</item>
- <item name="mainKeyboardViewStyle">@style/MainKeyboardView.ICS</item>
- <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.ICS</item>
- <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.ICS</item>
- <!-- Note: ICS theme uses the same style for both general more keys and action more keys. -->
- <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.ICS</item>
- <item name="moreKeysKeyboardViewForActionStyle">@style/MoreKeysKeyboardView.ICS</item>
- <item name="suggestionStripViewStyle">@style/SuggestionStripView.ICS</item>
- <item name="suggestionWordStyle">@style/SuggestionWord.ICS</item>
- </style>
- <style
- name="Keyboard.ICS"
- parent="Keyboard"
- >
- <!-- This should be aligned with KeyboardTheme.THEME_ID_* -->
- <item name="themeId">ICS</item>
- </style>
- <style
- name="KeyboardView.ICS"
- parent="KeyboardView.Holo"
- >
- <item name="android:background">@drawable/keyboard_background_holo</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_ics</item>
- <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_ics</item>
- <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_ics</item>
- <item name="keyTextColor">@color/key_text_color_holo</item>
- <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item>
- <item name="functionalTextColor">@color/key_text_color_holo</item>
- <item name="keyHintLetterColor">@color/key_hint_letter_color_holo</item>
- <item name="keyHintLabelColor">@color/key_hint_label_color_holo</item>
- <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
- <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
- <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
- </style>
- <style
- name="MainKeyboardView.ICS"
- parent="KeyboardView.ICS"
- >
- <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_ics</item>
- <item name="keyPreviewHeight">@dimen/config_key_preview_height_holo</item>
- <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
- <item name="keyPreviewShowUpAnimator">@anim/key_preview_show_up_holo</item>
- <item name="keyPreviewDismissAnimator">@anim/key_preview_dismiss_holo</item>
- <item name="gestureFloatingPreviewTextColor">@color/highlight_color_ics</item>
- <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
- <item name="gestureTrailColor">@color/highlight_color_ics</item>
- <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_ics</item>
- <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
- <item name="languageOnSpacebarTextShadowRadius">1.0</item>
- <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
- </style>
- <!-- Though {@link com.android.inputmethod.keyboard.emoji.EmojiPalettesView} doesn't extend
- {@link com.android.inputmethod.keyboard.KeyboardView}, some views inside it, for instance
- delete button, need themed {@link com.android.inputmethod.keyboard.KeyboardView}
- attributes. -->
- <style
- name="EmojiPalettesView.ICS"
- parent="MainKeyboardView.ICS"
- >
- <item name="categoryIndicatorEnabled">true</item>
- <item name="categoryIndicatorDrawable">@drawable/emoji_category_tab_selected_ics</item>
- <item name="categoryIndicatorBackground">@drawable/emoji_category_tab_unselected_holo_dark</item>
- <item name="categoryPageIndicatorColor">@color/highlight_color_ics</item>
- <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_holo</item>
- <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
- <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
- <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
- <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
- <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
- <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
- <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
- <item name="iconEmojiCategory7Tab">@drawable/ic_emoji_flag_holo_dark</item>
- <item name="iconEmojiCategory8Tab">@drawable/ic_emoji_people_holo_dark</item>
- <item name="iconEmojiCategory9Tab">@drawable/ic_emoji_nature_holo_dark</item>
- <item name="iconEmojiCategory10Tab">@drawable/ic_emoji_food_holo_dark</item>
- <item name="iconEmojiCategory11Tab">@drawable/ic_emoji_places_holo_dark</item>
- <item name="iconEmojiCategory12Tab">@drawable/ic_emoji_activity_holo_dark</item>
- <item name="iconEmojiCategory13Tab">@drawable/ic_emoji_objects_holo_dark</item>
- <item name="iconEmojiCategory14Tab">@drawable/ic_emoji_symbols_holo_dark</item>
- <item name="iconEmojiCategory15Tab">@drawable/ic_emoji_flag_holo_dark</item>
- <item name="iconEmojiCategory16Tab">@drawable/ic_emoji_people_holo_dark</item>
- </style>
- <style
- name="MoreKeysKeyboard.ICS"
- parent="Keyboard.ICS"
- >
- <item name="keyboardTopPadding">0%p</item>
- <item name="keyboardBottomPadding">0%p</item>
- <item name="horizontalGap">0%p</item>
- <item name="touchPositionCorrectionData">@null</item>
- </style>
- <style
- name="MoreKeysKeyboardView.ICS"
- parent="KeyboardView.ICS"
- >
- <item name="android:background">@drawable/keyboard_popup_panel_background_ics</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
- <item name="divider">@drawable/more_keys_divider</item>
- <item name="keyTypeface">normal</item>
- <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
- </style>
- <style
- name="SuggestionStripView.ICS"
- parent="KeyboardView.ICS"
- >
- <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
- <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
- <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
- <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
- <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
- <item name="android:src">@drawable/suggestions_strip_divider_holo</item>
- <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
- <item name="colorValidTypedWord">@color/typed_word_color_ics</item>
- <item name="colorTypedWord">@color/typed_word_color_ics</item>
- <item name="colorAutoCorrect">@color/highlight_color_ics</item>
- <item name="colorSuggested">@color/suggested_word_color_ics</item>
- <item name="alphaObsoleted">70%</item>
- </style>
- <style
- name="SuggestionWord.ICS"
- parent="SuggestionWord"
- >
- <item name="android:background">@drawable/btn_suggestion_ics</item>
- <item name="android:textColor">@color/highlight_color_ics</item>
- </style>
-</resources>
diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml
deleted file mode 100644
index 32884db..0000000
--- a/java/res/values/themes-klp.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2015, 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.
-*/
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="KeyboardTheme.KLP" parent="KeyboardIcons.Holo">
- <item name="inputViewStyle">@style/InputView.Holo</item>
- <item name="keyboardStyle">@style/Keyboard.KLP</item>
- <item name="keyboardViewStyle">@style/KeyboardView.KLP</item>
- <item name="mainKeyboardViewStyle">@style/MainKeyboardView.KLP</item>
- <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.KLP</item>
- <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.KLP</item>
- <!-- Note: KLP theme uses the same style for both general more keys and action more keys. -->
- <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.KLP</item>
- <item name="moreKeysKeyboardViewForActionStyle">@style/MoreKeysKeyboardView.KLP</item>
- <item name="suggestionStripViewStyle">@style/SuggestionStripView.KLP</item>
- <item name="suggestionWordStyle">@style/SuggestionWord.KLP</item>
- </style>
- <style
- name="Keyboard.KLP"
- parent="Keyboard"
- >
- <!-- This should be aligned with KeyboardTheme.THEME_ID_* -->
- <item name="themeId">KLP</item>
- </style>
- <style
- name="KeyboardView.KLP"
- parent="KeyboardView.Holo"
- >
- <item name="android:background">@drawable/keyboard_background_holo</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_klp</item>
- <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_klp</item>
- <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_klp</item>
- <item name="keyTextColor">@color/key_text_color_holo</item>
- <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item>
- <item name="functionalTextColor">@color/key_text_color_holo</item>
- <item name="keyHintLetterColor">@color/key_hint_letter_color_holo</item>
- <item name="keyHintLabelColor">@color/key_hint_label_color_holo</item>
- <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
- <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
- <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
- </style>
- <style
- name="MainKeyboardView.KLP"
- parent="KeyboardView.KLP"
- >
- <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_klp</item>
- <item name="keyPreviewHeight">@dimen/config_key_preview_height_holo</item>
- <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
- <item name="keyPreviewShowUpAnimator">@anim/key_preview_show_up_holo</item>
- <item name="keyPreviewDismissAnimator">@anim/key_preview_dismiss_holo</item>
- <item name="gestureFloatingPreviewTextColor">@color/highlight_color_klp</item>
- <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
- <item name="gestureTrailColor">@color/highlight_color_klp</item>
- <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_klp</item>
- <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
- <item name="languageOnSpacebarTextShadowRadius">1.0</item>
- <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
- </style>
- <!-- Though {@link com.android.inputmethod.keyboard.emoji.EmojiPalettesView} doesn't extend
- {@link com.android.inputmethod.keyboard.KeyboardView}, some views inside it, for instance
- delete button, need themed {@link com.android.inputmethod.keyboard.KeyboardView}
- attributes. -->
- <style
- name="EmojiPalettesView.KLP"
- parent="MainKeyboardView.KLP"
- >
- <item name="categoryIndicatorEnabled">true</item>
- <item name="categoryIndicatorDrawable">@drawable/emoji_category_tab_selected_klp</item>
- <item name="categoryIndicatorBackground">@drawable/emoji_category_tab_unselected_holo_dark</item>
- <item name="categoryPageIndicatorColor">@color/highlight_color_klp</item>
- <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_holo</item>
- <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
- <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
- <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
- <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
- <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
- <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
- <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
- <item name="iconEmojiCategory7Tab">@drawable/ic_emoji_flag_holo_dark</item>
- <item name="iconEmojiCategory8Tab">@drawable/ic_emoji_people_holo_dark</item>
- <item name="iconEmojiCategory9Tab">@drawable/ic_emoji_nature_holo_dark</item>
- <item name="iconEmojiCategory10Tab">@drawable/ic_emoji_food_holo_dark</item>
- <item name="iconEmojiCategory11Tab">@drawable/ic_emoji_places_holo_dark</item>
- <item name="iconEmojiCategory12Tab">@drawable/ic_emoji_activity_holo_dark</item>
- <item name="iconEmojiCategory13Tab">@drawable/ic_emoji_objects_holo_dark</item>
- <item name="iconEmojiCategory14Tab">@drawable/ic_emoji_symbols_holo_dark</item>
- <item name="iconEmojiCategory15Tab">@drawable/ic_emoji_flag_holo_dark</item>
- <item name="iconEmojiCategory16Tab">@drawable/ic_emoji_people_holo_dark</item>
- </style>
- <style
- name="MoreKeysKeyboard.KLP"
- parent="Keyboard.KLP"
- >
- <item name="keyboardTopPadding">0%p</item>
- <item name="keyboardBottomPadding">0%p</item>
- <item name="horizontalGap">0%p</item>
- <item name="touchPositionCorrectionData">@null</item>
- </style>
- <style
- name="MoreKeysKeyboardView.KLP"
- parent="KeyboardView.KLP"
- >
- <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item>
- <item name="divider">@drawable/more_keys_divider</item>
- <item name="keyTypeface">normal</item>
- <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
- </style>
- <style
- name="SuggestionStripView.KLP"
- parent="KeyboardView.KLP"
- >
- <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
- <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
- <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
- <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
- <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
- <item name="android:src">@drawable/suggestions_strip_divider_holo</item>
- <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
- <item name="colorValidTypedWord">@color/typed_word_color_klp</item>
- <item name="colorTypedWord">@color/typed_word_color_klp</item>
- <item name="colorAutoCorrect">@color/highlight_color_klp</item>
- <item name="colorSuggested">@color/suggested_word_color_klp</item>
- <item name="alphaObsoleted">70%</item>
- </style>
- <style
- name="SuggestionWord.KLP"
- parent="SuggestionWord"
- >
- <item name="android:background">@drawable/btn_suggestion_klp</item>
- <item name="android:textColor">@color/highlight_color_klp</item>
- </style>
-</resources>
diff --git a/java/res/values/themes-you-colors.xml b/java/res/values/themes-you-colors.xml
new file mode 100644
index 0000000..0dc9925
--- /dev/null
+++ b/java/res/values/themes-you-colors.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <color name="keyboard_background_you">@android:color/system_neutral1_50</color>
+ <!-- Keys -->
+ <color name="keyboard_key_normal_color_you">@android:color/system_neutral1_0</color>
+ <color name="keyboard_key_pressed_color_you">@android:color/system_neutral1_100</color>
+ <color name="keyboard_key_text_color_you">@android:color/system_neutral1_900</color>
+ <color name="keyboard_key_functional_normal_color_you">@android:color/system_accent2_100</color>
+ <color name="keyboard_key_functional_pressed_color_you">@android:color/system_neutral2_200</color>
+ <color name="keyboard_key_functional_text_color_you">@android:color/system_neutral1_900</color>
+ <color name="keyboard_key_action_normal_color_you">@android:color/system_accent1_200</color>
+ <color name="keyboard_key_action_pressed_color_you">@android:color/system_accent1_400</color>
+ <color name="shift_normal_color_you">@android:color/system_neutral1_900</color>
+ <color name="shift_locked_color_you">@android:color/system_neutral1_900</color>
+ <color name="icon_color_you">@android:color/system_neutral1_900</color>
+ <color name="key_hint_letter_color_you">@android:color/system_neutral1_400</color>
+ <!-- Suggestion bar -->
+ <color name="typed_word_color_you">@android:color/system_neutral1_900</color>
+ <color name="auto_correct_color_you">@android:color/system_neutral1_900</color>
+ <color name="suggested_word_color_you">@android:color/system_neutral1_900</color>
+ <!-- Gesture input -->
+ <color name="gesture_trail_color_you">@android:color/system_accent1_500</color>
+ <color name="gesture_floating_preview_text_color_you">@android:color/system_neutral1_1000</color>
+ <!-- Misc -->
+ <color name="highlight_color_you">@android:color/system_accent1_500</color>
+ <color name="emoji_tab_page_indicator_background_you">@android:color/system_neutral1_50</color>
+</resources>
diff --git a/java/res/values/themes-you-dimens.xml b/java/res/values/themes-you-dimens.xml
new file mode 100644
index 0000000..c07f04d
--- /dev/null
+++ b/java/res/values/themes-you-dimens.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <dimen name="keyboard_key_corner_radius_you">8dp</dimen>
+ <dimen name="keyboard_key_action_corner_radius_you">120dp</dimen>
+ <dimen name="keyboard_key_popup_action_size">40dp</dimen>
+ <dimen name="config_gesture_floating_preview_round_radius_you">8dp</dimen>
+</resources>
diff --git a/java/res/values/themes-you.xml b/java/res/values/themes-you.xml
new file mode 100644
index 0000000..e7afb7e
--- /dev/null
+++ b/java/res/values/themes-you.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ SPDX-FileCopyrightText: 2022 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+ <style
+ name="InputView.You"
+ parent="InputView"
+ />
+ <!-- LXX KeyboardView theme (LXX_Light and LXX_Dark) -->
+ <style
+ name="KeyboardView.You_Common"
+ parent="KeyboardView"
+ >
+ <item name="keyTypeface">normal</item>
+ <item name="keyLetterSize">@fraction/config_key_letter_ratio_you</item>
+ <item name="keyLabelSize">@fraction/config_key_label_ratio_lxx</item>
+ <item name="keyHintLetterRatio">@fraction/config_key_hint_letter_ratio_lxx</item>
+ <item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_ratio_lxx</item>
+ <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio_lxx</item>
+ <item name="keyLabelOffCenterRatio">-80%</item>
+ <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio_lxx</item>
+ <item name="keyHintLabelOffCenterRatio">300%</item>
+ <item name="keyLabelFlags">alignHintLabelToBottom</item>
+ <item name="spacebarIconWidthRatio">0.9</item>
+ <!-- No popup hint letter -->
+ <item name="keyPopupHintLetter"></item>
+ <item name="keyHintLetterPadding">@dimen/config_key_hint_letter_padding_you</item>
+ <item name="keyHintLetterPaddingVertical">@dimen/config_key_hint_letter_padding_vertical_you</item>
+ <item name="keyPreviewTextRatio">@fraction/config_key_preview_text_ratio_you</item>
+ </style>
+
+ <style name="KeyboardTheme.You" parent="KeyboardIcons.You">
+ <item name="inputViewStyle">@style/InputView.You</item>
+ <item name="keyboardStyle">@style/Keyboard.You</item>
+ <item name="keyboardViewStyle">@style/KeyboardView.You</item>
+ <item name="mainKeyboardViewStyle">@style/MainKeyboardView.You</item>
+ <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.You</item>
+ <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.You</item>
+ <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.You</item>
+ <item name="moreKeysKeyboardViewForActionStyle">@style/MoreKeysKeyboardView.You.Action</item>
+ <item name="suggestionStripViewStyle">@style/SuggestionStripView.You</item>
+ <item name="suggestionWordStyle">@style/SuggestionWord.You</item>
+ </style>
+ <style
+ name="Keyboard.You"
+ parent="Keyboard"
+ >
+ <!-- This should be aligned with KeyboardTheme.THEME_ID_* -->
+ <item name="themeId">You</item>
+ <item name="verticalGap">@fraction/config_key_vertical_gap_you</item>
+ </style>
+ <style
+ name="KeyboardView.You"
+ parent="KeyboardView.You_Common"
+ >
+ <item name="android:background">@color/keyboard_background_you</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_you</item>
+ <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_you</item>
+ <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_you</item>
+ <item name="keyTextColor">@color/keyboard_key_text_color_you</item>
+ <item name="keyTextInactivatedColor">@color/keyboard_key_functional_text_color_you</item>
+ <item name="functionalTextColor">@color/keyboard_key_functional_text_color_you</item>
+ <item name="keyHintLetterColor">@color/key_hint_letter_color_you</item>
+ <item name="keyHintLabelColor">@color/key_hint_letter_color_you</item>
+ <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_dark</item>
+ <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_dark</item>
+ <item name="keyPreviewTextColor">@color/keyboard_key_text_color_you</item>
+ <item name="gestureFloatingPreviewRoundRadius">@dimen/config_gesture_floating_preview_round_radius_you</item>
+ </style>
+ <style
+ name="MainKeyboardView.You"
+ parent="KeyboardView.You"
+ >
+ <item name="moreKeysKeyboardForActionLayout">@layout/more_keys_keyboard_for_action_lxx</item>
+ <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_you</item>
+ <item name="keyPreviewHeight">@dimen/config_key_preview_height_you</item>
+ <item name="keyPreviewOffset">@dimen/config_key_preview_offset_you</item>
+ <item name="keyPreviewShowUpAnimator">@anim/key_preview_show_up_lxx</item>
+ <item name="keyPreviewDismissAnimator">@anim/key_preview_dismiss_lxx</item>
+ <item name="gestureFloatingPreviewTextColor">@color/gesture_floating_preview_text_color_you</item>
+ <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_you</item>
+ <item name="gestureTrailColor">@color/gesture_trail_color_you</item>
+ <item name="slidingKeyInputPreviewColor">@color/sliding_key_input_preview_color_you</item>
+ <item name="languageOnSpacebarTextColor">@color/key_hint_letter_color_you</item>
+ <!-- A negative value to disable text shadow layer. -->
+ <item name="languageOnSpacebarTextShadowRadius">-1.0</item>
+ </style>
+ <!-- Though {@link com.android.inputmethod.keyboard.emoji.EmojiPalettesView} doesn't extend
+ {@link com.android.inputmethod.keyboard.KeyboardView}, some views inside it, for instance
+ delete button, need themed {@link com.android.inputmethod.keyboard.KeyboardView}
+ attributes. -->
+ <style
+ name="EmojiPalettesView.You"
+ parent="MainKeyboardView.You"
+ >
+ <item name="categoryIndicatorEnabled">false</item>
+ <item name="categoryPageIndicatorColor">@color/highlight_color_you</item>
+ <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_you</item>
+ <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_lxx_light</item>
+ <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_lxx_light</item>
+ <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_lxx_light</item>
+ <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_lxx_light</item>
+ <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_lxx_light</item>
+ <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_lxx_light</item>
+ <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_lxx_light</item>
+ <item name="iconEmojiCategory7Tab">@drawable/ic_emoji_flag_lxx_light</item>
+ <item name="iconEmojiCategory8Tab">@drawable/ic_emoji_people_lxx_light</item>
+ <item name="iconEmojiCategory9Tab">@drawable/ic_emoji_nature_lxx_light</item>
+ <item name="iconEmojiCategory10Tab">@drawable/ic_emoji_food_lxx_light</item>
+ <item name="iconEmojiCategory11Tab">@drawable/ic_emoji_places_lxx_light</item>
+ <item name="iconEmojiCategory12Tab">@drawable/ic_emoji_activity_lxx_light</item>
+ <item name="iconEmojiCategory13Tab">@drawable/ic_emoji_objects_lxx_light</item>
+ <item name="iconEmojiCategory14Tab">@drawable/ic_emoji_symbols_lxx_light</item>
+ <item name="iconEmojiCategory15Tab">@drawable/ic_emoji_flag_lxx_light</item>
+ <item name="iconEmojiCategory16Tab">@drawable/ic_emoji_people_lxx_light</item>
+ </style>
+ <style
+ name="MoreKeysKeyboard.You"
+ parent="Keyboard.You"
+ >
+ <item name="keyboardTopPadding">0%p</item>
+ <item name="keyboardBottomPadding">0%p</item>
+ <item name="horizontalGap">0%p</item>
+ <item name="touchPositionCorrectionData">@null</item>
+ </style>
+ <style
+ name="MoreKeysKeyboardView.You"
+ parent="KeyboardView.You"
+ >
+ <item name="android:background">@drawable/btn_keyboard_key_you</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_you</item>
+ <item name="divider">@drawable/more_keys_divider</item>
+ <item name="keyTypeface">normal</item>
+ <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
+ </style>
+ <style
+ name="MoreKeysKeyboardView.You.Action"
+ parent="MoreKeysKeyboardView.You"
+ >
+ <item name="android:background">@android:color/transparent</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_popup_action_you</item>
+ <item name="divider">@null</item>
+ <item name="keyLabelFlags">keepBackgroundAspectRatio</item>
+ </style>
+ <style
+ name="SuggestionStripView.You"
+ parent="KeyboardView.You"
+ >
+ <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+ <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+ <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+ <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
+ <item name="android:background">@color/keyboard_background_you</item>
+ <item name="android:src">@drawable/suggestions_strip_divider_lxx_dark</item>
+ <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
+ <item name="colorValidTypedWord">@color/typed_word_color_you</item>
+ <item name="colorTypedWord">@color/typed_word_color_you</item>
+ <item name="colorAutoCorrect">@color/auto_correct_color_you</item>
+ <item name="colorSuggested">@color/suggested_word_color_you</item>
+ <item name="alphaObsoleted">70%</item>
+ </style>
+ <style
+ name="SuggestionWord.You"
+ parent="SuggestionWord"
+ >
+ <item name="android:background">@drawable/btn_suggestion_lxx_dark</item>
+ <item name="android:textColor">@color/highlight_color_you</item>
+ </style>
+</resources>
diff --git a/java/res/drawable/btn_suggestion_klp.xml b/java/res/xml-hu-rZZ/kbd_qwerty.xml
similarity index 69%
rename from java/res/drawable/btn_suggestion_klp.xml
rename to java/res/xml-hu-rZZ/kbd_qwerty.xml
index 471165b..2f49b94 100644
--- a/java/res/drawable/btn_suggestion_klp.xml
+++ b/java/res/xml-hu-rZZ/kbd_qwerty.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2013, The Android Open Source Project
+** Copyright 2008, 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.
@@ -18,10 +18,9 @@
*/
-->
-<selector
- xmlns:android="http://schemas.android.com/apk/res/android"
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <item
- android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-</selector>
+ <include
+ latin:keyboardLayout="@xml/rows_qwerty" />
+</Keyboard>
diff --git a/java/res/xml-sw600dp-land/rows_qwerty.xml b/java/res/xml-sw600dp-land/rows_qwerty.xml
index b580dcf..84013b8 100644
--- a/java/res/xml-sw600dp-land/rows_qwerty.xml
+++ b/java/res/xml-sw600dp-land/rows_qwerty.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<!-- First row -->
<Row>
<switch>
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index 3d25f42..3912470 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -106,6 +106,10 @@
<key-style
latin:styleName="emojiKeyStyle"
latin:keySpec="!icon/emoji_normal_key|!code/key_emoji"
+ latin:keyActionFlags="noKeyPreview" />
+ <key-style
+ latin:styleName="emojiKeyStylePopup"
+ latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
latin:keyActionFlags="noKeyPreview"
latin:backgroundType="functional" />
<key-style
diff --git a/java/res/xml-sw600dp/key_styles_enter.xml b/java/res/xml-sw600dp/key_styles_enter.xml
index 63ef2f8..44a4678 100644
--- a/java/res/xml-sw600dp/key_styles_enter.xml
+++ b/java/res/xml-sw600dp/key_styles_enter.xml
@@ -81,7 +81,7 @@
</switch>
<!-- Enter key style -->
<switch>
- <case latin:keyboardTheme="ICS|KLP">
+ <case latin:keyboardTheme="ICS|KLP|You">
<key-style
latin:styleName="defaultEnterKeyStyle"
latin:keySpec="!icon/enter_key|!code/key_enter"
diff --git a/java/res/xml-sw600dp/rows_arabic.xml b/java/res/xml-sw600dp/rows_arabic.xml
index 1b7b416..3d67b54 100644
--- a/java/res/xml-sw600dp/rows_arabic.xml
+++ b/java/res/xml-sw600dp/rows_arabic.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_azerty.xml b/java/res/xml-sw600dp/rows_azerty.xml
index cdc9185..3b3a1e4 100644
--- a/java/res/xml-sw600dp/rows_azerty.xml
+++ b/java/res/xml-sw600dp/rows_azerty.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_bengali.xml b/java/res/xml-sw600dp/rows_bengali.xml
index 10b3e4f..77caa2a 100644
--- a/java/res/xml-sw600dp/rows_bengali.xml
+++ b/java/res/xml-sw600dp/rows_bengali.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_bengali_akkhor.xml b/java/res/xml-sw600dp/rows_bengali_akkhor.xml
index 3e81a14..139340c 100644
--- a/java/res/xml-sw600dp/rows_bengali_akkhor.xml
+++ b/java/res/xml-sw600dp/rows_bengali_akkhor.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyLabelFlags="fontNormal"
latin:keyWidth="8.182%p" >
diff --git a/java/res/xml-sw600dp/rows_bepo.xml b/java/res/xml-sw600dp/rows_bepo.xml
new file mode 100644
index 0000000..66689de
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_bepo.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
+ <Row
+ latin:keyWidth="9.0%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bepo1" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="9.0%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bepo2" />
+ <Key
+ latin:keyStyle="enterKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="9.0%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.0%p" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bepo3" />
+ <include
+ latin:keyboardLayout="@xml/keys_exclamation_question" />
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_bulgarian.xml b/java/res/xml-sw600dp/rows_bulgarian.xml
index c73aa1c..3d43998 100644
--- a/java/res/xml-sw600dp/rows_bulgarian.xml
+++ b/java/res/xml-sw600dp/rows_bulgarian.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
>
diff --git a/java/res/xml-sw600dp/rows_bulgarian_bds.xml b/java/res/xml-sw600dp/rows_bulgarian_bds.xml
index bc773ee..c3ff43a 100644
--- a/java/res/xml-sw600dp/rows_bulgarian_bds.xml
+++ b/java/res/xml-sw600dp/rows_bulgarian_bds.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
>
diff --git a/java/res/xml-sw600dp/rows_bulgarian_bekl.xml b/java/res/xml-sw600dp/rows_bulgarian_bekl.xml
new file mode 100644
index 0000000..4e1fd68
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_bulgarian_bekl.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
+ <Row
+ latin:keyWidth="8.182%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bulgarian_bekl1" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="8.182%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bulgarian_bekl2" />
+ <Key
+ latin:keyStyle="enterKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="8.182%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.0%p" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bulgarian_bekl3" />
+ <include
+ latin:keyboardLayout="@xml/keys_exclamation_question" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_colemak.xml b/java/res/xml-sw600dp/rows_colemak.xml
index 7559bfb..5269aa1 100644
--- a/java/res/xml-sw600dp/rows_colemak.xml
+++ b/java/res/xml-sw600dp/rows_colemak.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_dvorak.xml b/java/res/xml-sw600dp/rows_dvorak.xml
index c8f5e3a..7906e99 100644
--- a/java/res/xml-sw600dp/rows_dvorak.xml
+++ b/java/res/xml-sw600dp/rows_dvorak.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_east_slavic.xml b/java/res/xml-sw600dp/rows_east_slavic.xml
index c5045ff..fda4770 100644
--- a/java/res/xml-sw600dp/rows_east_slavic.xml
+++ b/java/res/xml-sw600dp/rows_east_slavic.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
>
diff --git a/java/res/xml-sw600dp/rows_farsi.xml b/java/res/xml-sw600dp/rows_farsi.xml
index 1d098df..26b54ea 100644
--- a/java/res/xml-sw600dp/rows_farsi.xml
+++ b/java/res/xml-sw600dp/rows_farsi.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_georgian.xml b/java/res/xml-sw600dp/rows_georgian.xml
index 891cbc1..7ec671c 100644
--- a/java/res/xml-sw600dp/rows_georgian.xml
+++ b/java/res/xml-sw600dp/rows_georgian.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_greek.xml b/java/res/xml-sw600dp/rows_greek.xml
index 60ee478..460f5af 100644
--- a/java/res/xml-sw600dp/rows_greek.xml
+++ b/java/res/xml-sw600dp/rows_greek.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_hebrew.xml b/java/res/xml-sw600dp/rows_hebrew.xml
index 86b3420..c42758b 100644
--- a/java/res/xml-sw600dp/rows_hebrew.xml
+++ b/java/res/xml-sw600dp/rows_hebrew.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_hindi.xml b/java/res/xml-sw600dp/rows_hindi.xml
index 42b92a7..a2a2940 100644
--- a/java/res/xml-sw600dp/rows_hindi.xml
+++ b/java/res/xml-sw600dp/rows_hindi.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_hindi_compact.xml b/java/res/xml-sw600dp/rows_hindi_compact.xml
index 6493451..9459c6f 100644
--- a/java/res/xml-sw600dp/rows_hindi_compact.xml
+++ b/java/res/xml-sw600dp/rows_hindi_compact.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_kannada.xml b/java/res/xml-sw600dp/rows_kannada.xml
index 55eedc5..53c1769 100644
--- a/java/res/xml-sw600dp/rows_kannada.xml
+++ b/java/res/xml-sw600dp/rows_kannada.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml-sw600dp/rows_malayalam.xml b/java/res/xml-sw600dp/rows_malayalam.xml
index 1df7e6e..9cd6cf5 100644
--- a/java/res/xml-sw600dp/rows_malayalam.xml
+++ b/java/res/xml-sw600dp/rows_malayalam.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml-sw600dp/rows_marathi.xml b/java/res/xml-sw600dp/rows_marathi.xml
index c77bea5..f0ef4de 100644
--- a/java/res/xml-sw600dp/rows_marathi.xml
+++ b/java/res/xml-sw600dp/rows_marathi.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_mongolian.xml b/java/res/xml-sw600dp/rows_mongolian.xml
index 8e39e62..e941c7f 100644
--- a/java/res/xml-sw600dp/rows_mongolian.xml
+++ b/java/res/xml-sw600dp/rows_mongolian.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
>
diff --git a/java/res/xml-sw600dp/rows_nepali_romanized.xml b/java/res/xml-sw600dp/rows_nepali_romanized.xml
index 41cd2f9..559cde4 100644
--- a/java/res/xml-sw600dp/rows_nepali_romanized.xml
+++ b/java/res/xml-sw600dp/rows_nepali_romanized.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_nepali_traditional.xml b/java/res/xml-sw600dp/rows_nepali_traditional.xml
index d23ca24..d75113f 100644
--- a/java/res/xml-sw600dp/rows_nepali_traditional.xml
+++ b/java/res/xml-sw600dp/rows_nepali_traditional.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml-sw600dp/rows_nordic.xml b/java/res/xml-sw600dp/rows_nordic.xml
index 56fa406..bebbb1f 100644
--- a/java/res/xml-sw600dp/rows_nordic.xml
+++ b/java/res/xml-sw600dp/rows_nordic.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
>
diff --git a/java/res/xml-sw600dp/rows_qwerty.xml b/java/res/xml-sw600dp/rows_qwerty.xml
index 51df4b0..0750d63 100644
--- a/java/res/xml-sw600dp/rows_qwerty.xml
+++ b/java/res/xml-sw600dp/rows_qwerty.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<!-- TODO: Consolidate the layout specification between protrait and landscape.
Ideally just the keyWidth should be different and the spacer should adjust to fill
the available space. -->
diff --git a/java/res/xml-sw600dp/rows_qwertz.xml b/java/res/xml-sw600dp/rows_qwertz.xml
index 3b59dec..60dfd44 100644
--- a/java/res/xml-sw600dp/rows_qwertz.xml
+++ b/java/res/xml-sw600dp/rows_qwertz.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
@@ -36,7 +37,7 @@
latin:keyWidth="9.0%p"
>
<include
- latin:keyboardLayout="@xml/rowkeys_qwerty2"
+ latin:keyboardLayout="@xml/rowkeys_qwertz2"
latin:keyXPos="4.5%p" />
<Key
latin:keyStyle="enterKeyStyle"
diff --git a/java/res/xml-sw600dp/rows_serbian_qwertz.xml b/java/res/xml-sw600dp/rows_serbian_qwertz.xml
index a3fb625..ff16d66 100644
--- a/java/res/xml-sw600dp/rows_serbian_qwertz.xml
+++ b/java/res/xml-sw600dp/rows_serbian_qwertz.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row latin:keyWidth="8.182%p" >
<include latin:keyboardLayout="@xml/rowkeys_serbian_qwertz1" />
<Key
diff --git a/java/res/xml-sw600dp/rows_sinhala.xml b/java/res/xml-sw600dp/rows_sinhala.xml
index 2786028..7cd1004 100644
--- a/java/res/xml-sw600dp/rows_sinhala.xml
+++ b/java/res/xml-sw600dp/rows_sinhala.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml-sw600dp/rows_south_slavic.xml b/java/res/xml-sw600dp/rows_south_slavic.xml
index 5053988..09d8c90 100644
--- a/java/res/xml-sw600dp/rows_south_slavic.xml
+++ b/java/res/xml-sw600dp/rows_south_slavic.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
>
diff --git a/java/res/xml-sw600dp/rows_spanish.xml b/java/res/xml-sw600dp/rows_spanish.xml
index 1092c26..55c66cd 100644
--- a/java/res/xml-sw600dp/rows_spanish.xml
+++ b/java/res/xml-sw600dp/rows_spanish.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_swiss.xml b/java/res/xml-sw600dp/rows_swiss.xml
index 4f4ca85..8c647fc 100644
--- a/java/res/xml-sw600dp/rows_swiss.xml
+++ b/java/res/xml-sw600dp/rows_swiss.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
>
diff --git a/java/res/xml-sw600dp/rows_symbols.xml b/java/res/xml-sw600dp/rows_symbols.xml
index 05e7c68..42e31f1 100644
--- a/java/res/xml-sw600dp/rows_symbols.xml
+++ b/java/res/xml-sw600dp/rows_symbols.xml
@@ -34,6 +34,18 @@
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
</Row>
+ <switch>
+ <case
+ latin:numberRowEnabled="true"
+ >
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_symbols_shift1" />
+ </Row>
+ </case>
+ </switch>
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_symbols_shift.xml b/java/res/xml-sw600dp/rows_symbols_shift.xml
index 70ac42e..cc1a392 100644
--- a/java/res/xml-sw600dp/rows_symbols_shift.xml
+++ b/java/res/xml-sw600dp/rows_symbols_shift.xml
@@ -25,6 +25,7 @@
latin:keyboardLayout="@xml/key_styles_common" />
<include
latin:keyboardLayout="@xml/key_styles_currency" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.0%p"
>
diff --git a/java/res/xml-sw600dp/rows_tamil.xml b/java/res/xml-sw600dp/rows_tamil.xml
index 785e751..8b377f8 100644
--- a/java/res/xml-sw600dp/rows_tamil.xml
+++ b/java/res/xml-sw600dp/rows_tamil.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml-sw600dp/rows_telugu.xml b/java/res/xml-sw600dp/rows_telugu.xml
index c9aeb7e..0eb339d 100644
--- a/java/res/xml-sw600dp/rows_telugu.xml
+++ b/java/res/xml-sw600dp/rows_telugu.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="8.182%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml-sw600dp/rows_uzbek.xml b/java/res/xml-sw600dp/rows_uzbek.xml
index 3cd9940..4cb3ed2 100644
--- a/java/res/xml-sw600dp/rows_uzbek.xml
+++ b/java/res/xml-sw600dp/rows_uzbek.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row latin:keyWidth="8.182%p" >
<include latin:keyboardLayout="@xml/rowkeys_uzbek1" />
<Key
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/xml/kbd_bepo.xml
similarity index 65%
copy from java/res/drawable/btn_keyboard_key_popup_klp.xml
copy to java/res/xml/kbd_bepo.xml
index 9dfc93a..4f961aa 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/xml/kbd_bepo.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!-- Copyright (C) 2015 The CyanogenMod Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -12,10 +12,10 @@
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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
- <item android:drawable="@android:color/transparent" />
-</selector>
+ -->
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/rows_bepo" />
+</Keyboard>
diff --git a/java/res/drawable/btn_suggestion_klp.xml b/java/res/xml/kbd_bulgarian_bekl.xml
similarity index 69%
copy from java/res/drawable/btn_suggestion_klp.xml
copy to java/res/xml/kbd_bulgarian_bekl.xml
index 471165b..44baeac 100644
--- a/java/res/drawable/btn_suggestion_klp.xml
+++ b/java/res/xml/kbd_bulgarian_bekl.xml
@@ -2,9 +2,9 @@
<!--
/*
**
-** Copyright 2013, The Android Open Source Project
+** Copyright 2012, The Android Open Source Project
**
-** Licensed under the Apache License, Version 2.0 (the "License");
+** 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
**
@@ -18,10 +18,9 @@
*/
-->
-<selector
- xmlns:android="http://schemas.android.com/apk/res/android"
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <item
- android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-</selector>
+ <include
+ latin:keyboardLayout="@xml/rows_bulgarian_bekl" />
+</Keyboard>
diff --git a/java/res/xml/key_emoji.xml b/java/res/xml/key_emoji.xml
index 473dd21..3201641 100644
--- a/java/res/xml/key_emoji.xml
+++ b/java/res/xml/key_emoji.xml
@@ -26,13 +26,11 @@
latin:mode="email|url"
>
<Key
- latin:keyStyle="comKeyStyle"
- latin:keyWidth="fillRight" />
+ latin:keyStyle="comKeyStyle" />
</case>
<default>
<Key
- latin:keyStyle="emojiKeyStyle"
- latin:keyWidth="fillRight" />
+ latin:keyStyle="emojiKeyStylePopup" />
</default>
</switch>
</merge>
diff --git a/java/res/xml/key_space_5kw.xml b/java/res/xml/key_space_5kw.xml
index 692c245..d845e2e 100644
--- a/java/res/xml/key_space_5kw.xml
+++ b/java/res/xml/key_space_5kw.xml
@@ -45,6 +45,7 @@
latin:keyStyle="zwnjKeyStyle" />
</case>
<case
+ latin:emojiKeyEnabled="false"
latin:languageSwitchKeyEnabled="true"
>
<Key
@@ -53,6 +54,15 @@
latin:keyStyle="spaceKeyStyle"
latin:keyWidth="40%p" />
</case>
+ <case
+ latin:emojiKeyEnabled="true"
+ >
+ <Key
+ latin:keyStyle="emojiKeyStyle" />
+ <Key
+ latin:keyStyle="spaceKeyStyle"
+ latin:keyWidth="40%p" />
+ </case>
<!-- languageSwitchKeyEnabled="false" -->
<default>
<Key
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index fbc44da..a1ce2ea 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -77,24 +77,16 @@
latin:keyActionFlags="isRepeatable|noKeyPreview"
latin:backgroundType="functional" />
<!-- emojiKeyStyle must be defined before including @xml/key_syles_enter. -->
- <switch>
- <case latin:keyboardTheme="ICS|KLP">
- <key-style
- latin:styleName="emojiKeyStyle"
- latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
- latin:keyActionFlags="noKeyPreview"
- latin:backgroundType="action" />
- </case>
- <!-- keyboardTheme="LXXLight|LXXDark" -->
- <default>
- <key-style
- latin:styleName="emojiKeyStyle"
- latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
- latin:keyLabelFlags="keepBackgroundAspectRatio"
- latin:keyActionFlags="noKeyPreview"
- latin:backgroundType="action" />
- </default>
- </switch>
+ <key-style
+ latin:styleName="emojiKeyStyle"
+ latin:keySpec="!icon/emoji_normal_key|!code/key_emoji"
+ latin:keyActionFlags="noKeyPreview" />
+ <key-style
+ latin:styleName="emojiKeyStylePopup"
+ latin:keySpec="!icon/emoji_action_key|!code/key_emoji"
+ latin:keyLabelFlags="keepBackgroundAspectRatio"
+ latin:keyActionFlags="noKeyPreview"
+ latin:backgroundType="action" />
<include
latin:keyboardLayout="@xml/key_styles_enter" />
<!-- TODO: Currently there is no way to specify icon alignment per theme. -->
diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml
index de5e6f2..67b6d6b 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -23,59 +23,84 @@
<case latin:passwordInput="true">
<include latin:keyboardLayout="@xml/key_styles_currency_dollar" />
</case>
- <!-- Countries using Euro currency, 23 countries as of November 2012.
- 1. Andorra (ca_AD, ca_ES)
- 2. Austria (de_AT)
- 3. Belgium (nl_BE, fr_BE, de_BE)
- 4. Cyprus (el_CY, tr_CY)
- 5. Estonia (et_EE)
- 6. Finland (fi_FI, sv_FI)
- 7. France (fr_FR)
- 8. Germany (de_DE)
- 9. Greece (el_GR)
- 10. Ireland (ga_IE, en_IE)
- 11. Italy (it_IT)
- 12. Kosovo (sq_XK, sr_XK)
- 13. Luxembourg (lb_LU, fr_LU, de_LU)
- 14. Malta (mt_MT, en_MT)
- 15. Monaco (fr_MO)
- 16. Montenegro (??_ME)
- 17. Netherlands (nl_NL)
- 18. Portugal (pt_PT)
- 19. San Marino (it_SM)
- 20. Slovakia (sk_SK)
- 21. Slovenia (sl_SI)
- 22. Spain (es_ES, ca_ES, eu_ES, gl_ES)
- 23. Vatican City (it_VA) -->
- <case latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA">
+ <!-- List of countries that should have the euro symbol, due to proximity or membership in
+ the European Union and/or Eurozone as of September 2019.
+ 1. Andorra (ca_AD, ca_ES)
+ 2. Austria (de_AT)
+ 3. Belgium (nl_BE, fr_BE, de_BE)
+ 4. Bulgaria (bg_BG)
+ 5. Croatia (hr_HR)
+ 6. Cyprus (el_CY, tr_CY)
+ 7. Czech Republic (cs_CZ)
+ 8. Denmark (da_DK)
+ 9. Estonia (et_EE)
+ 10. Finland (fi_FI, sv_FI)
+ 11. France (fr_FR)
+ 12. Germany (de_DE)
+ 13. Greece (el_GR)
+ 14. Hungary (hu_HU)
+ 15. Ireland (ga_IE, en_IE)
+ 16. Italy (it_IT)
+ 17. Kosovo (sq_XK, sr_XK)
+ 18. Latvia (lv_LV)
+ 19. Lithuania (lt_LT)
+ 20. Luxembourg (lb_LU, fr_LU, de_LU)
+ 21. Malta (mt_MT, en_MT)
+ 22. Monaco (fr_MO)
+ 23. Montenegro (sr_ME)
+ 24. Netherlands (nl_NL)
+ 25. Poland (pl_PL)
+ 26. Portugal (pt_PT)
+ 27. Romania (ro_RO)
+ 28. San Marino (it_SM)
+ 29. Slovakia (sk_SK)
+ 30. Slovenia (sl_SI)
+ 31. Spain (es_ES, ca_ES, eu_ES, gl_ES)
+ 32. Vatican City (it_VA) -->
+ <case latin:countryCode="AD|AT|BE|BG|HR|CY|CZ|DA|EE|FI|FR|DE|GR|HU|IE|IT|XK|LV|LT|LU|MT|MO|ME|NL|PL|PT|RO|SM|SK|SI|ES|VA">
<include latin:keyboardLayout="@xml/key_styles_currency_euro" />
</case>
- <!-- Note: Some subtype locale may not have country code, and it it supposed to indicate the
- country where the language originally/mainly spoken. -->
- <!-- Though Denmark, Sweden and Turkey don't use Euro as their currency, having the Euro
- sign on the symbol keyboard might be useful. Especially Danish krone (kr), Swedish
- krona (kr) and Turkish lira (TL) can be represented by usual alphabet letters. -->
- <!-- TODO: The currency sign of Turkish Lira was created in 2012 and assigned U+20BA for
- its unicode, although there is no font glyph for it as of November 2012. -->
- <!-- da: Denmark (da_DK)
+ <!-- Note: Some subtype locales may not have a country code, and it is supposed to indicate
+ the country where the language is originally and/or mainly spoken. -->
+ <!-- bg: Bulgaria (bg_BG)
+ ca: Spain (ca_ES), Andorra (ca_AD, ca_ES)
+ cs: Czech Republic (cs_CZ)
+ da: Denmark (da_DK)
de: Germany (de_DE)
+ el: Greece (el_GR)
+ en: Ireland (en_IE), Malta (en_MT)
es: Spain (es_ES)
+ et: Estonia (et_EE)
+ eu: Spain (eu_ES)
fi: Finland (fi_FI)
- fr: France(fr_FR)
+ fr: France (fr_FR)
+ ga: Ireland (ga_IE)
+ gl: Spain (gl_ES)
+ hr: Croatia (hr_HR)
+ hu: Hungary (hu_HU)
it: Italy (it_IT)
+ lb: Luxembourg (lb_LU, fr_LU, de_LU)
+ lt: Lithuania (lt_LT)
+ lv: Latvia (lv_LV)
+ mt: Malta (mt_MT, en_MT)
nl: Netherlands (nl_NL)
+ pl: Poland (pl_PL)
+ pt: Portugal (pt_PT)
+ ro: Romania (ro_RO)
sk: Slovakia (sk_SK)
sl: Slovenia (sl_SL)
+ sq: Kosovo (sq_XK)
+ sr: Kosovo (sq_SR), Montenegro (sr_ME)
sv: Sweden (sv_SV)
- tr: Trukey (tr_TR) -->
- <case latin:localeCode="da|de|es|el|fi|fr|it|nl|sk|sl|sv|tr">
+ tr: Cyprus (tr_CY) -->
+ <case latin:localeCode="bg|ca|cs|da|de|el|en|es|et|eu|fi|fr|ga|gl|hr|hu|it|lb|lt|lv|mt|nl|pl|pt|ro|sk|sl|sq|sr|sv|tr">
<include latin:keyboardLayout="@xml/key_styles_currency_euro" />
</case>
<!-- ca: Catalan (Andorra, Spain)
- et: Estonian (Estonia)
- lb: Luxembougish (Luxembourg)
+ eu: Basque (France, Spain)
+ lb: Luxembourgish (Luxembourg)
mt: Maltese (Malta) -->
- <case latin:languageCode="ca|et|lb|mt">
+ <case latin:languageCode="ca|eu|lb|mt">
<include latin:keyboardLayout="@xml/key_styles_currency_euro" />
</case>
<!-- fa: Persian (Rial and Afgahni)
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 564f465..56065a8 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -213,7 +213,7 @@
</switch>
<!-- Enter key style -->
<switch>
- <case latin:keyboardTheme="ICS|KLP">
+ <case latin:keyboardTheme="ICS|KLP|You">
<key-style
latin:styleName="defaultEnterKeyStyle"
latin:keySpec="!icon/enter_key|!code/key_enter"
@@ -248,13 +248,6 @@
<!-- Smiley in textShortMessage field.
This <case> should be after Shift + Enter <case> and before any of action <case>. -->
<case
- latin:mode="im"
- >
- <key-style
- latin:styleName="enterKeyStyle"
- latin:parentStyle="emojiKeyStyle" />
- </case>
- <case
latin:imeAction="actionGo"
>
<key-style
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index 911c276..bb88b97 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -103,18 +103,16 @@
<key-style
latin:styleName="numSpaceKeyStyle"
latin:keySpec="!icon/space_key_for_number_layout|!code/key_space"
- latin:keyLabelFlags="alignIconToBottom"
- latin:keyActionFlags="enableLongPress"
+ latin:backgroundType="functional"
latin:parentStyle="numKeyBaseStyle" />
<!-- TODO: Consolidate these space key styles with numSpaceKeyStyle above by introducing <case>
predicator that checks device form-factor. -->
<switch>
- <case latin:keyboardTheme="ICS|KLP">
+ <case latin:keyboardTheme="ICS|KLP|You">
<key-style
latin:styleName="tabletNumSpaceKeyStyle"
latin:keySpec="!icon/space_key|!code/key_space"
latin:backgroundType="functional"
- latin:keyActionFlags="enableLongPress"
latin:parentStyle="numKeyBaseStyle" />
</case>
<case latin:keyboardTheme="LXXLight|LXXDark">
diff --git a/java/res/xml/keyboard_layout_set_bepo.xml b/java/res/xml/keyboard_layout_set_bepo.xml
new file mode 100644
index 0000000..6a38d40
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_bepo.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<KeyboardLayoutSet
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+ <Element
+ latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_bepo"
+ latin:enableProximityCharsCorrection="true" />
+ <Element
+ latin:elementName="symbols"
+ latin:elementKeyboard="@xml/kbd_symbols" />
+ <Element
+ latin:elementName="symbolsShifted"
+ latin:elementKeyboard="@xml/kbd_symbols_shift" />
+ <Element
+ latin:elementName="phone"
+ latin:elementKeyboard="@xml/kbd_phone" />
+ <Element
+ latin:elementName="phoneSymbols"
+ latin:elementKeyboard="@xml/kbd_phone_symbols" />
+ <Element
+ latin:elementName="number"
+ latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_bulgarian_bekl.xml b/java/res/xml/keyboard_layout_set_bulgarian_bekl.xml
new file mode 100644
index 0000000..087b451
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_bulgarian_bekl.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<KeyboardLayoutSet
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+ <Feature
+ latin:supportedScript="cyrillic" />
+ <Element
+ latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_bulgarian_bekl"
+ latin:enableProximityCharsCorrection="true" />
+ <Element
+ latin:elementName="symbols"
+ latin:elementKeyboard="@xml/kbd_symbols" />
+ <Element
+ latin:elementName="symbolsShifted"
+ latin:elementKeyboard="@xml/kbd_symbols_shift" />
+ <Element
+ latin:elementName="phone"
+ latin:elementKeyboard="@xml/kbd_phone" />
+ <Element
+ latin:elementName="phoneSymbols"
+ latin:elementKeyboard="@xml/kbd_phone_symbols" />
+ <Element
+ latin:elementName="number"
+ latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 3ab2543..b680b19 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -28,6 +28,7 @@
be_BY: Belarusian (Belarus)/east_slavic
bg: Bulgarian/bulgarian
bg: Bulgarian/bulgarian_bds
+ bg: Bulgarian/bulgarian_bekl
bn_BD: Bengali (Bangladesh)/bengali_akkhor
bn_IN: Bengali (India)/bengali
ca: Catalan/spanish
@@ -36,6 +37,7 @@
de: German/qwertz
de_CH: German (Switzerland)/swiss
el: Greek/greek
+ en_AU: English (Australia)/qwerty
en_IN: English (India)/qwerty
en_US: English (United States)/qwerty
en_GB: English (Great Britain)/qwerty
@@ -56,6 +58,7 @@
hi_ZZ: Hinglish/qwerty # This is a preliminary keyboard layout.
hr: Croatian/qwertz
hu: Hungarian/qwertz
+ hu_HU: Hungarian/qwerty
hy_AM: Armenian (Armenia) Phonetic/armenian_phonetic
in: Indonesian/qwerty # "id" is the official language code of Indonesian.
is: Icelandic/qwerty
@@ -117,6 +120,14 @@
android:isDefault="@bool/im_is_default"
android:supportsSwitchingToNextInputMethod="true">
<subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_generic"
+ android:subtypeId="0xc9194f97"
+ android:imeSubtypeLocale="en_AU"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+ android:isAsciiCapable="true"
+ />
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_en_US"
android:subtypeId="0xc9194f98"
android:imeSubtypeLocale="en_US"
@@ -183,6 +194,14 @@
android:isAsciiCapable="false"
/>
<subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_bulgarian_bekl"
+ android:subtypeId="0x3b1e10e1"
+ android:imeSubtypeLocale="bg"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="KeyboardLayoutSet=bulgarian_bekl,EmojiCapable"
+ android:isAsciiCapable="false"
+ />
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0xa2144b0c"
android:imeSubtypeLocale="bn_BD"
@@ -398,6 +417,13 @@
android:isAsciiCapable="true"
/>
<subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_hu_ZZ"
+ android:imeSubtypeLocale="hu_ZZ"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+ android:isAsciiCapable="true"
+ />
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
android:subtypeId="0xe39ac3ca"
android:imeSubtypeLocale="hy_AM"
@@ -489,6 +515,13 @@
/>
<subtype android:icon="@drawable/ic_ime_switcher_dark"
android:label="@string/subtype_generic"
+ android:subtypeId="0x6c624c55"
+ android:imeSubtypeLocale="lb"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="KeyboardLayoutSet=qwertz,AsciiCapable,EmojiCapable"
+ />
+ <subtype android:icon="@drawable/ic_ime_switcher_dark"
+ android:label="@string/subtype_generic"
android:subtypeId="0x8315772c"
android:imeSubtypeLocale="lo_LA"
android:imeSubtypeMode="keyboard"
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index f01909f..b5c34f9 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -21,25 +21,31 @@
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.PreferencesSettingsFragment"
android:title="@string/settings_screen_preferences"
- android:key="screen_preferences" />
+ android:key="screen_preferences"
+ android:icon="@drawable/ic_settings_preferences" />
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.AccountsSettingsFragment"
android:title="@string/settings_screen_accounts"
- android:key="screen_accounts" />
+ android:key="screen_accounts"
+ android:icon="@drawable/ic_settings_privacy" />
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.AppearanceSettingsFragment"
android:title="@string/settings_screen_appearance"
- android:key="screen_appearance" />
+ android:key="screen_appearance"
+ android:icon="@drawable/ic_settings_appearance" />
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.GestureSettingsFragment"
android:title="@string/settings_screen_gesture"
- android:key="screen_gesture" />
+ android:key="screen_gesture"
+ android:icon="@drawable/ic_settings_gesture" />
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.CorrectionSettingsFragment"
android:title="@string/settings_screen_correction"
- android:key="screen_correction" />
+ android:key="screen_correction"
+ android:icon="@drawable/ic_settings_spellcheck" />
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.AdvancedSettingsFragment"
android:title="@string/settings_screen_advanced"
- android:key="screen_advanced" />
+ android:key="screen_advanced"
+ android:icon="@drawable/ic_settings_advanced" />
</PreferenceScreen>
diff --git a/java/res/xml/prefs_screen_advanced.xml b/java/res/xml/prefs_screen_advanced.xml
index b27104a..fb98618 100644
--- a/java/res/xml/prefs_screen_advanced.xml
+++ b/java/res/xml/prefs_screen_advanced.xml
@@ -48,6 +48,16 @@
android:title="@string/show_setup_wizard_icon"
android:summary="@string/show_setup_wizard_icon_summary"
android:persistent="true" />
+ <CheckBoxPreference
+ android:key="pref_space_trackpad"
+ android:title="@string/space_trackpad"
+ android:summary="@string/space_trackpad_summary"
+ android:defaultValue="true" />
+ <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+ android:key="pref_keyboard_height_scale"
+ android:title="@string/prefs_keyboard_height_scale"
+ latin:minValue="50"
+ latin:maxValue="120" /> <!-- percentage -->
<PreferenceScreen
android:fragment="com.android.inputmethod.latin.settings.DebugSettingsFragment"
android:key="screen_debug"
diff --git a/java/res/xml/prefs_screen_debug.xml b/java/res/xml/prefs_screen_debug.xml
index 1ae2d0e..325df57 100644
--- a/java/res/xml/prefs_screen_debug.xml
+++ b/java/res/xml/prefs_screen_debug.xml
@@ -76,17 +76,6 @@
android:key="pref_key_preview_dismiss_duration"
android:title="@string/prefs_key_popup_dismiss_duration_settings"
latin:maxValue="100" /> <!-- milliseconds -->
- <CheckBoxPreference
- android:key="pref_resize_keyboard"
- android:title="@string/prefs_resize_keyboard"
- android:defaultValue="false"
- android:persistent="true" />
- <com.android.inputmethod.latin.settings.SeekBarDialogPreference
- android:dependency="pref_resize_keyboard"
- android:key="pref_keyboard_height_scale"
- android:title="@string/prefs_keyboard_height_scale"
- latin:minValue="50"
- latin:maxValue="120" /> <!-- percentage -->
<PreferenceCategory
android:key="pref_key_dump_dictionaries"
android:title="@string/prefs_dump_dynamic_dicts">
diff --git a/java/res/xml/prefs_screen_preferences.xml b/java/res/xml/prefs_screen_preferences.xml
index 101edc8..d2dc51e 100644
--- a/java/res/xml/prefs_screen_preferences.xml
+++ b/java/res/xml/prefs_screen_preferences.xml
@@ -25,6 +25,24 @@
android:defaultValue="true"
android:persistent="true" />
<CheckBoxPreference
+ android:key="pref_show_number_row"
+ android:title="@string/number_row"
+ android:summary="@string/number_row_summary"
+ android:defaultValue="false"
+ android:persistent="true" />
+ <CheckBoxPreference
+ android:key="pref_show_emoji_key"
+ android:title="@string/show_emoji_key"
+ android:summary="@string/show_emoji_key_summary"
+ android:defaultValue="false"
+ android:persistent="true" />
+ <CheckBoxPreference
+ android:key="pref_show_longpress_hints"
+ android:title="@string/show_longpress_hints"
+ android:summary="@string/show_longpress_hints_summary"
+ android:defaultValue="true"
+ android:persistent="true" />
+ <CheckBoxPreference
android:key="pref_key_use_double_space_period"
android:title="@string/use_double_space_period"
android:summary="@string/use_double_space_period_summary"
diff --git a/java/res/xml/row_number_keys.xml b/java/res/xml/row_number_keys.xml
new file mode 100644
index 0000000..81d8f30
--- /dev/null
+++ b/java/res/xml/row_number_keys.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2023 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res-auto">
+ <switch>
+ <case
+ latin:numberRowEnabled="true"
+ >
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_symbols1" />
+ </Row>
+ </case>
+ </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_bepo1.xml b/java/res/xml/rowkeys_bepo1.xml
new file mode 100644
index 0000000..d1e73b0
--- /dev/null
+++ b/java/res/xml/rowkeys_bepo1.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Key
+ latin:keySpec="b"
+ latin:keyHintLabel="1"
+ latin:additionalMoreKeys="1"/>
+ <Key
+ latin:keySpec="é"
+ latin:keyHintLabel="2"
+ latin:additionalMoreKeys="2,è" />
+ <Key
+ latin:keySpec="p"
+ latin:keyHintLabel="3"
+ latin:additionalMoreKeys="3" />
+ <Key
+ latin:keySpec="o"
+ latin:keyHintLabel="4"
+ latin:additionalMoreKeys="4"
+ latin:moreKeys="!text/morekeys_o" />
+ <Key
+ latin:keySpec="v"
+ latin:keyHintLabel="5"
+ latin:additionalMoreKeys="5"
+ latin:moreKeys="!text/morekeys_v" />
+ <Key
+ latin:keySpec="d"
+ latin:keyHintLabel="6"
+ latin:additionalMoreKeys="6"
+ latin:moreKeys="!text/morekeys_d" />
+ <Key
+ latin:keySpec="l"
+ latin:keyHintLabel="7"
+ latin:additionalMoreKeys="7"
+ latin:moreKeys="!text/morekeys_l" />
+ <Key
+ latin:keySpec="j"
+ latin:keyHintLabel="8"
+ latin:additionalMoreKeys="8"
+ latin:moreKeys="!text/morekeys_j" />
+ <Key
+ latin:keySpec="z"
+ latin:keyHintLabel="9"
+ latin:additionalMoreKeys="9"
+ latin:moreKeys="!text/morekeys_z" />
+ <Key
+ latin:keySpec="w"
+ latin:keyHintLabel="0"
+ latin:additionalMoreKeys="0"
+ latin:moreKeys="!text/morekeys_w" />
+</merge>
diff --git a/java/res/xml/rowkeys_bepo2.xml b/java/res/xml/rowkeys_bepo2.xml
new file mode 100644
index 0000000..1386366
--- /dev/null
+++ b/java/res/xml/rowkeys_bepo2.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Key
+ latin:keySpec="a"
+ latin:moreKeys="!text/morekeys_a" />
+ <Key
+ latin:keySpec="u"
+ latin:moreKeys="!text/morekeys_u" />
+ <Key
+ latin:keySpec="i"
+ latin:moreKeys="!text/morekeys_i" />
+ <Key
+ latin:keySpec="e"
+ latin:moreKeys="!text/morekeys_e" />
+ <Key
+ latin:keySpec="c"
+ latin:moreKeys="!text/morekeys_c" />
+ <Key
+ latin:keySpec="t"
+ latin:moreKeys="!text/morekeys_t" />
+ <Key
+ latin:keySpec="s"
+ latin:moreKeys="!text/morekeys_s" />
+ <Key
+ latin:keySpec="r"
+ latin:moreKeys="!text/morekeys_r" />
+ <Key
+ latin:keySpec="n"
+ latin:moreKeys="!text/morekeys_n" />
+ <Key
+ latin:keySpec="m" />
+</merge>
diff --git a/java/res/xml/rowkeys_bepo3.xml b/java/res/xml/rowkeys_bepo3.xml
new file mode 100644
index 0000000..15ffbef
--- /dev/null
+++ b/java/res/xml/rowkeys_bepo3.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Key
+ latin:keySpec="y"
+ latin:moreKeys="!text/morekeys_y" />
+ <Key
+ latin:keySpec="x" />
+ <Key
+ latin:keySpec="k"
+ latin:moreKeys="!text/morekeys_k" />
+ <Key
+ latin:keySpec="q"
+ latin:moreKeys="!text/morekeys_q" />
+ <Key
+ latin:keySpec="g"
+ latin:moreKeys="!text/morekeys_g" />
+ <Key
+ latin:keySpec="h"
+ latin:moreKeys="!text/morekeys_h" />
+ <Key
+ latin:keySpec="f" />
+</merge>
diff --git a/java/res/xml/rowkeys_bulgarian_bekl1.xml b/java/res/xml/rowkeys_bulgarian_bekl1.xml
new file mode 100644
index 0000000..9d64282
--- /dev/null
+++ b/java/res/xml/rowkeys_bulgarian_bekl1.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <!-- U+0443: "у" CYRILLIC SMALL LETTER U -->
+ <Key
+ latin:keySpec="у"
+ latin:keyHintLabel="1"
+ latin:additionalMoreKeys="1" />
+ <!-- U+0435: "е" CYRILLIC SMALL LETTER IE -->
+ <Key
+ latin:keySpec="е"
+ latin:keyHintLabel="2"
+ latin:additionalMoreKeys="2" />
+ <!-- U+0438: "и" CYRILLIC SMALL LETTER I
+ U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
+ <Key
+ latin:keySpec="и"
+ latin:keyHintLabel="3"
+ latin:additionalMoreKeys="3"
+ latin:moreKeys="ѝ" />
+ <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA -->
+ <Key
+ latin:keySpec="ш"
+ latin:keyHintLabel="4"
+ latin:additionalMoreKeys="4" />
+ <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
+ <Key
+ latin:keySpec="щ"
+ latin:keyHintLabel="5"
+ latin:additionalMoreKeys="5" />
+ <!-- U+043A: "к" CYRILLIC SMALL LETTER KA -->
+ <Key
+ latin:keySpec="к"
+ latin:keyHintLabel="6"
+ latin:additionalMoreKeys="6" />
+ <!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
+ <Key
+ latin:keySpec="с"
+ latin:keyHintLabel="7"
+ latin:additionalMoreKeys="7" />
+ <!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
+ <Key
+ latin:keySpec="д"
+ latin:keyHintLabel="8"
+ latin:additionalMoreKeys="8" />
+ <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
+ <Key
+ latin:keySpec="з"
+ latin:keyHintLabel="9"
+ latin:additionalMoreKeys="9" />
+ <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE -->
+ <Key
+ latin:keySpec="ц"
+ latin:keyHintLabel="0"
+ latin:additionalMoreKeys="0" />
+ <!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
+ <Key
+ latin:keySpec="б" />
+</merge>
diff --git a/java/res/xml/rowkeys_bulgarian_bekl2.xml b/java/res/xml/rowkeys_bulgarian_bekl2.xml
new file mode 100644
index 0000000..e078ae7
--- /dev/null
+++ b/java/res/xml/rowkeys_bulgarian_bekl2.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN -->
+ <Key
+ latin:keySpec="ь" />
+ <!-- U+044F: "я" CYRILLIC SMALL LETTER YA -->
+ <Key
+ latin:keySpec="я" />
+ <!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
+ <Key
+ latin:keySpec="а" />
+ <!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
+ <Key
+ latin:keySpec="о" />
+ <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
+ <Key
+ latin:keySpec="ж" />
+ <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE -->
+ <Key
+ latin:keySpec="г" />
+ <!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
+ <Key
+ latin:keySpec="т" />
+ <!-- U+043D: "н" CYRILLIC SMALL LETTER EN -->
+ <Key
+ latin:keySpec="н" />
+ <!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
+ <Key
+ latin:keySpec="в" />
+ <!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
+ <Key
+ latin:keySpec="м" />
+ <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
+ <Key
+ latin:keySpec="ч" />
+</merge>
diff --git a/java/res/xml/rowkeys_bulgarian_bekl3.xml b/java/res/xml/rowkeys_bulgarian_bekl3.xml
new file mode 100644
index 0000000..57c6e54
--- /dev/null
+++ b/java/res/xml/rowkeys_bulgarian_bekl3.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU -->
+ <Key
+ latin:keySpec="ю" />
+ <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I
+ U+046D: "ѭ" CYRILLIC SMALL LETTER IOTIFIED BIG YUS -->
+ <Key
+ latin:keySpec="й"
+ latin:keyHintLabel="ѭ"
+ latin:moreKeys="ѭ" />
+ <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ U+046B: "ѫ" CYRILLIC SMALL LETTER BIG YUS -->
+ <Key
+ latin:keySpec="ъ"
+ latin:keyHintLabel="ѫ"
+ latin:moreKeys="ѫ" />
+ <!-- U+0463: "ѣ" CYRILLIC SMALL LETTER YAT -->
+ <Key
+ latin:keySpec="ѣ" />
+ <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
+ <Key
+ latin:keySpec="ф" />
+ <!-- U+0445: "х" CYRILLIC SMALL LETTER HA -->
+ <Key
+ latin:keySpec="х" />
+ <!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
+ <Key
+ latin:keySpec="п" />
+ <!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
+ <Key
+ latin:keySpec="р" />
+ <!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
+ <Key
+ latin:keySpec="л" />
+</merge>
diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml
index 21463fb..4047ab7 100644
--- a/java/res/xml/rowkeys_east_slavic2.xml
+++ b/java/res/xml/rowkeys_east_slavic2.xml
@@ -23,37 +23,59 @@
>
<!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
<Key
- latin:keySpec="ф" />
+ latin:keySpec="ф"
+ latin:keyHintLabel="\@"
+ latin:additionalMoreKeys="\\@" />
<Key
latin:keySpec="!text/keyspec_east_slavic_row2_2"
+ latin:keyHintLabel="#"
+ latin:additionalMoreKeys="#"
latin:moreKeys="!text/morekeys_east_slavic_row2_2" />
<!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
<Key
- latin:keySpec="в" />
+ latin:keySpec="в"
+ latin:keyHintLabel="$"
+ latin:additionalMoreKeys="$" />
<!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
<Key
latin:keySpec="а"
- latin:moreKeys="!text/morekeys_cyrillic_a" />
+ latin:moreKeys="!text/morekeys_cyrillic_a"
+ latin:keyHintLabel="%"
+ latin:additionalMoreKeys="%" />
<!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
<Key
- latin:keySpec="п" />
+ latin:keySpec="п"
+ latin:keyHintLabel="&"
+ latin:additionalMoreKeys="&" />
<!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
<Key
- latin:keySpec="р" />
+ latin:keySpec="р"
+ latin:keyHintLabel="_"
+ latin:additionalMoreKeys="_" />
<!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
<Key
latin:keySpec="о"
+ latin:keyHintLabel="/"
+ latin:additionalMoreKeys="/"
latin:moreKeys="!text/morekeys_cyrillic_o" />
<!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
<Key
- latin:keySpec="л" />
+ latin:keySpec="л"
+ latin:keyHintLabel="-"
+ latin:additionalMoreKeys="-" />
<!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
<Key
- latin:keySpec="д" />
+ latin:keySpec="д"
+ latin:keyHintLabel="+"
+ latin:additionalMoreKeys="+" />
<!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
<Key
- latin:keySpec="ж" />
+ latin:keySpec="ж"
+ latin:keyHintLabel="("
+ latin:additionalMoreKeys="(" />
<Key
latin:keySpec="!text/keyspec_east_slavic_row2_11"
- latin:moreKeys="!text/morekeys_east_slavic_row2_11" />
+ latin:moreKeys="!text/morekeys_east_slavic_row2_11"
+ latin:keyHintLabel=")"
+ latin:additionalMoreKeys=")" />
</merge>
diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml
index 54802e8..e1b9b60 100644
--- a/java/res/xml/rowkeys_east_slavic3.xml
+++ b/java/res/xml/rowkeys_east_slavic3.xml
@@ -23,29 +23,47 @@
>
<!-- U+044F: "я" CYRILLIC SMALL LETTER YA -->
<Key
- latin:keySpec="я" />
+ latin:keySpec="я"
+ latin:keyHintLabel="*"
+ latin:additionalMoreKeys="*" />
<!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
<Key
- latin:keySpec="ч" />
+ latin:keySpec="ч"
+ latin:keyHintLabel="""
+ latin:additionalMoreKeys=""" />
<!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
<Key
- latin:keySpec="с" />
+ latin:keySpec="с"
+ latin:keyHintLabel="'"
+ latin:additionalMoreKeys="'" />
<!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
<Key
- latin:keySpec="м" />
+ latin:keySpec="м"
+ latin:keyHintLabel=":"
+ latin:additionalMoreKeys=":" />
<Key
- latin:keySpec="!text/keyspec_east_slavic_row3_5" />
+ latin:keySpec="!text/keyspec_east_slavic_row3_5"
+ latin:keyHintLabel=";"
+ latin:additionalMoreKeys=";" />
<!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
<Key
- latin:keySpec="т" />
+ latin:keySpec="т"
+ latin:keyHintLabel="!"
+ latin:additionalMoreKeys="!" />
<!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN -->
<Key
latin:keySpec="ь"
- latin:moreKeys="!text/morekeys_cyrillic_soft_sign" />
+ latin:moreKeys="!text/morekeys_cyrillic_soft_sign"
+ latin:keyHintLabel="\?"
+ latin:additionalMoreKeys="\\?" />
<!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
<Key
- latin:keySpec="б" />
+ latin:keySpec="б"
+ latin:keyHintLabel="<"
+ latin:additionalMoreKeys="<" />
<!-- U+044E: "ю" CYRILLIC SMALL LETTER YU -->
<Key
- latin:keySpec="ю" />
+ latin:keySpec="ю"
+ latin:keyHintLabel=">"
+ latin:additionalMoreKeys=">" />
</merge>
diff --git a/java/res/xml/rowkeys_greek2.xml b/java/res/xml/rowkeys_greek2.xml
index 97dde5b..59e3b01 100644
--- a/java/res/xml/rowkeys_greek2.xml
+++ b/java/res/xml/rowkeys_greek2.xml
@@ -38,7 +38,9 @@
U+1F0F: "Ἇ" GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -->
<Key
latin:keySpec="Α"
- latin:moreKeys="Ά,Ὰ,Ἀ,Ἁ,ἄ,ἅ,Ἂ,Ἃ,Ἆ,Ἇ" />
+ latin:moreKeys="Ά,Ὰ,Ἀ,Ἁ,ἄ,ἅ,Ἂ,Ἃ,Ἆ,Ἇ"
+ latin:keyHintLabel="\@"
+ latin:additionalMoreKeys="\\@" />
</case>
<default>
<!-- U+03B1: "α" GREEK SMALL LETTER ALPHA
@@ -67,21 +69,31 @@
U+1F87: "ᾇ" GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
<Key
latin:keySpec="α"
- latin:moreKeys="ά,ὰ,ᾶ,ἀ,ἁ,ἄ,ἅ,ἂ,ἃ,ἆ,ἇ,ᾳ,ᾴ,ᾲ,ᾷ,ᾀ,ᾁ,ᾄ,ᾅ,ᾂ,ᾃ,ᾆ,ᾇ" />
+ latin:moreKeys="ά,ὰ,ᾶ,ἀ,ἁ,ἄ,ἅ,ἂ,ἃ,ἆ,ἇ,ᾳ,ᾴ,ᾲ,ᾷ,ᾀ,ᾁ,ᾄ,ᾅ,ᾂ,ᾃ,ᾆ,ᾇ"
+ latin:keyHintLabel="\@"
+ latin:additionalMoreKeys="\\@" />
</default>
</switch>
<!-- U+03C3: "σ" GREEK SMALL LETTER SIGMA -->
<Key
- latin:keySpec="σ" />
+ latin:keySpec="σ"
+ latin:keyHintLabel="#"
+ latin:additionalMoreKeys="#" />
<!-- U+03B4: "δ" GREEK SMALL LETTER DELTA -->
<Key
- latin:keySpec="δ" />
+ latin:keySpec="δ"
+ latin:keyHintLabel="€"
+ latin:additionalMoreKeys="€" />
<!-- U+03C6: "φ" GREEK SMALL LETTER PHI -->
<Key
- latin:keySpec="φ" />
+ latin:keySpec="φ"
+ latin:keyHintLabel="%"
+ latin:additionalMoreKeys="%" />
<!-- U+03B3: "γ" GREEK SMALL LETTER GAMMA -->
<Key
- latin:keySpec="γ" />
+ latin:keySpec="γ"
+ latin:keyHintLabel="&"
+ latin:additionalMoreKeys="&" />
<switch>
<case
latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
@@ -99,7 +111,9 @@
U+1F2F: "Ἧ" GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -->
<Key
latin:keySpec="Η"
- latin:moreKeys="Ή,Ὴ,Ἠ,Ἡ,Ἤ,Ἥ,Ἢ,Ἣ,Ἦ,Ἧ" />
+ latin:moreKeys="Ή,Ὴ,Ἠ,Ἡ,Ἤ,Ἥ,Ἢ,Ἣ,Ἦ,Ἧ"
+ latin:keyHintLabel="-"
+ latin:additionalMoreKeys="-" />
</case>
<default>
<!-- U+03B7: "η" GREEK SMALL LETTER ETA
@@ -128,16 +142,24 @@
U+1F97: "ᾗ" GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
<Key
latin:keySpec="η"
- latin:moreKeys="ή,ὴ,ῆ,ἠ,ἡ,ἤ,ἥ,ἢ,ἣ,ἦ,ἧ,ῃ,ῄ,ῂ,ῇ,ᾐ,ᾑ,ᾔ,ᾕ,ᾒ,ᾓ,ᾖ,ᾗ" />
+ latin:moreKeys="ή,ὴ,ῆ,ἠ,ἡ,ἤ,ἥ,ἢ,ἣ,ἦ,ἧ,ῃ,ῄ,ῂ,ῇ,ᾐ,ᾑ,ᾔ,ᾕ,ᾒ,ᾓ,ᾖ,ᾗ"
+ latin:keyHintLabel="-"
+ latin:additionalMoreKeys="-" />
</default>
</switch>
<!-- U+03BE: "ξ" GREEK SMALL LETTER XI -->
<Key
- latin:keySpec="ξ" />
+ latin:keySpec="ξ"
+ latin:keyHintLabel="+"
+ latin:additionalMoreKeys="+" />
<!-- U+03BA: "κ" GREEK SMALL LETTER KAPPA -->
<Key
- latin:keySpec="κ" />
+ latin:keySpec="κ"
+ latin:keyHintLabel="("
+ latin:additionalMoreKeys="(" />
<!-- U+03BB: "λ" GREEK SMALL LETTER LAMDA -->
<Key
- latin:keySpec="λ" />
+ latin:keySpec="λ"
+ latin:keyHintLabel=")"
+ latin:additionalMoreKeys=")" />
</merge>
diff --git a/java/res/xml/rowkeys_greek3.xml b/java/res/xml/rowkeys_greek3.xml
index 0c2667b..8249992 100644
--- a/java/res/xml/rowkeys_greek3.xml
+++ b/java/res/xml/rowkeys_greek3.xml
@@ -23,13 +23,19 @@
>
<!-- U+03B6: "ζ" GREEK SMALL LETTER ZETA -->
<Key
- latin:keySpec="ζ" />
+ latin:keySpec="ζ"
+ latin:keyHintLabel="*"
+ latin:additionalMoreKeys="*" />
<!-- U+03C7: "χ" GREEK SMALL LETTER CHI -->
<Key
- latin:keySpec="χ" />
+ latin:keySpec="χ"
+ latin:keyHintLabel="""
+ latin:additionalMoreKeys=""" />
<!-- U+03C8: "ψ" GREEK SMALL LETTER PSI -->
<Key
- latin:keySpec="ψ" />
+ latin:keySpec="ψ"
+ latin:keyHintLabel="'"
+ latin:additionalMoreKeys="'" />
<switch>
<case
latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
@@ -47,7 +53,9 @@
U+1F6F: "Ὧ" GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -->
<Key
latin:keySpec="ω"
- latin:moreKeys="Ώ,Ὼ,Ὠ,Ὡ,Ὤ,Ὥ,Ὢ,Ὣ,Ὦ,Ὧ" />
+ latin:moreKeys="Ώ,Ὼ,Ὠ,Ὡ,Ὤ,Ὥ,Ὢ,Ὣ,Ὦ,Ὧ"
+ latin:keyHintLabel=":"
+ latin:additionalMoreKeys=":" />
</case>
<default>
<!-- U+03C9: "ω" GREEK SMALL LETTER OMEGA
@@ -76,16 +84,24 @@
U+1FA7: "ᾧ" GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -->
<Key
latin:keySpec="ω"
- latin:moreKeys="ώ,ὼ,ῶ,ὠ,ὡ,ὤ,ὥ,ὢ,ὣ,ὦ,ὧ,ῳ,ῴ,ῲ,ῷ,ᾠ,ᾡ,ᾤ,ᾥ,ᾢ,ᾣ,ᾦ,ᾧ" />
+ latin:moreKeys="ώ,ὼ,ῶ,ὠ,ὡ,ὤ,ὥ,ὢ,ὣ,ὦ,ὧ,ῳ,ῴ,ῲ,ῷ,ᾠ,ᾡ,ᾤ,ᾥ,ᾢ,ᾣ,ᾦ,ᾧ"
+ latin:keyHintLabel=":"
+ latin:additionalMoreKeys=":" />
</default>
</switch>
<!-- U+03B2: "β" GREEK SMALL LETTER BETA -->
<Key
- latin:keySpec="β" />
+ latin:keySpec="β"
+ latin:keyHintLabel=";"
+ latin:additionalMoreKeys=";" />
<!-- U+03BD: "ν" GREEK SMALL LETTER NU -->
<Key
- latin:keySpec="ν" />
+ latin:keySpec="ν"
+ latin:keyHintLabel="!"
+ latin:additionalMoreKeys="!" />
<!-- U+03BC: "μ" GREEK SMALL LETTER MU -->
<Key
- latin:keySpec="μ" />
+ latin:keySpec="μ"
+ latin:keyHintLabel="\?"
+ latin:additionalMoreKeys="\\?" />
</merge>
diff --git a/java/res/xml/rowkeys_qwerty2_left5.xml b/java/res/xml/rowkeys_qwerty2_left5.xml
index 1803bf2..3f8517c 100644
--- a/java/res/xml/rowkeys_qwerty2_left5.xml
+++ b/java/res/xml/rowkeys_qwerty2_left5.xml
@@ -23,16 +23,26 @@
>
<Key
latin:keySpec="a"
+ latin:keyHintLabel="\@"
+ latin:additionalMoreKeys="\\@"
latin:moreKeys="!text/morekeys_a" />
<Key
latin:keySpec="s"
+ latin:keyHintLabel="#"
+ latin:additionalMoreKeys="#"
latin:moreKeys="!text/morekeys_s" />
<Key
latin:keySpec="d"
+ latin:keyHintLabel="$"
+ latin:additionalMoreKeys="$"
latin:moreKeys="!text/morekeys_d" />
<Key
- latin:keySpec="f" />
+ latin:keySpec="f"
+ latin:keyHintLabel="%"
+ latin:additionalMoreKeys="%" />
<Key
latin:keySpec="g"
+ latin:keyHintLabel="&"
+ latin:additionalMoreKeys="&"
latin:moreKeys="!text/morekeys_g" />
</merge>
diff --git a/java/res/xml/rowkeys_qwerty2_right4.xml b/java/res/xml/rowkeys_qwerty2_right4.xml
index 99936b7..c936280 100644
--- a/java/res/xml/rowkeys_qwerty2_right4.xml
+++ b/java/res/xml/rowkeys_qwerty2_right4.xml
@@ -23,14 +23,22 @@
>
<Key
latin:keySpec="h"
+ latin:keyHintLabel="-"
+ latin:additionalMoreKeys="-"
latin:moreKeys="!text/morekeys_h" />
<Key
latin:keySpec="j"
+ latin:keyHintLabel="+"
+ latin:additionalMoreKeys="+"
latin:moreKeys="!text/morekeys_j" />
<Key
latin:keySpec="k"
+ latin:keyHintLabel="("
+ latin:additionalMoreKeys="("
latin:moreKeys="!text/morekeys_k" />
<Key
latin:keySpec="l"
+ latin:keyHintLabel=")"
+ latin:additionalMoreKeys=")"
latin:moreKeys="!text/morekeys_l" />
</merge>
diff --git a/java/res/xml/rowkeys_qwerty3_left4.xml b/java/res/xml/rowkeys_qwerty3_left4.xml
index 6043c3b..8dc9d41 100644
--- a/java/res/xml/rowkeys_qwerty3_left4.xml
+++ b/java/res/xml/rowkeys_qwerty3_left4.xml
@@ -23,14 +23,22 @@
>
<Key
latin:keySpec="z"
+ latin:keyHintLabel="*"
+ latin:additionalMoreKeys="*"
latin:moreKeys="!text/morekeys_z" />
<Key
latin:keySpec="!text/keyspec_x"
+ latin:keyHintLabel="""
+ latin:additionalMoreKeys="""
latin:moreKeys="!text/morekeys_x" />
<Key
latin:keySpec="c"
+ latin:keyHintLabel="'"
+ latin:additionalMoreKeys="'"
latin:moreKeys="!text/morekeys_c" />
<Key
latin:keySpec="v"
+ latin:keyHintLabel=":"
+ latin:additionalMoreKeys=":"
latin:moreKeys="!text/morekeys_v" />
</merge>
diff --git a/java/res/xml/rowkeys_qwerty3_right3.xml b/java/res/xml/rowkeys_qwerty3_right3.xml
index f699103..4646029 100644
--- a/java/res/xml/rowkeys_qwerty3_right3.xml
+++ b/java/res/xml/rowkeys_qwerty3_right3.xml
@@ -22,10 +22,16 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<Key
- latin:keySpec="b" />
+ latin:keySpec="b"
+ latin:keyHintLabel=";"
+ latin:additionalMoreKeys=";" />
<Key
latin:keySpec="n"
+ latin:keyHintLabel="!"
+ latin:additionalMoreKeys="!"
latin:moreKeys="!text/morekeys_n" />
<Key
- latin:keySpec="m" />
+ latin:keySpec="m"
+ latin:keyHintLabel="\?"
+ latin:additionalMoreKeys="\\?" />
</merge>
diff --git a/java/res/drawable/btn_suggestion_klp.xml b/java/res/xml/rowkeys_qwertz2.xml
similarity index 63%
copy from java/res/drawable/btn_suggestion_klp.xml
copy to java/res/xml/rowkeys_qwertz2.xml
index 471165b..10878a0 100644
--- a/java/res/drawable/btn_suggestion_klp.xml
+++ b/java/res/xml/rowkeys_qwertz2.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2013, The Android Open Source Project
+** Copyright 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.
@@ -18,10 +18,13 @@
*/
-->
-<selector
- xmlns:android="http://schemas.android.com/apk/res/android"
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <item
- android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-</selector>
+ <!-- a,s,d,f,g -->
+ <include
+ latin:keyboardLayout="@xml/rowkeys_qwertz2_left5" />
+ <!-- h,j,k,l -->
+ <include
+ latin:keyboardLayout="@xml/rowkeys_qwertz2_right4" />
+</merge>
diff --git a/java/res/xml/rowkeys_qwertz2_left5.xml b/java/res/xml/rowkeys_qwertz2_left5.xml
new file mode 100644
index 0000000..f0ccaa5
--- /dev/null
+++ b/java/res/xml/rowkeys_qwertz2_left5.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Key
+ latin:keySpec="a"
+ latin:moreKeys="!text/morekeys_a" />
+ <Key
+ latin:keySpec="s"
+ latin:moreKeys="!text/morekeys_s" />
+ <Key
+ latin:keySpec="d"
+ latin:keyHintLabel="€"
+ latin:additionalMoreKeys="€"
+ latin:moreKeys="!text/morekeys_d" />
+ <Key
+ latin:keySpec="f"
+ latin:keyHintLabel="%"
+ latin:additionalMoreKeys="%" />
+ <Key
+ latin:keySpec="g"
+ latin:keyHintLabel="&"
+ latin:additionalMoreKeys="&"
+ latin:moreKeys="!text/morekeys_g" />
+</merge>
diff --git a/java/res/xml/rowkeys_qwertz2_right4.xml b/java/res/xml/rowkeys_qwertz2_right4.xml
new file mode 100644
index 0000000..c936280
--- /dev/null
+++ b/java/res/xml/rowkeys_qwertz2_right4.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <Key
+ latin:keySpec="h"
+ latin:keyHintLabel="-"
+ latin:additionalMoreKeys="-"
+ latin:moreKeys="!text/morekeys_h" />
+ <Key
+ latin:keySpec="j"
+ latin:keyHintLabel="+"
+ latin:additionalMoreKeys="+"
+ latin:moreKeys="!text/morekeys_j" />
+ <Key
+ latin:keySpec="k"
+ latin:keyHintLabel="("
+ latin:additionalMoreKeys="("
+ latin:moreKeys="!text/morekeys_k" />
+ <Key
+ latin:keySpec="l"
+ latin:keyHintLabel=")"
+ latin:additionalMoreKeys=")"
+ latin:moreKeys="!text/morekeys_l" />
+</merge>
diff --git a/java/res/xml/rowkeys_qwertz3.xml b/java/res/xml/rowkeys_qwertz3.xml
index a66c348..18c60b3 100644
--- a/java/res/xml/rowkeys_qwertz3.xml
+++ b/java/res/xml/rowkeys_qwertz3.xml
@@ -23,20 +23,34 @@
>
<Key
latin:keySpec="y"
+ latin:keyHintLabel="*"
+ latin:additionalMoreKeys="*"
latin:moreKeys="!text/morekeys_y" />
<Key
- latin:keySpec="x" />
+ latin:keySpec="x"
+ latin:keyHintLabel="""
+ latin:additionalMoreKeys=""" />
<Key
latin:keySpec="c"
+ latin:keyHintLabel="'"
+ latin:additionalMoreKeys="'"
latin:moreKeys="!text/morekeys_c" />
<Key
latin:keySpec="v"
+ latin:keyHintLabel=":"
+ latin:additionalMoreKeys=":"
latin:moreKeys="!text/morekeys_v" />
<Key
- latin:keySpec="b" />
+ latin:keySpec="b"
+ latin:keyHintLabel=";"
+ latin:additionalMoreKeys=";" />
<Key
latin:keySpec="n"
+ latin:keyHintLabel="!"
+ latin:additionalMoreKeys="!"
latin:moreKeys="!text/morekeys_n" />
<Key
- latin:keySpec="m" />
+ latin:keySpec="m"
+ latin:keyHintLabel="\?"
+ latin:additionalMoreKeys="\\?" />
</merge>
diff --git a/java/res/xml/rows_arabic.xml b/java/res/xml/rows_arabic.xml
index 3f765f3..7ccb737 100644
--- a/java/res/xml/rows_arabic.xml
+++ b/java/res/xml/rows_arabic.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_azerty.xml b/java/res/xml/rows_azerty.xml
index a52504c..56af006 100644
--- a/java/res/xml/rows_azerty.xml
+++ b/java/res/xml/rows_azerty.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_bengali.xml b/java/res/xml/rows_bengali.xml
index 4e4223b..f51d5ae 100644
--- a/java/res/xml/rows_bengali.xml
+++ b/java/res/xml/rows_bengali.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_bengali_akkhor.xml b/java/res/xml/rows_bengali_akkhor.xml
index 1c7e772..73f6355 100644
--- a/java/res/xml/rows_bengali_akkhor.xml
+++ b/java/res/xml/rows_bengali_akkhor.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyLabelFlags="fontNormal"
latin:keyWidth="9.091%p" >
diff --git a/java/res/xml/rows_bepo.xml b/java/res/xml/rows_bepo.xml
new file mode 100644
index 0000000..a5fe06e
--- /dev/null
+++ b/java/res/xml/rows_bepo.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The CyanogenMod 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.
+ -->
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bepo1" />
+ </Row>
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bepo2" />
+ </Row>
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="15%p"
+ latin:visualInsetsRight="1%p" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bepo3" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:visualInsetsLeft="1%p" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/rows_bulgarian.xml b/java/res/xml/rows_bulgarian.xml
index 883c283..6e521d6 100644
--- a/java/res/xml/rows_bulgarian.xml
+++ b/java/res/xml/rows_bulgarian.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
>
diff --git a/java/res/xml/rows_bulgarian_bds.xml b/java/res/xml/rows_bulgarian_bds.xml
index b4f3f12..79a5d39 100644
--- a/java/res/xml/rows_bulgarian_bds.xml
+++ b/java/res/xml/rows_bulgarian_bds.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
>
diff --git a/java/res/xml/rows_bulgarian_bekl.xml b/java/res/xml/rows_bulgarian_bekl.xml
new file mode 100644
index 0000000..5e3c728
--- /dev/null
+++ b/java/res/xml/rows_bulgarian_bekl.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 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.
+*/
+-->
+
+<merge
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+ <include
+ latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
+ <Row
+ latin:keyWidth="9.091%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bulgarian_bekl1" />
+ </Row>
+ <Row
+ latin:keyWidth="9.091%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bulgarian_bekl2" />
+ </Row>
+ <Row
+ latin:keyWidth="8.711%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.8%p" />
+ <include
+ latin:keyboardLayout="@xml/rowkeys_bulgarian_bekl3" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/rows_colemak.xml b/java/res/xml/rows_colemak.xml
index ec553c2..fd1a008 100644
--- a/java/res/xml/rows_colemak.xml
+++ b/java/res/xml/rows_colemak.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_dvorak.xml b/java/res/xml/rows_dvorak.xml
index f656613..fcc84e9 100644
--- a/java/res/xml/rows_dvorak.xml
+++ b/java/res/xml/rows_dvorak.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_east_slavic.xml b/java/res/xml/rows_east_slavic.xml
index 5d3d768..e63a722 100644
--- a/java/res/xml/rows_east_slavic.xml
+++ b/java/res/xml/rows_east_slavic.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
>
diff --git a/java/res/xml/rows_farsi.xml b/java/res/xml/rows_farsi.xml
index b78048c..9c57ed0 100644
--- a/java/res/xml/rows_farsi.xml
+++ b/java/res/xml/rows_farsi.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_georgian.xml b/java/res/xml/rows_georgian.xml
index 8c81dd0..c7859af 100644
--- a/java/res/xml/rows_georgian.xml
+++ b/java/res/xml/rows_georgian.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_greek.xml b/java/res/xml/rows_greek.xml
index e00b927..04937c1 100644
--- a/java/res/xml/rows_greek.xml
+++ b/java/res/xml/rows_greek.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_hebrew.xml b/java/res/xml/rows_hebrew.xml
index f12380a..c062b89 100644
--- a/java/res/xml/rows_hebrew.xml
+++ b/java/res/xml/rows_hebrew.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_hindi.xml b/java/res/xml/rows_hindi.xml
index da869b1..0637aed 100644
--- a/java/res/xml/rows_hindi.xml
+++ b/java/res/xml/rows_hindi.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_hindi_compact.xml b/java/res/xml/rows_hindi_compact.xml
index d21fada..ef97cb9 100644
--- a/java/res/xml/rows_hindi_compact.xml
+++ b/java/res/xml/rows_hindi_compact.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_kannada.xml b/java/res/xml/rows_kannada.xml
index 5dc6271..a6dfc4c 100644
--- a/java/res/xml/rows_kannada.xml
+++ b/java/res/xml/rows_kannada.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml/rows_malayalam.xml b/java/res/xml/rows_malayalam.xml
index 5e7a491..c8c5986 100644
--- a/java/res/xml/rows_malayalam.xml
+++ b/java/res/xml/rows_malayalam.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml/rows_marathi.xml b/java/res/xml/rows_marathi.xml
index ff11adb..6bdbd87 100644
--- a/java/res/xml/rows_marathi.xml
+++ b/java/res/xml/rows_marathi.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_mongolian.xml b/java/res/xml/rows_mongolian.xml
index a6a890a..696509d 100644
--- a/java/res/xml/rows_mongolian.xml
+++ b/java/res/xml/rows_mongolian.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
>
diff --git a/java/res/xml/rows_nepali_romanized.xml b/java/res/xml/rows_nepali_romanized.xml
index 26737ec..d948301 100644
--- a/java/res/xml/rows_nepali_romanized.xml
+++ b/java/res/xml/rows_nepali_romanized.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_nepali_traditional.xml b/java/res/xml/rows_nepali_traditional.xml
index e2e710c..7057dac 100644
--- a/java/res/xml/rows_nepali_traditional.xml
+++ b/java/res/xml/rows_nepali_traditional.xml
@@ -21,6 +21,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
<include latin:keyboardLayout="@xml/key_styles_currency" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal"
diff --git a/java/res/xml/rows_nordic.xml b/java/res/xml/rows_nordic.xml
index 3068917..ef3f438 100644
--- a/java/res/xml/rows_nordic.xml
+++ b/java/res/xml/rows_nordic.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
>
diff --git a/java/res/xml/rows_number_normal.xml b/java/res/xml/rows_number_normal.xml
index 0f92ac6..42a00ad 100644
--- a/java/res/xml/rows_number_normal.xml
+++ b/java/res/xml/rows_number_normal.xml
@@ -49,35 +49,9 @@
<Key
latin:keySpec="6"
latin:keyStyle="numKeyStyle" />
- <switch>
- <case
- latin:mode="date"
- >
- <Key
- latin:keySpec="."
- latin:keyStyle="numKeyStyle"
- latin:backgroundType="functional"
- latin:keyWidth="fillRight" />
- </case>
- <case
- latin:mode="time|datetime"
- >
- <Key
- latin:keySpec="."
- latin:moreKeys="!text/morekeys_am_pm"
- latin:keyLabelFlags="hasPopupHint"
- latin:keyStyle="numKeyStyle"
- latin:backgroundType="functional"
- latin:keyWidth="fillRight" />
- </case>
- <default>
- <Key
- latin:keySpec=","
- latin:keyStyle="numKeyStyle"
- latin:backgroundType="functional"
- latin:keyWidth="fillRight" />
- </default>
- </switch>
+ <Key
+ latin:keyStyle="numSpaceKeyStyle"
+ latin:keyWidth="fillRight" />
</Row>
<Row>
<Key
@@ -99,6 +73,32 @@
latin:mode="date"
>
<Key
+ latin:keySpec="."
+ latin:keyStyle="numKeyStyle" />
+ </case>
+ <case
+ latin:mode="time|datetime"
+ >
+ <Key
+ latin:keySpec="."
+ latin:moreKeys="!text/morekeys_am_pm"
+ latin:keyLabelFlags="hasPopupHint"
+ latin:keyStyle="numKeyStyle" />
+ </case>
+ <default>
+ <Key
+ latin:keySpec=","
+ latin:keyStyle="numKeyStyle" />
+ </default>
+ </switch>
+ <Key
+ latin:keySpec="0"
+ latin:keyStyle="numKeyStyle" />
+ <switch>
+ <case
+ latin:mode="date"
+ >
+ <Key
latin:keySpec="/"
latin:keyStyle="numKeyStyle" />
</case>
@@ -124,11 +124,6 @@
</default>
</switch>
<Key
- latin:keySpec="0"
- latin:keyStyle="numKeyStyle" />
- <Key
- latin:keyStyle="numSpaceKeyStyle" />
- <Key
latin:keyStyle="enterKeyStyle"
latin:keyWidth="fillRight" />
</Row>
diff --git a/java/res/xml/rows_qwerty.xml b/java/res/xml/rows_qwerty.xml
index cdd4203..7a554d4 100644
--- a/java/res/xml/rows_qwerty.xml
+++ b/java/res/xml/rows_qwerty.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_qwertz.xml b/java/res/xml/rows_qwertz.xml
index 31a147c..4ec43a3 100644
--- a/java/res/xml/rows_qwertz.xml
+++ b/java/res/xml/rows_qwertz.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
@@ -33,7 +34,7 @@
latin:keyWidth="10%p"
>
<include
- latin:keyboardLayout="@xml/rowkeys_qwerty2"
+ latin:keyboardLayout="@xml/rowkeys_qwertz2"
latin:keyXPos="5%p" />
</Row>
<Row
diff --git a/java/res/xml/rows_serbian_qwertz.xml b/java/res/xml/rows_serbian_qwertz.xml
index 4be2abf..dd477b4 100644
--- a/java/res/xml/rows_serbian_qwertz.xml
+++ b/java/res/xml/rows_serbian_qwertz.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row latin:keyWidth="9.091%p" >
<include latin:keyboardLayout="@xml/rowkeys_serbian_qwertz1" />
</Row>
diff --git a/java/res/xml/rows_sinhala.xml b/java/res/xml/rows_sinhala.xml
index a2ba0bb..48b8398 100644
--- a/java/res/xml/rows_sinhala.xml
+++ b/java/res/xml/rows_sinhala.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml/rows_south_slavic.xml b/java/res/xml/rows_south_slavic.xml
index 0544284..f8f1016 100644
--- a/java/res/xml/rows_south_slavic.xml
+++ b/java/res/xml/rows_south_slavic.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
>
diff --git a/java/res/xml/rows_spanish.xml b/java/res/xml/rows_spanish.xml
index ecda4a4..940fb56 100644
--- a/java/res/xml/rows_spanish.xml
+++ b/java/res/xml/rows_spanish.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_swiss.xml b/java/res/xml/rows_swiss.xml
index 03e4129..b41a76c 100644
--- a/java/res/xml/rows_swiss.xml
+++ b/java/res/xml/rows_swiss.xml
@@ -23,6 +23,7 @@
>
<include
latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
>
diff --git a/java/res/xml/rows_symbols.xml b/java/res/xml/rows_symbols.xml
index 6fd876f..828d111 100644
--- a/java/res/xml/rows_symbols.xml
+++ b/java/res/xml/rows_symbols.xml
@@ -31,6 +31,18 @@
<include
latin:keyboardLayout="@xml/rowkeys_symbols1" />
</Row>
+ <switch>
+ <case
+ latin:numberRowEnabled="true"
+ >
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <include
+ latin:keyboardLayout="@xml/rowkeys_symbols_shift1" />
+ </Row>
+ </case>
+ </switch>
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_symbols_shift.xml b/java/res/xml/rows_symbols_shift.xml
index 64f6e61..6adc3cc 100644
--- a/java/res/xml/rows_symbols_shift.xml
+++ b/java/res/xml/rows_symbols_shift.xml
@@ -25,6 +25,7 @@
latin:keyboardLayout="@xml/key_styles_common" />
<include
latin:keyboardLayout="@xml/key_styles_currency" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="10%p"
>
diff --git a/java/res/xml/rows_tamil.xml b/java/res/xml/rows_tamil.xml
index 3aa2c8d..201ea1a 100644
--- a/java/res/xml/rows_tamil.xml
+++ b/java/res/xml/rows_tamil.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml/rows_telugu.xml b/java/res/xml/rows_telugu.xml
index 4a31d5d..08f2f67 100644
--- a/java/res/xml/rows_telugu.xml
+++ b/java/res/xml/rows_telugu.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row
latin:keyWidth="9.091%p"
latin:keyLabelFlags="fontNormal|autoXScale"
diff --git a/java/res/xml/rows_uzbek.xml b/java/res/xml/rows_uzbek.xml
index ae655d8..c29c738 100644
--- a/java/res/xml/rows_uzbek.xml
+++ b/java/res/xml/rows_uzbek.xml
@@ -20,6 +20,7 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
<include latin:keyboardLayout="@xml/key_styles_common" />
+ <include latin:keyboardLayout="@xml/row_number_keys" />
<Row latin:keyWidth="9.091%p" >
<include latin:keyboardLayout="@xml/rowkeys_uzbek1" />
</Row>
diff --git a/java/res/xml/spellchecker.xml b/java/res/xml/spellchecker.xml
index 13e6132..f908d89 100644
--- a/java/res/xml/spellchecker.xml
+++ b/java/res/xml/spellchecker.xml
@@ -59,4 +59,101 @@
android:label="@string/subtype_generic"
android:subtypeLocale="pt_BR"
/>
+ <!-- LineageOS additions -->
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="bg"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="cs"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="da"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="el"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="en_AU"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="fi"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="hr"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="hu"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="hu_ZZ"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="iw"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="ka"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="lb"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="lt"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="lv"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="nb"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="nl"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="pl"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="pt_PT"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="ro"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="sl"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="sr"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="sv"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="tr"
+ />
+ <subtype
+ android:label="@string/subtype_generic"
+ android:subtypeLocale="uk"
+ />
</spell-checker>
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java
index 308b123..471fca4 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java
@@ -403,7 +403,8 @@
if (!f.isFile()) {
continue;
}
- } else if (MetadataDbHelper.STATUS_AVAILABLE == wordListStatus) {
+ } else if (MetadataDbHelper.STATUS_AVAILABLE == wordListStatus
+ || MetadataDbHelper.STATUS_DELETING == wordListStatus) {
// The locale is the id for the main dictionary.
UpdateHandler.installIfNeverRequested(context, clientId, wordListId);
continue;
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
index 35b46a9..df03fd3 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
@@ -31,7 +31,6 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.Preference;
-import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import android.text.TextUtils;
import android.util.Log;
@@ -44,6 +43,7 @@
import android.view.animation.AnimationUtils;
import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.settings.CustomPreferenceFragment;
import java.util.ArrayList;
import java.util.Collection;
@@ -53,7 +53,7 @@
/**
* Preference screen.
*/
-public final class DictionarySettingsFragment extends PreferenceFragment
+public final class DictionarySettingsFragment extends CustomPreferenceFragment
implements UpdateHandler.UpdateEventListener {
private static final String TAG = DictionarySettingsFragment.class.getSimpleName();
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
index cdd632b..215cb9e 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
@@ -101,6 +101,11 @@
*/
public boolean onCustomRequest(int requestCode);
+ /**
+ * Called when user finished sliding space bar.
+ */
+ public void onMovePointer(int steps);
+
public static final KeyboardActionListener EMPTY_LISTENER = new Adapter();
public static class Adapter implements KeyboardActionListener {
@@ -128,5 +133,7 @@
public boolean onCustomRequest(int requestCode) {
return false;
}
+ @Override
+ public void onMovePointer(int steps) {}
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 7352f91..5e06191 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -78,7 +78,9 @@
public final int mElementId;
public final EditorInfo mEditorInfo;
public final boolean mClobberSettingsKey;
+ public final boolean mNumberRowEnabled;
public final boolean mLanguageSwitchKeyEnabled;
+ public final boolean mEmojiKeyEnabled;
public final String mCustomActionLabel;
public final boolean mHasShortcutKey;
public final boolean mIsSplitLayout;
@@ -93,7 +95,9 @@
mElementId = elementId;
mEditorInfo = params.mEditorInfo;
mClobberSettingsKey = params.mNoSettingsKey;
+ mNumberRowEnabled = params.mNumberRowEnabled;
mLanguageSwitchKeyEnabled = params.mLanguageSwitchKeyEnabled;
+ mEmojiKeyEnabled = params.mEmojiKeyEnabled;
mCustomActionLabel = (mEditorInfo.actionLabel != null)
? mEditorInfo.actionLabel.toString() : null;
mHasShortcutKey = params.mVoiceInputKeyEnabled;
@@ -110,8 +114,10 @@
id.mHeight,
id.passwordInput(),
id.mClobberSettingsKey,
+ id.mNumberRowEnabled,
id.mHasShortcutKey,
id.mLanguageSwitchKeyEnabled,
+ id.mEmojiKeyEnabled,
id.isMultiLine(),
id.imeAction(),
id.mCustomActionLabel,
@@ -131,8 +137,10 @@
&& other.mHeight == mHeight
&& other.passwordInput() == passwordInput()
&& other.mClobberSettingsKey == mClobberSettingsKey
+ && other.mNumberRowEnabled == mNumberRowEnabled
&& other.mHasShortcutKey == mHasShortcutKey
&& other.mLanguageSwitchKeyEnabled == mLanguageSwitchKeyEnabled
+ && other.mEmojiKeyEnabled == mEmojiKeyEnabled
&& other.isMultiLine() == isMultiLine()
&& other.imeAction() == imeAction()
&& TextUtils.equals(other.mCustomActionLabel, mCustomActionLabel)
@@ -200,9 +208,11 @@
(navigateNext() ? " navigateNext" : ""),
(navigatePrevious() ? " navigatePrevious" : ""),
(mClobberSettingsKey ? " clobberSettingsKey" : ""),
+ (mNumberRowEnabled ? " numberRowEnabled" : ""),
(passwordInput() ? " passwordInput" : ""),
(mHasShortcutKey ? " hasShortcutKey" : ""),
(mLanguageSwitchKeyEnabled ? " languageSwitchKeyEnabled" : ""),
+ (mEmojiKeyEnabled ? " emojiKeyEnabled" : ""),
(isMultiLine() ? " isMultiLine" : ""),
(mIsSplitLayout ? " isSplitLayout" : "")
);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index 26ff051..18390fc 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -118,7 +118,9 @@
boolean mIsPasswordField;
boolean mVoiceInputKeyEnabled;
boolean mNoSettingsKey;
+ boolean mNumberRowEnabled;
boolean mLanguageSwitchKeyEnabled;
+ boolean mEmojiKeyEnabled;
RichInputMethodSubtype mSubtype;
boolean mIsSpellChecker;
int mKeyboardWidth;
@@ -322,11 +324,21 @@
return this;
}
+ public Builder setNumberRowEnabled(final boolean enabled) {
+ mParams.mNumberRowEnabled = enabled;
+ return this;
+ }
+
public Builder setLanguageSwitchKeyEnabled(final boolean enabled) {
mParams.mLanguageSwitchKeyEnabled = enabled;
return this;
}
+ public Builder setEmojiKeyEnabled(final boolean enabled) {
+ mParams.mEmojiKeyEnabled = enabled;
+ return this;
+ }
+
public Builder disableTouchPositionCorrectionData() {
mParams.mDisableTouchPositionCorrectionDataForTest = true;
return this;
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 91295c7..b9cfc72 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.keyboard;
import android.content.Context;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.Log;
import android.view.ContextThemeWrapper;
@@ -67,6 +68,7 @@
private KeyboardTheme mKeyboardTheme;
private Context mThemeContext;
+ private int mActiveUiMode;
private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
@@ -101,10 +103,14 @@
private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,
final KeyboardTheme keyboardTheme) {
- if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme)
+ final boolean darkModeChanged = (mActiveUiMode & Configuration.UI_MODE_NIGHT_MASK)
+ != (context.getResources().getConfiguration().uiMode
+ & Configuration.UI_MODE_NIGHT_MASK);
+ if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme) || darkModeChanged
|| !mThemeContext.getResources().equals(context.getResources())) {
mKeyboardTheme = keyboardTheme;
mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId);
+ mActiveUiMode = context.getResources().getConfiguration().uiMode;
KeyboardLayoutSet.onKeyboardThemeChanged();
return true;
}
@@ -121,7 +127,9 @@
builder.setKeyboardGeometry(keyboardWidth, keyboardHeight);
builder.setSubtype(mRichImm.getCurrentSubtype());
builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey);
+ builder.setNumberRowEnabled(settingsValues.mShowNumberRow);
builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey());
+ builder.setEmojiKeyEnabled(settingsValues.mShowsEmojiKey);
builder.setSplitLayoutEnabledByUser(ProductionFlags.IS_SPLIT_KEYBOARD_SUPPORTED
&& settingsValues.mIsSplitKeyboardEnabled);
mKeyboardLayoutSet = builder.build();
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
index 006d086..fbfb108 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.keyboard;
import android.content.Context;
+import android.content.res.Configuration;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Build.VERSION_CODES;
@@ -32,33 +33,30 @@
public final class KeyboardTheme implements Comparable<KeyboardTheme> {
private static final String TAG = KeyboardTheme.class.getSimpleName();
- static final String KLP_KEYBOARD_THEME_KEY = "pref_keyboard_layout_20110916";
static final String LXX_KEYBOARD_THEME_KEY = "pref_keyboard_theme_20140509";
// These should be aligned with Keyboard.themeId and Keyboard.Case.keyboardTheme
// attributes' values in attrs.xml.
- public static final int THEME_ID_ICS = 0;
- public static final int THEME_ID_KLP = 2;
public static final int THEME_ID_LXX_LIGHT = 3;
public static final int THEME_ID_LXX_DARK = 4;
- public static final int DEFAULT_THEME_ID = THEME_ID_KLP;
+ public static final int THEME_ID_AUTO_DARK = 5;
+ public static final int THEME_ID_YOU = 6;
+ public static final int DEFAULT_THEME_ID = THEME_ID_AUTO_DARK;
private static KeyboardTheme[] AVAILABLE_KEYBOARD_THEMES;
/* package private for testing */
static final KeyboardTheme[] KEYBOARD_THEMES = {
- new KeyboardTheme(THEME_ID_ICS, "ICS", R.style.KeyboardTheme_ICS,
- // This has never been selected because we support ICS or later.
- VERSION_CODES.BASE),
- new KeyboardTheme(THEME_ID_KLP, "KLP", R.style.KeyboardTheme_KLP,
- // Default theme for ICS, JB, and KLP.
- VERSION_CODES.ICE_CREAM_SANDWICH),
new KeyboardTheme(THEME_ID_LXX_LIGHT, "LXXLight", R.style.KeyboardTheme_LXX_Light,
// Default theme for LXX.
Build.VERSION_CODES.LOLLIPOP),
new KeyboardTheme(THEME_ID_LXX_DARK, "LXXDark", R.style.KeyboardTheme_LXX_Dark,
// This has never been selected as default theme.
VERSION_CODES.BASE),
+ new KeyboardTheme(THEME_ID_AUTO_DARK, "AutoDark", 0,
+ Build.VERSION_CODES.Q),
+ new KeyboardTheme(THEME_ID_YOU, "You", R.style.KeyboardTheme_You,
+ Build.VERSION_CODES.S_V2),
};
static {
@@ -114,25 +112,6 @@
/* package private for testing */
static KeyboardTheme getDefaultKeyboardTheme(final SharedPreferences prefs,
final int sdkVersion, final KeyboardTheme[] availableThemeArray) {
- final String klpThemeIdString = prefs.getString(KLP_KEYBOARD_THEME_KEY, null);
- if (klpThemeIdString != null) {
- if (sdkVersion <= VERSION_CODES.KITKAT) {
- try {
- final int themeId = Integer.parseInt(klpThemeIdString);
- final KeyboardTheme theme = searchKeyboardThemeById(themeId,
- availableThemeArray);
- if (theme != null) {
- return theme;
- }
- Log.w(TAG, "Unknown keyboard theme in KLP preference: " + klpThemeIdString);
- } catch (final NumberFormatException e) {
- Log.w(TAG, "Illegal keyboard theme in KLP preference: " + klpThemeIdString, e);
- }
- }
- // Remove old preference.
- Log.i(TAG, "Remove KLP keyboard theme preference: " + klpThemeIdString);
- prefs.edit().remove(KLP_KEYBOARD_THEME_KEY).apply();
- }
// TODO: This search algorithm isn't optimal if there are many themes.
for (final KeyboardTheme theme : availableThemeArray) {
if (sdkVersion >= theme.mMinApiVersion) {
@@ -143,33 +122,19 @@
}
public static String getKeyboardThemeName(final int themeId) {
- final KeyboardTheme theme = searchKeyboardThemeById(themeId, KEYBOARD_THEMES);
+ KeyboardTheme theme = searchKeyboardThemeById(themeId, KEYBOARD_THEMES);
+ if (theme == null) {
+ theme = searchKeyboardThemeById(DEFAULT_THEME_ID, KEYBOARD_THEMES);
+ }
return theme.mThemeName;
}
public static void saveKeyboardThemeId(final int themeId, final SharedPreferences prefs) {
- saveKeyboardThemeId(themeId, prefs, BuildCompatUtils.EFFECTIVE_SDK_INT);
- }
-
- /* package private for testing */
- static String getPreferenceKey(final int sdkVersion) {
- if (sdkVersion <= VERSION_CODES.KITKAT) {
- return KLP_KEYBOARD_THEME_KEY;
- }
- return LXX_KEYBOARD_THEME_KEY;
- }
-
- /* package private for testing */
- static void saveKeyboardThemeId(final int themeId, final SharedPreferences prefs,
- final int sdkVersion) {
- final String prefKey = getPreferenceKey(sdkVersion);
- prefs.edit().putString(prefKey, Integer.toString(themeId)).apply();
+ prefs.edit().putString(LXX_KEYBOARD_THEME_KEY, Integer.toString(themeId)).apply();
}
public static KeyboardTheme getKeyboardTheme(final Context context) {
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- final KeyboardTheme[] availableThemeArray = getAvailableThemeArray(context);
- return getKeyboardTheme(prefs, BuildCompatUtils.EFFECTIVE_SDK_INT, availableThemeArray);
+ return getKeyboardTheme(context, BuildCompatUtils.EFFECTIVE_SDK_INT);
}
/* package private for testing */
@@ -192,24 +157,43 @@
}
/* package private for testing */
- static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs, final int sdkVersion,
- final KeyboardTheme[] availableThemeArray) {
- final String lxxThemeIdString = prefs.getString(LXX_KEYBOARD_THEME_KEY, null);
- if (lxxThemeIdString == null) {
- return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray);
- }
- try {
- final int themeId = Integer.parseInt(lxxThemeIdString);
- final KeyboardTheme theme = searchKeyboardThemeById(themeId, availableThemeArray);
- if (theme != null) {
- return theme;
+ static KeyboardTheme getKeyboardTheme(final Context context, final int sdkVersion) {
+ int themeId = getSelectedKeyboardThemeId(context);
+ if (THEME_ID_AUTO_DARK == themeId) {
+ Configuration cfg = context.getResources().getConfiguration();
+ int nightMode = cfg.uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ if (nightMode == Configuration.UI_MODE_NIGHT_YES) {
+ themeId = THEME_ID_LXX_DARK;
+ } else {
+ themeId = THEME_ID_LXX_LIGHT;
}
- Log.w(TAG, "Unknown keyboard theme in LXX preference: " + lxxThemeIdString);
- } catch (final NumberFormatException e) {
- Log.w(TAG, "Illegal keyboard theme in LXX preference: " + lxxThemeIdString, e);
+ }
+ final KeyboardTheme[] availableThemeArray = getAvailableThemeArray(context);
+ final KeyboardTheme theme = searchKeyboardThemeById(themeId, availableThemeArray);
+ if (theme != null) {
+ return theme;
+ }
+ Log.w(TAG, "Unknown keyboard theme in LXX preference: " + themeId);
+ // Remove preference that contains unknown or illegal theme id.
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ prefs.edit().remove(LXX_KEYBOARD_THEME_KEY).apply();
+ return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray);
+ }
+
+ public static int getSelectedKeyboardThemeId(final Context context) {
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ final KeyboardTheme[] availableThemeArray = getAvailableThemeArray(context);
+ final String lxxThemeIdString = prefs.getString(LXX_KEYBOARD_THEME_KEY, null);
+ if (lxxThemeIdString != null) {
+ try {
+ return Integer.parseInt(lxxThemeIdString);
+ } catch (final NumberFormatException e) {
+ Log.w(TAG, "Illegal keyboard theme in LXX preference: " + lxxThemeIdString, e);
+ }
}
// Remove preference that contains unknown or illegal theme id.
prefs.edit().remove(LXX_KEYBOARD_THEME_KEY).apply();
- return getDefaultKeyboardTheme(prefs, sdkVersion, availableThemeArray);
+ return getDefaultKeyboardTheme(prefs, BuildCompatUtils.EFFECTIVE_SDK_INT,
+ availableThemeArray).mThemeId;
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index faa2107..391274b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -36,6 +36,7 @@
import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.common.Constants;
+import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.latin.utils.TypefaceUtils;
import java.util.HashSet;
@@ -52,6 +53,7 @@
* @attr ref R.styleable#KeyboardView_spacebarIconWidthRatio
* @attr ref R.styleable#Keyboard_Key_keyLabelFlags
* @attr ref R.styleable#KeyboardView_keyHintLetterPadding
+ * @attr ref R.styleable#KeyboardView_keyHintLetterPaddingVertical
* @attr ref R.styleable#KeyboardView_keyPopupHintLetter
* @attr ref R.styleable#KeyboardView_keyPopupHintLetterPadding
* @attr ref R.styleable#KeyboardView_keyShiftedLetterHintPadding
@@ -83,7 +85,8 @@
// Default keyLabelFlags from {@link KeyboardTheme}.
// Currently only "alignHintLabelToBottom" is supported.
private final int mDefaultKeyLabelFlags;
- private final float mKeyHintLetterPadding;
+ private final float mKeyHintLetterPaddingX;
+ private final float mKeyHintLetterPaddingY;
private final String mKeyPopupHintLetter;
private final float mKeyPopupHintLetterPadding;
private final float mKeyShiftedLetterHintPadding;
@@ -142,8 +145,10 @@
mSpacebarBackground = (spacebarBackground != null) ? spacebarBackground : mKeyBackground;
mSpacebarIconWidthRatio = keyboardViewAttr.getFloat(
R.styleable.KeyboardView_spacebarIconWidthRatio, 1.0f);
- mKeyHintLetterPadding = keyboardViewAttr.getDimension(
+ mKeyHintLetterPaddingX = keyboardViewAttr.getDimension(
R.styleable.KeyboardView_keyHintLetterPadding, 0.0f);
+ mKeyHintLetterPaddingY = keyboardViewAttr.getDimension(
+ R.styleable.KeyboardView_keyHintLetterPaddingVertical, 0.0f);
mKeyPopupHintLetter = keyboardViewAttr.getString(
R.styleable.KeyboardView_keyPopupHintLetter);
mKeyPopupHintLetterPadding = keyboardViewAttr.getDimension(
@@ -355,12 +360,8 @@
if (key.needsToKeepBackgroundAspectRatio(mDefaultKeyLabelFlags)
// HACK: To disable expanding normal/functional key background.
&& !key.hasCustomActionLabel()) {
- final int intrinsicWidth = background.getIntrinsicWidth();
- final int intrinsicHeight = background.getIntrinsicHeight();
- final float minScale = Math.min(
- keyWidth / (float)intrinsicWidth, keyHeight / (float)intrinsicHeight);
- bgWidth = (int)(intrinsicWidth * minScale);
- bgHeight = (int)(intrinsicHeight * minScale);
+ bgWidth = background.getIntrinsicWidth();
+ bgHeight = background.getIntrinsicHeight();
bgX = (keyWidth - bgWidth) / 2;
bgY = (keyHeight - bgHeight) / 2;
} else {
@@ -370,10 +371,7 @@
bgX = -padding.left;
bgY = -padding.top;
}
- final Rect bounds = background.getBounds();
- if (bgWidth != bounds.right || bgHeight != bounds.bottom) {
- background.setBounds(0, 0, bgWidth, bgHeight);
- }
+ background.setBounds(0, 0, bgWidth, bgHeight);
canvas.translate(bgX, bgY);
background.draw(canvas);
canvas.translate(-bgX, -bgY);
@@ -445,7 +443,7 @@
// Draw hint label.
final String hintLabel = key.getHintLabel();
- if (hintLabel != null) {
+ if (hintLabel != null && Settings.getInstance().getCurrent().mShowLongpressHints) {
paint.setTextSize(key.selectHintTextSize(params));
paint.setColor(key.selectHintTextColor(params));
// TODO: Should add a way to specify type face for hint letters
@@ -474,9 +472,9 @@
// The hint letter is placed at top-right corner of the key. Used mainly on phone.
final float hintDigitWidth = TypefaceUtils.getReferenceDigitWidth(paint);
final float hintLabelWidth = TypefaceUtils.getStringWidth(hintLabel, paint);
- hintX = keyWidth - mKeyHintLetterPadding
+ hintX = keyWidth - mKeyHintLetterPaddingX
- Math.max(hintDigitWidth, hintLabelWidth) / 2.0f;
- hintBaseline = -paint.ascent();
+ hintBaseline = -paint.ascent() + mKeyHintLetterPaddingY;
paint.setTextAlign(Align.CENTER);
}
final float adjustmentY = params.mHintLabelVerticalAdjustment * labelCharHeight;
@@ -521,7 +519,7 @@
paint.setTextSize(params.mHintLetterSize);
paint.setColor(params.mHintLabelColor);
paint.setTextAlign(Align.CENTER);
- final float hintX = keyWidth - mKeyHintLetterPadding
+ final float hintX = keyWidth - mKeyHintLetterPaddingX
- TypefaceUtils.getReferenceCharWidth(paint) / 2.0f;
final float hintY = keyHeight - mKeyPopupHintLetterPadding;
canvas.drawText(mKeyPopupHintLetter, hintX, hintY, paint);
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index 00d4fa2..64ccd20 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -809,7 +809,7 @@
}
super.onDrawKeyTopVisuals(key, canvas, paint, params);
final int code = key.getCode();
- if (code == Constants.CODE_SPACE) {
+ if (code == Constants.CODE_SPACE && key.isLongPressEnabled()) {
// If input language are explicitly selected.
if (mLanguageOnSpacebarFormatType != LanguageOnSpacebarUtils.FORMAT_TYPE_NONE) {
drawLanguageOnSpacebar(key, canvas, paint);
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index c0ac1c0..d6fcc02 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -85,6 +85,7 @@
// Parameters for pointer handling.
private static PointerTrackerParams sParams;
+ private static int sPointerStep;
private static GestureStrokeRecognitionParams sGestureStrokeRecognitionParams;
private static GestureStrokeDrawingParams sGestureStrokeDrawingParams;
private static boolean sNeedsPhantomSuddenMoveEventHack;
@@ -128,6 +129,12 @@
private int mLastX;
private int mLastY;
+ // For spacebar slide tracking.
+ private int mStartX;
+ private int mStartY;
+ private long mStartTime;
+ private boolean mSlidOnSpaceBar = false;
+
// true if keyboard layout has been changed.
private boolean mKeyboardLayoutHasBeenChanged;
@@ -156,6 +163,7 @@
public static void init(final TypedArray mainKeyboardViewAttr, final TimerProxy timerProxy,
final DrawingProxy drawingProxy) {
sParams = new PointerTrackerParams(mainKeyboardViewAttr);
+ sPointerStep = (int)(10.0 * Resources.getSystem().getDisplayMetrics().density);
sGestureStrokeRecognitionParams = new GestureStrokeRecognitionParams(mainKeyboardViewAttr);
sGestureStrokeDrawingParams = new GestureStrokeDrawingParams(mainKeyboardViewAttr);
sTypingTimeRecorder = new TypingTimeRecorder(
@@ -636,9 +644,14 @@
final Key key = getKeyOn(x, y);
mBogusMoveEventDetector.onActualDownEvent(x, y);
if (key != null && key.isModifier()) {
- // Before processing a down event of modifier key, all pointers already being
- // tracked should be released.
- sPointerTrackerQueue.releaseAllPointers(eventTime);
+ if (sInGesture) {
+ // Make sure not to interrupt an active gesture
+ return;
+ } else {
+ // Before processing a down event of modifier key, all pointers
+ // already being tracked should be released.
+ sPointerTrackerQueue.releaseAllPointers(eventTime);
+ }
}
sPointerTrackerQueue.add(this);
onDownEventInternal(x, y, eventTime);
@@ -691,6 +704,10 @@
startRepeatKey(key);
startLongPressTimer(key);
setPressedKeyGraphics(key, eventTime);
+
+ mStartX = x;
+ mStartY = y;
+ mStartTime = System.currentTimeMillis();
}
}
@@ -894,6 +911,20 @@
final Key oldKey = mCurrentKey;
final Key newKey = onMoveKey(x, y);
+ // Cursor space bar slider
+ if (oldKey != null && oldKey.getCode() == Constants.CODE_SPACE
+ && Settings.getInstance().getCurrent().mSpaceTrackpadEnabled) {
+ int steps = (x - mStartX) / sPointerStep;
+ if (steps != 0
+ && mStartTime + Settings.getInstance().getCurrent().mKeyLongpressTimeout
+ < System.currentTimeMillis()) {
+ mSlidOnSpaceBar = true;
+ mStartX += steps * sPointerStep;
+ sListener.onMovePointer(steps);
+ }
+ return;
+ }
+
if (sGestureEnabler.shouldHandleGesture()) {
// Register move event on gesture tracker.
onGestureMoveEvent(x, y, eventTime, true /* isMajorEvent */, newKey);
@@ -976,6 +1007,11 @@
return;
}
+ if (mSlidOnSpaceBar) {
+ mSlidOnSpaceBar = false;
+ return;
+ }
+
if (sInGesture) {
if (currentKey != null) {
callListenerOnRelease(currentKey, currentKey.getCode(), true /* withSliding */);
@@ -1018,6 +1054,9 @@
if (isShowingMoreKeysPanel()) {
return;
}
+ if (mSlidOnSpaceBar) {
+ return;
+ }
final Key key = getKey();
if (key == null) {
return;
@@ -1143,6 +1182,11 @@
// We use longer timeout for sliding finger input started from the modifier key.
return longpressTimeout * MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT;
}
+ if (code == Constants.CODE_SPACE
+ && Settings.getInstance().getCurrent().mSpaceTrackpadEnabled) {
+ // Increase timeout when space bar trackpad is on, to not interfere with language switch
+ return longpressTimeout * MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT;
+ }
return longpressTimeout;
}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
index b57e483..41e87f4 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -184,7 +184,7 @@
addShownCategoryId(EmojiCategory.ID_EIGHT_ACTIVITY);
addShownCategoryId(EmojiCategory.ID_EIGHT_OBJECTS);
addShownCategoryId(EmojiCategory.ID_EIGHT_SYMBOLS);
- addShownCategoryId(EmojiCategory.ID_FLAGS); // Exclude combinations without glyphs.
+ addShownCategoryId(EmojiCategory.ID_EIGHT_FLAGS);
} else {
defaultCategoryId = EmojiCategory.ID_PEOPLE;
addShownCategoryId(EmojiCategory.ID_PEOPLE);
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
index 797541a..0ddaa22 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
@@ -17,7 +17,7 @@
package com.android.inputmethod.keyboard.emoji;
import android.content.res.Resources;
-import androidx.viewpager.widget.ViewPager;
+import androidx.viewpager2.widget.ViewPager2;
import android.view.View;
import android.widget.LinearLayout;
@@ -25,8 +25,6 @@
import com.android.inputmethod.latin.utils.ResourceUtils;
final class EmojiLayoutParams {
- private static final int DEFAULT_KEYBOARD_ROWS = 4;
-
public final int mEmojiPagerHeight;
private final int mEmojiPagerBottomMargin;
public final int mEmojiKeyboardHeight;
@@ -52,7 +50,9 @@
(int) (res.getDimension(R.dimen.config_emoji_category_page_id_height));
final int baseheight = defaultKeyboardHeight - mBottomPadding - mTopPadding
+ mKeyVerticalGap;
- mEmojiActionBarHeight = baseheight / DEFAULT_KEYBOARD_ROWS
+ final int mNumberOfRows = (int) (1.0f / res.getFraction(
+ R.fraction.config_emoji_keyboard_row_height, 1, 1)) + 1;
+ mEmojiActionBarHeight = baseheight / mNumberOfRows
- (mKeyVerticalGap - mBottomPadding) / 2;
mEmojiPagerHeight = defaultKeyboardHeight - mEmojiActionBarHeight
- mEmojiCategoryPageIdViewHeight;
@@ -60,7 +60,7 @@
mEmojiKeyboardHeight = mEmojiPagerHeight - mEmojiPagerBottomMargin - 1;
}
- public void setPagerProperties(final ViewPager vp) {
+ public void setPagerProperties(final ViewPager2 vp) {
final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) vp.getLayoutParams();
lp.height = mEmojiKeyboardHeight;
lp.bottomMargin = mEmojiPagerBottomMargin;
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java
index 18b9c7e..432d1a9 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java
@@ -16,7 +16,7 @@
package com.android.inputmethod.keyboard.emoji;
-import androidx.viewpager.widget.PagerAdapter;
+import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
@@ -28,7 +28,7 @@
import com.android.inputmethod.keyboard.KeyboardView;
import com.android.inputmethod.latin.R;
-final class EmojiPalettesAdapter extends PagerAdapter {
+final class EmojiPalettesAdapter extends RecyclerView.Adapter<EmojiPalettesAdapter.ViewHolder> {
private static final String TAG = EmojiPalettesAdapter.class.getSimpleName();
private static final boolean DEBUG_PAGER = false;
@@ -83,26 +83,14 @@
}
@Override
- public int getCount() {
- return mEmojiCategory.getTotalPageCountOfAllCategories();
+ public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
+ View view = LayoutInflater.from(viewGroup.getContext())
+ .inflate(R.layout.emoji_keyboard_page, viewGroup, false);
+ return new ViewHolder(view);
}
@Override
- public void setPrimaryItem(final ViewGroup container, final int position,
- final Object object) {
- if (mActivePosition == position) {
- return;
- }
- final EmojiPageKeyboardView oldKeyboardView = mActiveKeyboardViews.get(mActivePosition);
- if (oldKeyboardView != null) {
- oldKeyboardView.releaseCurrentKey(false /* withKeyRegistering */);
- oldKeyboardView.deallocateMemory();
- }
- mActivePosition = position;
- }
-
- @Override
- public Object instantiateItem(final ViewGroup container, final int position) {
+ public void onBindViewHolder(EmojiPalettesAdapter.ViewHolder holder, int position) {
if (DEBUG_PAGER) {
Log.d(TAG, "instantiate item: " + position);
}
@@ -114,36 +102,26 @@
}
final Keyboard keyboard =
mEmojiCategory.getKeyboardFromPagePosition(position);
- final LayoutInflater inflater = LayoutInflater.from(container.getContext());
- final EmojiPageKeyboardView keyboardView = (EmojiPageKeyboardView)inflater.inflate(
- R.layout.emoji_keyboard_page, container, false /* attachToRoot */);
- keyboardView.setKeyboard(keyboard);
- keyboardView.setOnKeyEventListener(mListener);
- container.addView(keyboardView);
- mActiveKeyboardViews.put(position, keyboardView);
- return keyboardView;
+ holder.getKeyboardView().setKeyboard(keyboard);
+ holder.getKeyboardView().setOnKeyEventListener(mListener);
+ mActiveKeyboardViews.put(position, holder.getKeyboardView());
}
@Override
- public boolean isViewFromObject(final View view, final Object object) {
- return view == object;
+ public int getItemCount() {
+ return mEmojiCategory.getTotalPageCountOfAllCategories();
}
- @Override
- public void destroyItem(final ViewGroup container, final int position,
- final Object object) {
- if (DEBUG_PAGER) {
- Log.d(TAG, "destroy item: " + position + ", " + object.getClass().getSimpleName());
+ static class ViewHolder extends RecyclerView.ViewHolder {
+ private EmojiPageKeyboardView customView;
+
+ public ViewHolder(View view) {
+ super(view);
+ customView = view.findViewById(R.id.emoji_keyboard_page);
}
- final EmojiPageKeyboardView keyboardView = mActiveKeyboardViews.get(position);
- if (keyboardView != null) {
- keyboardView.deallocateMemory();
- mActiveKeyboardViews.remove(position);
- }
- if (object instanceof View) {
- container.removeView((View)object);
- } else {
- Log.w(TAG, "Warning!!! Emoji palette may be leaking. " + object);
+
+ public EmojiPageKeyboardView getKeyboardView() {
+ return customView;
}
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
index 9ba8d2b..825a4cb 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
@@ -23,7 +23,7 @@
import android.content.res.TypedArray;
import android.graphics.Color;
import android.preference.PreferenceManager;
-import androidx.viewpager.widget.ViewPager;
+import androidx.viewpager2.widget.ViewPager2;
import android.util.AttributeSet;
import android.util.Pair;
import android.util.TypedValue;
@@ -63,8 +63,7 @@
* Because of the above reasons, this class doesn't extend {@link KeyboardView}.
*/
public final class EmojiPalettesView extends LinearLayout implements OnTabChangeListener,
- ViewPager.OnPageChangeListener, View.OnClickListener, View.OnTouchListener,
- EmojiPageKeyboardView.OnKeyEventListener {
+ View.OnClickListener, View.OnTouchListener, EmojiPageKeyboardView.OnKeyEventListener {
private final int mFunctionalKeyBackgroundId;
private final int mSpacebarBackgroundId;
private final boolean mCategoryIndicatorEnabled;
@@ -78,12 +77,11 @@
private ImageButton mDeleteKey;
private TextView mAlphabetKeyLeft;
- private TextView mAlphabetKeyRight;
private View mSpacebar;
// TODO: Remove this workaround.
private View mSpacebarIcon;
private TabHost mTabHost;
- private ViewPager mEmojiPager;
+ private ViewPager2 mEmojiPager;
private int mCurrentPagerPosition = 0;
private EmojiCategoryPageIndicatorView mEmojiCategoryPageIndicatorView;
@@ -181,10 +179,50 @@
mEmojiPalettesAdapter = new EmojiPalettesAdapter(mEmojiCategory, this);
- mEmojiPager = (ViewPager)findViewById(R.id.emoji_keyboard_pager);
+ mEmojiPager = findViewById(R.id.emoji_keyboard_pager);
mEmojiPager.setAdapter(mEmojiPalettesAdapter);
- mEmojiPager.setOnPageChangeListener(this);
- mEmojiPager.setOffscreenPageLimit(0);
+
+ mEmojiPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
+ @Override
+ public void onPageSelected(int position) {
+ final Pair<Integer, Integer> newPos =
+ mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
+ setCurrentCategoryId(newPos.first /* categoryId */, false /* force */);
+ mEmojiCategory.setCurrentCategoryPageId(newPos.second /* categoryPageId */);
+ updateEmojiCategoryPageIdView();
+ mCurrentPagerPosition = position;
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ // Ignore this message. Only want the actual page selected.
+ }
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset,
+ int positionOffsetPixels) {
+ mEmojiPalettesAdapter.onPageScrolled();
+ final Pair<Integer, Integer> newPos =
+ mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
+ final int newCategoryId = newPos.first;
+ final int newCategorySize = mEmojiCategory.getCategoryPageSize(newCategoryId);
+ final int currentCategoryId = mEmojiCategory.getCurrentCategoryId();
+ final int currentCategoryPageId = mEmojiCategory.getCurrentCategoryPageId();
+ final int currentCategorySize = mEmojiCategory.getCurrentCategoryPageSize();
+ if (newCategoryId == currentCategoryId) {
+ mEmojiCategoryPageIndicatorView.setCategoryPageId(
+ newCategorySize, newPos.second, positionOffset);
+ } else if (newCategoryId > currentCategoryId) {
+ mEmojiCategoryPageIndicatorView.setCategoryPageId(
+ currentCategorySize, currentCategoryPageId, positionOffset);
+ } else if (newCategoryId < currentCategoryId) {
+ mEmojiCategoryPageIndicatorView.setCategoryPageId(
+ currentCategorySize, currentCategoryPageId, positionOffset - 1);
+ }
+ }
+ });
+ mEmojiPager.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT);
+
mEmojiPager.setPersistentDrawingCache(PERSISTENT_NO_CACHE);
mEmojiLayoutParams.setPagerProperties(mEmojiPager);
@@ -199,12 +237,6 @@
final LinearLayout actionBar = (LinearLayout)findViewById(R.id.emoji_action_bar);
mEmojiLayoutParams.setActionBarProperties(actionBar);
- // deleteKey depends only on OnTouchListener.
- mDeleteKey = (ImageButton)findViewById(R.id.emoji_keyboard_delete);
- mDeleteKey.setBackgroundResource(mFunctionalKeyBackgroundId);
- mDeleteKey.setTag(Constants.CODE_DELETE);
- mDeleteKey.setOnTouchListener(mDeleteKeyOnTouchListener);
-
// {@link #mAlphabetKeyLeft}, {@link #mAlphabetKeyRight, and spaceKey depend on
// {@link View.OnClickListener} as well as {@link View.OnTouchListener}.
// {@link View.OnTouchListener} is used as the trigger of key-press, while
@@ -217,16 +249,18 @@
mAlphabetKeyLeft.setTag(Constants.CODE_ALPHA_FROM_EMOJI);
mAlphabetKeyLeft.setOnTouchListener(this);
mAlphabetKeyLeft.setOnClickListener(this);
- mAlphabetKeyRight = (TextView)findViewById(R.id.emoji_keyboard_alphabet_right);
- mAlphabetKeyRight.setBackgroundResource(mFunctionalKeyBackgroundId);
- mAlphabetKeyRight.setTag(Constants.CODE_ALPHA_FROM_EMOJI);
- mAlphabetKeyRight.setOnTouchListener(this);
- mAlphabetKeyRight.setOnClickListener(this);
mSpacebar = findViewById(R.id.emoji_keyboard_space);
mSpacebar.setBackgroundResource(mSpacebarBackgroundId);
mSpacebar.setTag(Constants.CODE_SPACE);
mSpacebar.setOnTouchListener(this);
mSpacebar.setOnClickListener(this);
+
+ // deleteKey depends only on OnTouchListener.
+ mDeleteKey = (ImageButton)findViewById(R.id.emoji_keyboard_delete);
+ mDeleteKey.setBackgroundResource(mFunctionalKeyBackgroundId);
+ mDeleteKey.setTag(Constants.CODE_DELETE);
+ mDeleteKey.setOnTouchListener(mDeleteKeyOnTouchListener);
+
mEmojiLayoutParams.setKeyProperties(mSpacebar);
mSpacebarIcon = findViewById(R.id.emoji_keyboard_space_icon);
}
@@ -248,44 +282,6 @@
updateEmojiCategoryPageIdView();
}
- @Override
- public void onPageSelected(final int position) {
- final Pair<Integer, Integer> newPos =
- mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
- setCurrentCategoryId(newPos.first /* categoryId */, false /* force */);
- mEmojiCategory.setCurrentCategoryPageId(newPos.second /* categoryPageId */);
- updateEmojiCategoryPageIdView();
- mCurrentPagerPosition = position;
- }
-
- @Override
- public void onPageScrollStateChanged(final int state) {
- // Ignore this message. Only want the actual page selected.
- }
-
- @Override
- public void onPageScrolled(final int position, final float positionOffset,
- final int positionOffsetPixels) {
- mEmojiPalettesAdapter.onPageScrolled();
- final Pair<Integer, Integer> newPos =
- mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
- final int newCategoryId = newPos.first;
- final int newCategorySize = mEmojiCategory.getCategoryPageSize(newCategoryId);
- final int currentCategoryId = mEmojiCategory.getCurrentCategoryId();
- final int currentCategoryPageId = mEmojiCategory.getCurrentCategoryPageId();
- final int currentCategorySize = mEmojiCategory.getCurrentCategoryPageSize();
- if (newCategoryId == currentCategoryId) {
- mEmojiCategoryPageIndicatorView.setCategoryPageId(
- newCategorySize, newPos.second, positionOffset);
- } else if (newCategoryId > currentCategoryId) {
- mEmojiCategoryPageIndicatorView.setCategoryPageId(
- currentCategorySize, currentCategoryPageId, positionOffset);
- } else if (newCategoryId < currentCategoryId) {
- mEmojiCategoryPageIndicatorView.setCategoryPageId(
- currentCategorySize, currentCategoryPageId, positionOffset - 1);
- }
- }
-
/**
* Called from {@link EmojiPageKeyboardView} through {@link android.view.View.OnTouchListener}
* interface to handle touch events from View-based elements such as the space bar.
@@ -386,7 +382,6 @@
final KeyDrawParams params = new KeyDrawParams();
params.updateParams(mEmojiLayoutParams.getActionBarHeight(), keyVisualAttr);
setupAlphabetKey(mAlphabetKeyLeft, switchToAlphaLabel, params);
- setupAlphabetKey(mAlphabetKeyRight, switchToAlphaLabel, params);
mEmojiPager.setAdapter(mEmojiPalettesAdapter);
mEmojiPager.setCurrentItem(mCurrentPagerPosition);
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index 0eabf6c..35928d6 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -663,9 +663,14 @@
R.styleable.Keyboard_Case_clobberSettingsKey, id.mClobberSettingsKey);
final boolean hasShortcutKeyMatched = matchBoolean(caseAttr,
R.styleable.Keyboard_Case_hasShortcutKey, id.mHasShortcutKey);
+ final boolean numberRowEnabledMatched = matchBoolean(caseAttr,
+ R.styleable.Keyboard_Case_numberRowEnabled, id.mNumberRowEnabled);
final boolean languageSwitchKeyEnabledMatched = matchBoolean(caseAttr,
R.styleable.Keyboard_Case_languageSwitchKeyEnabled,
id.mLanguageSwitchKeyEnabled);
+ final boolean emojiKeyEnabledMatched = matchBoolean(caseAttr,
+ R.styleable.Keyboard_Case_emojiKeyEnabled,
+ id.mEmojiKeyEnabled);
final boolean isMultiLineMatched = matchBoolean(caseAttr,
R.styleable.Keyboard_Case_isMultiLine, id.isMultiLine());
final boolean imeActionMatched = matchInteger(caseAttr,
@@ -681,7 +686,8 @@
final boolean selected = keyboardLayoutSetMatched && keyboardLayoutSetElementMatched
&& keyboardThemeMacthed && modeMatched && navigateNextMatched
&& navigatePreviousMatched && passwordInputMatched && clobberSettingsKeyMatched
- && hasShortcutKeyMatched && languageSwitchKeyEnabledMatched
+ && hasShortcutKeyMatched && numberRowEnabledMatched
+ && languageSwitchKeyEnabledMatched && emojiKeyEnabledMatched
&& isMultiLineMatched && imeActionMatched && isIconDefinedMatched
&& localeCodeMatched && languageCodeMatched && countryCodeMatched
&& splitLayoutMatched;
@@ -708,8 +714,12 @@
"passwordInput"),
booleanAttr(caseAttr, R.styleable.Keyboard_Case_hasShortcutKey,
"hasShortcutKey"),
+ booleanAttr(caseAttr, R.styleable.Keyboard_Case_numberRowEnabled,
+ "numberRowEnabled"),
booleanAttr(caseAttr, R.styleable.Keyboard_Case_languageSwitchKeyEnabled,
"languageSwitchKeyEnabled"),
+ booleanAttr(caseAttr, R.styleable.Keyboard_Case_emojiKeyEnabled,
+ "emojiKeyEnabled"),
booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine,
"isMultiLine"),
booleanAttr(caseAttr, R.styleable.Keyboard_Case_isSplitLayout,
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 7dfb532..e476db3 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -83,17 +83,17 @@
private static final String[] NAMES = {
// /* index:histogram */ "name",
- /* 0:33 */ "morekeys_a",
- /* 1:33 */ "morekeys_o",
- /* 2:32 */ "morekeys_e",
- /* 3:31 */ "morekeys_u",
- /* 4:31 */ "keylabel_to_alpha",
- /* 5:30 */ "morekeys_i",
- /* 6:25 */ "morekeys_n",
+ /* 0:34 */ "morekeys_a",
+ /* 1:34 */ "morekeys_o",
+ /* 2:33 */ "morekeys_e",
+ /* 3:32 */ "morekeys_u",
+ /* 4:31 */ "morekeys_i",
+ /* 5:31 */ "keylabel_to_alpha",
+ /* 6:26 */ "morekeys_n",
/* 7:25 */ "morekeys_c",
- /* 8:23 */ "double_quotes",
- /* 9:22 */ "morekeys_s",
- /* 10:22 */ "single_quotes",
+ /* 8:24 */ "double_quotes",
+ /* 9:23 */ "morekeys_s",
+ /* 10:23 */ "single_quotes",
/* 11:19 */ "keyspec_currency",
/* 12:17 */ "morekeys_y",
/* 13:16 */ "morekeys_z",
@@ -101,8 +101,8 @@
/* 15:10 */ "morekeys_t",
/* 16:10 */ "morekeys_l",
/* 17:10 */ "morekeys_g",
- /* 18: 9 */ "single_angle_quotes",
- /* 19: 9 */ "double_angle_quotes",
+ /* 18:10 */ "single_angle_quotes",
+ /* 19:10 */ "double_angle_quotes",
/* 20: 8 */ "morekeys_r",
/* 21: 6 */ "morekeys_k",
/* 22: 6 */ "morekeys_cyrillic_ie",
@@ -266,13 +266,12 @@
/* Default texts */
private static final String[] TEXTS_DEFAULT = {
/* morekeys_a ~ */
- EMPTY, EMPTY, EMPTY, EMPTY,
- /* ~ morekeys_u */
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
/* keylabel_to_alpha */ "ABC",
- /* morekeys_i ~ */
- EMPTY, EMPTY, EMPTY,
- /* ~ morekeys_c */
+ /* morekeys_n */ EMPTY,
+ /* morekeys_c */ EMPTY,
/* double_quotes */ "!text/double_lqm_rqm",
/* morekeys_s */ EMPTY,
/* single_quotes */ "!text/single_lqm_rqm",
@@ -518,7 +517,6 @@
// U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -527,6 +525,7 @@
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* morekeys_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -541,17 +540,17 @@
/* Locale ar: Arabic */
private static final String[] TEXTS_ar = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
// U+200C: ZERO WIDTH NON-JOINER
// U+0628: "ب" ARABIC LETTER BEH
// U+062C: "ج" ARABIC LETTER JEEM
/* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C",
- /* morekeys_i ~ */
+ /* morekeys_n ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null,
/* ~ morekeys_cyrillic_soft_sign */
// U+0661: "١" ARABIC-INDIC DIGIT ONE
/* keyspec_symbols_1 */ "\u0661",
@@ -694,7 +693,6 @@
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
- /* keylabel_to_alpha */ null,
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -703,6 +701,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u0148,\u00F1",
@@ -732,16 +731,15 @@
/* Locale be_BY: Belarusian (Belarus) */
private static final String[] TEXTS_be_BY = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_lqm",
@@ -768,16 +766,15 @@
/* Locale bg: Bulgarian */
private static final String[] TEXTS_bg = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
// single_quotes of Bulgarian is default single_quotes_right_left.
/* double_quotes */ "!text/double_9qm_lqm",
};
@@ -785,15 +782,15 @@
/* Locale bn_BD: Bengali (Bangladesh) */
private static final String[] TEXTS_bn_BD = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0995: "क" BENGALI LETTER KA
// U+0996: "ख" BENGALI LETTER KHA
// U+0997: "ग" BENGALI LETTER GA
/* keylabel_to_alpha */ "\u0995\u0996\u0997",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+09F3: "৳" BENGALI RUPEE SIGN
/* keyspec_currency */ "\u09F3",
@@ -802,15 +799,15 @@
/* Locale bn_IN: Bengali (India) */
private static final String[] TEXTS_bn_IN = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0995: "क" BENGALI LETTER KA
// U+0996: "ख" BENGALI LETTER KHA
// U+0997: "ग" BENGALI LETTER GA
/* keylabel_to_alpha */ "\u0995\u0996\u0997",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -853,7 +850,6 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -861,6 +857,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -927,7 +924,6 @@
// U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -935,6 +931,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -998,10 +995,10 @@
// U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
/* morekeys_i */ "\u00ED,\u00EF",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -1076,8 +1073,8 @@
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FC,%,\u00FB,\u00F9,\u00FA,\u016B",
- /* keylabel_to_alpha */ null,
/* morekeys_i */ null,
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -1115,8 +1112,8 @@
/* Locale el: Greek */
private static final String[] TEXTS_el = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0391: "Α" GREEK CAPITAL LETTER ALPHA
// U+0392: "Β" GREEK CAPITAL LETTER BETA
@@ -1156,13 +1153,13 @@
// U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
/* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u00F1",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
@@ -1217,7 +1214,6 @@
// U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
// U+00B5: "µ" MICRO SIGN
/* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -1228,6 +1224,7 @@
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -1359,7 +1356,6 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1367,6 +1363,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -1424,7 +1421,6 @@
// U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
// U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
/* morekeys_u */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
- /* keylabel_to_alpha */ null,
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
@@ -1433,6 +1429,7 @@
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* morekeys_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131",
+ /* keylabel_to_alpha */ null,
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -1525,7 +1522,6 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1533,6 +1529,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -1545,16 +1542,16 @@
/* Locale fa: Persian */
private static final String[] TEXTS_fa = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0627: "ا" ARABIC LETTER ALEF
// U+200C: ZERO WIDTH NON-JOINER
// U+0628: "ب" ARABIC LETTER BEH
// U+067E: "پ" ARABIC LETTER PEH
/* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+FDFC: "﷼" RIAL SIGN
/* keyspec_currency */ "\uFDFC",
@@ -1709,7 +1706,7 @@
/* morekeys_e */ null,
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* morekeys_u */ "\u00FC",
- /* keylabel_to_alpha ~ */
+ /* morekeys_i ~ */
null, null, null, null, null,
/* ~ double_quotes */
// U+0161: "š" LATIN SMALL LETTER S WITH CARON
@@ -1778,7 +1775,6 @@
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B",
- /* keylabel_to_alpha */ null,
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1786,6 +1782,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
/* morekeys_n */ null,
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
@@ -1853,7 +1850,6 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -1861,6 +1857,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -1873,15 +1870,15 @@
/* Locale hi: Hindi */
private static final String[] TEXTS_hi = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* keylabel_to_alpha */ "\u0915\u0916\u0917",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -1961,7 +1958,7 @@
private static final String[] TEXTS_hr = {
/* morekeys_a ~ */
null, null, null, null, null, null,
- /* ~ morekeys_i */
+ /* ~ keylabel_to_alpha */
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -1993,49 +1990,22 @@
/* Locale hu: Hungarian */
private static final String[] TEXTS_hu = {
// U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- // U+00E6: "æ" LATIN SMALL LETTER AE
- // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
- /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+ /* morekeys_a */ "\u00E1",
// U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
// U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- // U+0153: "œ" LATIN SMALL LIGATURE OE
- // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
- /* morekeys_o */ "\u00F3,\u00F6,\u0151,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+ /* morekeys_o */ "\u00F3,\u00F6,\u0151",
// U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
- /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+ /* morekeys_e */ "\u00E9",
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
// U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
- // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
- /* morekeys_u */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
+ /* morekeys_u */ "\u00FA,\u00FC,\u0171",
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
- /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
- /* morekeys_n */ null,
- /* morekeys_c */ null,
+ /* morekeys_i */ "\u00ED",
+ /* keylabel_to_alpha ~ */
+ null, null, null,
+ /* ~ morekeys_c */
/* double_quotes */ "!text/double_9qm_rqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_rqm",
@@ -2049,18 +2019,18 @@
/* Locale hy_AM: Armenian (Armenia) */
private static final String[] TEXTS_hy_AM = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
// U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
// U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM
/* keylabel_to_alpha */ "\u0531\u0532\u0533",
- /* morekeys_i ~ */
+ /* morekeys_n ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null,
+ null, null,
/* ~ additional_morekeys_symbols_0 */
/* morekeys_tablet_period */ "!text/morekeys_punctuation",
/* morekeys_nordic_row2_11 */ null,
@@ -2140,7 +2110,6 @@
// U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
@@ -2148,8 +2117,9 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
- /* morekeys_n */ null,
- /* morekeys_c */ null,
+ /* keylabel_to_alpha ~ */
+ null, null, null,
+ /* ~ morekeys_c */
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_lqm",
@@ -2200,7 +2170,6 @@
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B",
- /* keylabel_to_alpha */ null,
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
@@ -2208,11 +2177,11 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B",
- /* morekeys_n ~ */
+ /* keylabel_to_alpha ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null,
/* ~ keyspec_tablet_period */
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* keyspec_swiss_row1_11 */ "\u00FC",
@@ -2231,16 +2200,15 @@
/* Locale iw: Hebrew */
private static final String[] TEXTS_iw = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+05D0: "א" HEBREW LETTER ALEF
// U+05D1: "ב" HEBREW LETTER BET
// U+05D2: "ג" HEBREW LETTER GIMEL
/* keylabel_to_alpha */ "\u05D0\u05D1\u05D2",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
/* double_quotes */ "!text/double_rqm_9qm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_rqm_9qm",
@@ -2290,16 +2258,15 @@
/* Locale ka_GE: Georgian (Georgia) */
private static final String[] TEXTS_ka_GE = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+10D0: "ა" GEORGIAN LETTER AN
// U+10D1: "ბ" GEORGIAN LETTER BAN
// U+10D2: "გ" GEORGIAN LETTER GAN
/* keylabel_to_alpha */ "\u10D0\u10D1\u10D2",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_lqm",
@@ -2308,16 +2275,16 @@
/* Locale kk: Kazakh */
private static final String[] TEXTS_kk = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
+ /* morekeys_n ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null,
+ null,
/* ~ morekeys_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* morekeys_cyrillic_ie */ "\u0451",
@@ -2367,14 +2334,14 @@
/* Locale km_KH: Khmer (Cambodia) */
private static final String[] TEXTS_km_KH = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+1780: "ក" KHMER LETTER KA
// U+1781: "ខ" KHMER LETTER KHA
// U+1782: "គ" KHMER LETTER KO
/* keylabel_to_alpha */ "\u1780\u1781\u1782",
- /* morekeys_i ~ */
+ /* morekeys_n ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -2383,7 +2350,7 @@
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null,
+ null, null, null,
/* ~ morekeys_cyrillic_a */
// U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
/* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
@@ -2392,15 +2359,15 @@
/* Locale kn_IN: Kannada (India) */
private static final String[] TEXTS_kn_IN = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0C85: "ಅ" KANNADA LETTER A
// U+0C86: "ಆ" KANNADA LETTER AA
// U+0C87: "ಇ" KANNADA LETTER I
/* keylabel_to_alpha */ "\u0C85\u0C86\u0C87",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -2409,16 +2376,16 @@
/* Locale ky: Kirghiz */
private static final String[] TEXTS_ky = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
+ /* morekeys_n ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null,
+ null,
/* ~ morekeys_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* morekeys_cyrillic_ie */ "\u0451",
@@ -2450,18 +2417,73 @@
/* morekeys_cyrillic_o */ "\u04E9",
};
+ /* Locale lb: Luxembourgish */
+ private static final String[] TEXTS_lb = {
+ // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ // U+0040: "@" COMMERCIAL AT
+ // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ // U+00E6: "æ" LATIN SMALL LETTER AE
+ // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+ /* morekeys_a */ "\u00E4,@,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101",
+ // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ // U+0153: "œ" LATIN SMALL LIGATURE OE
+ // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+ /* morekeys_o */ "\u00F6,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D",
+ // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+ /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB",
+ // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+ /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+ // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+ /* morekeys_i */ "\u00ED,\u00EC,\u00EE,\u00EF",
+ /* keylabel_to_alpha */ null,
+ // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+ /* morekeys_n */ "\u00F1,\u0144",
+ /* morekeys_c */ null,
+ /* double_quotes */ "!text/double_9qm_lqm",
+ // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+ /* morekeys_s */ "\u00DF,\u015B,\u0161",
+ /* single_quotes */ "!text/single_9qm_lqm",
+ /* keyspec_currency ~ */
+ null, null, null, null, null, null, null,
+ /* ~ morekeys_g */
+ /* single_angle_quotes */ "!text/single_raqm_laqm",
+ /* double_angle_quotes */ "!text/double_raqm_laqm",
+ };
+
/* Locale lo_LA: Lao (Laos) */
private static final String[] TEXTS_lo_LA = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0E81: "ກ" LAO LETTER KO
// U+0E82: "ຂ" LAO LETTER KHO SUNG
// U+0E84: "ຄ" LAO LETTER KHO TAM
/* keylabel_to_alpha */ "\u0E81\u0E82\u0E84",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20AD: "₭" KIP SIGN
/* keyspec_currency */ "\u20AD",
@@ -2507,7 +2529,6 @@
// U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
// U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
/* morekeys_u */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
- /* keylabel_to_alpha */ null,
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -2516,6 +2537,7 @@
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* morekeys_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+ /* keylabel_to_alpha */ null,
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -2601,7 +2623,6 @@
// U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
// U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
/* morekeys_u */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171",
- /* keylabel_to_alpha */ null,
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -2610,6 +2631,7 @@
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* morekeys_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+ /* keylabel_to_alpha */ null,
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
@@ -2659,16 +2681,15 @@
/* Locale mk: Macedonian */
private static final String[] TEXTS_mk = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_lqm",
@@ -2699,13 +2720,13 @@
/* Locale ml_IN: Malayalam (India) */
private static final String[] TEXTS_ml_IN = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0D05: "അ" MALAYALAM LETTER A
/* keylabel_to_alpha */ "\u0D05",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -2714,15 +2735,15 @@
/* Locale mn_MN: Mongolian (Mongolia) */
private static final String[] TEXTS_mn_MN = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20AE: "₮" TUGRIK SIGN
/* keyspec_currency */ "\u20AE",
@@ -2731,15 +2752,15 @@
/* Locale mr_IN: Marathi (India) */
private static final String[] TEXTS_mr_IN = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* keylabel_to_alpha */ "\u0915\u0916\u0917",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -2781,6 +2802,41 @@
/* additional_morekeys_symbols_0 */ "0",
};
+ /* Locale my_MM: Burmese (Myanmar) */
+ private static final String[] TEXTS_my_MM = {
+ /* morekeys_a ~ */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
+ // Label for "switch to alphabetic" key.
+ // U+1000: "က" MYANMAR LETTER KA
+ // U+1001: "ခ" MYANMAR LETTER KHA
+ // U+1002: "ဂ" MYANMAR LETTER GA
+ /* keylabel_to_alpha */ "\u1000\u1001\u1002",
+ /* morekeys_n ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null,
+ /* ~ morekeys_nordic_row2_11 */
+ /* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
+ // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+ // U+104B: "။" MYANMAR SIGN SECTION
+ /* keyspec_tablet_comma */ "\u104A",
+ /* keyspec_period */ "\u104B",
+ /* morekeys_period */ null,
+ /* keyspec_tablet_period */ "\u104B",
+ /* keyspec_swiss_row1_11 ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null,
+ /* ~ keyspec_comma */
+ /* morekeys_tablet_comma */ "\\,",
+ /* keyhintlabel_period */ "\u104A",
+ /* morekeys_question ~ */
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ keyspec_south_slavic_row3_8 */
+ /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\",+,\\%,&",
+ };
+
/* Locale nb: Norwegian Bokmål */
private static final String[] TEXTS_nb = {
// U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
@@ -2815,7 +2871,7 @@
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
- /* keylabel_to_alpha ~ */
+ /* morekeys_i ~ */
null, null, null, null,
/* ~ morekeys_c */
/* double_quotes */ "!text/double_9qm_rqm",
@@ -2843,15 +2899,15 @@
/* Locale ne_NP: Nepali (Nepal) */
private static final String[] TEXTS_ne_NP = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0915: "क" DEVANAGARI LETTER KA
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0917: "ग" DEVANAGARI LETTER GA
/* keylabel_to_alpha */ "\u0915\u0916\u0917",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
/* keyspec_currency */ "\u0930\u0941.",
@@ -2935,7 +2991,6 @@
// U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -2944,6 +2999,7 @@
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -2987,7 +3043,7 @@
/* morekeys_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113",
/* morekeys_u ~ */
null, null, null,
- /* ~ morekeys_i */
+ /* ~ keylabel_to_alpha */
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u0144,\u00F1",
@@ -3048,7 +3104,6 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -3056,6 +3111,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
/* morekeys_n */ null,
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
@@ -3089,8 +3145,8 @@
// U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
/* morekeys_a */ "\u0103,\u00E2,\u00E3,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101",
/* morekeys_o ~ */
- null, null, null, null,
- /* ~ keylabel_to_alpha */
+ null, null, null,
+ /* ~ morekeys_u */
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -3098,8 +3154,9 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
- /* morekeys_n */ null,
- /* morekeys_c */ null,
+ /* keylabel_to_alpha ~ */
+ null, null, null,
+ /* ~ morekeys_c */
/* double_quotes */ "!text/double_9qm_rqm",
// U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
// U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -3117,16 +3174,15 @@
/* Locale ru: Russian */
private static final String[] TEXTS_ru = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_lqm",
@@ -3153,14 +3209,14 @@
/* Locale si_LK: Sinhalese (Sri Lanka) */
private static final String[] TEXTS_si_LK = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0D85: "අ" SINHALA LETTER AYANNA
// U+0D86: "ආ" SINHALA LETTER AAYANNA
/* keylabel_to_alpha */ "\u0D85,\u0D86",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+0DBB/U+0DD4: "රු" SINHALA LETTER RAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA
/* keyspec_currency */ "\u0DBB\u0DD4",
@@ -3205,7 +3261,6 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
/* morekeys_u */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
@@ -3214,6 +3269,7 @@
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
/* morekeys_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131",
+ /* keylabel_to_alpha */ null,
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
@@ -3289,17 +3345,16 @@
/* Locale sr: Serbian */
private static final String[] TEXTS_sr = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// END: More keys definitions for Serbian (Cyrillic)
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_lqm",
@@ -3356,9 +3411,9 @@
// U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
/* morekeys_e */ "\u00E8",
/* morekeys_u */ null,
- /* keylabel_to_alpha */ null,
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
/* morekeys_i */ "\u00EC",
+ /* keylabel_to_alpha */ null,
/* morekeys_n */ null,
// U+010D: "č" LATIN SMALL LETTER C WITH CARON
// U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
@@ -3424,12 +3479,12 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
/* morekeys_i */ "\u00ED,\u00EC,\u00EE,\u00EF",
+ /* keylabel_to_alpha */ null,
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
@@ -3518,13 +3573,13 @@
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
- /* keylabel_to_alpha */ null,
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
/* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u00F1",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
@@ -3541,15 +3596,15 @@
/* Locale ta_IN: Tamil (India) */
private static final String[] TEXTS_ta_IN = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0BA4: "த" TAMIL LETTER TA
// U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
// U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA
/* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+0BF9: "௹" TAMIL RUPEE SIGN
/* keyspec_currency */ "\u0BF9",
@@ -3558,15 +3613,15 @@
/* Locale ta_LK: Tamil (Sri Lanka) */
private static final String[] TEXTS_ta_LK = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0BA4: "த" TAMIL LETTER TA
// U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
// U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA
/* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+0DBB/U+0DD4: "රු" SINHALA LETTER RAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA
/* keyspec_currency */ "\u0DBB\u0DD4",
@@ -3575,8 +3630,8 @@
/* Locale ta_SG: Tamil (Singapore) */
private static final String[] TEXTS_ta_SG = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0BA4: "த" TAMIL LETTER TA
// U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
@@ -3587,15 +3642,15 @@
/* Locale te_IN: Telugu (India) */
private static final String[] TEXTS_te_IN = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0C05: "అ" TELUGU LETTER A
// U+0C06: "ఆ" TELUGU LETTER AA
// U+0C07: "ఇ" TELUGU LETTER I
/* keylabel_to_alpha */ "\u0C05\u0C06\u0C07",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+20B9: "₹" INDIAN RUPEE SIGN
/* keyspec_currency */ "\u20B9",
@@ -3604,15 +3659,15 @@
/* Locale th: Thai */
private static final String[] TEXTS_th = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0E01: "ก" THAI CHARACTER KO KAI
// U+0E02: "ข" THAI CHARACTER KHO KHAI
// U+0E04: "ค" THAI CHARACTER KHO KHWAI
/* keylabel_to_alpha */ "\u0E01\u0E02\u0E04",
- /* morekeys_i ~ */
- null, null, null, null, null, null,
+ /* morekeys_n ~ */
+ null, null, null, null, null,
/* ~ single_quotes */
// U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
/* keyspec_currency */ "\u0E3F",
@@ -3655,7 +3710,6 @@
// U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
@@ -3663,6 +3717,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
/* morekeys_n */ "\u00F1,\u0144",
@@ -3696,7 +3751,6 @@
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
- /* keylabel_to_alpha */ null,
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -3705,6 +3759,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u0148,\u00F1",
@@ -3734,16 +3789,15 @@
/* Locale uk: Ukrainian */
private static final String[] TEXTS_uk = {
/* morekeys_a ~ */
- null, null, null, null,
- /* ~ morekeys_u */
+ null, null, null, null, null,
+ /* ~ morekeys_i */
// Label for "switch to alphabetic" key.
// U+0410: "А" CYRILLIC CAPITAL LETTER A
// U+0411: "Б" CYRILLIC CAPITAL LETTER BE
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* keylabel_to_alpha */ "\u0410\u0411\u0412",
- /* morekeys_i ~ */
- null, null, null,
- /* ~ morekeys_c */
+ /* morekeys_n */ null,
+ /* morekeys_c */ null,
/* double_quotes */ "!text/double_9qm_lqm",
/* morekeys_s */ null,
/* single_quotes */ "!text/single_9qm_lqm",
@@ -3801,7 +3855,6 @@
// U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
- /* keylabel_to_alpha */ null,
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -3810,6 +3863,7 @@
// U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
/* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+ /* keylabel_to_alpha */ null,
// U+0148: "ň" LATIN SMALL LETTER N WITH CARON
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u0148,\u00F1",
@@ -3898,15 +3952,14 @@
// U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE
// U+1EF1: "ự" LATIN SMALL LETTER U WITH HORN AND DOT BELOW
/* morekeys_u */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1",
- /* keylabel_to_alpha */ null,
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE
// U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
// U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW
/* morekeys_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB",
- /* morekeys_n ~ */
- null, null, null, null, null,
+ /* keylabel_to_alpha ~ */
+ null, null, null, null, null, null,
/* ~ single_quotes */
// U+20AB: "₫" DONG SIGN
/* keyspec_currency */ "\u20AB",
@@ -3954,13 +4007,13 @@
// U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
// U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
/* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
- /* keylabel_to_alpha */ null,
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
// U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
// U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
/* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
/* morekeys_n */ "\u00F1",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
@@ -4017,7 +4070,6 @@
// U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
// U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
/* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173",
- /* keylabel_to_alpha */ null,
// U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
// U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
// U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
@@ -4029,6 +4081,7 @@
// U+0131: "ı" LATIN SMALL LETTER DOTLESS I
// U+0133: "ij" LATIN SMALL LIGATURE IJ
/* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133",
+ /* keylabel_to_alpha */ null,
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -4124,7 +4177,7 @@
"cs" , TEXTS_cs, /* 17/ 21 Czech */
"da" , TEXTS_da, /* 19/ 55 Danish */
"de" , TEXTS_de, /* 16/ 66 German */
- "el" , TEXTS_el, /* 1/ 5 Greek */
+ "el" , TEXTS_el, /* 1/ 6 Greek */
"en" , TEXTS_en, /* 8/ 10 English */
"eo" , TEXTS_eo, /* 26/126 Esperanto */
"es" , TEXTS_es, /* 8/ 56 Spanish */
@@ -4147,6 +4200,7 @@
"km_KH" , TEXTS_km_KH, /* 2/130 Khmer (Cambodia) */
"kn_IN" , TEXTS_kn_IN, /* 2/ 12 Kannada (India) */
"ky" , TEXTS_ky, /* 10/ 92 Kirghiz */
+ "lb" , TEXTS_lb, /* 11/ 20 Luxembourgish */
"lo_LA" , TEXTS_lo_LA, /* 2/ 12 Lao (Laos) */
"lt" , TEXTS_lt, /* 18/ 22 Lithuanian */
"lv" , TEXTS_lv, /* 18/ 22 Latvian */
@@ -4154,6 +4208,7 @@
"ml_IN" , TEXTS_ml_IN, /* 2/ 12 Malayalam (India) */
"mn_MN" , TEXTS_mn_MN, /* 2/ 12 Mongolian (Mongolia) */
"mr_IN" , TEXTS_mr_IN, /* 23/ 53 Marathi (India) */
+ "my_MM" , TEXTS_my_MM, /* 8/ 98 Burmese (Myanmar) */
"nb" , TEXTS_nb, /* 11/ 55 Norwegian Bokmål */
"ne_NP" , TEXTS_ne_NP, /* 27/ 60 Nepali (Nepal) */
"nl" , TEXTS_nl, /* 9/ 13 Dutch */
@@ -4171,7 +4226,7 @@
"sw" , TEXTS_sw, /* 9/ 18 Swahili */
"ta_IN" , TEXTS_ta_IN, /* 2/ 12 Tamil (India) */
"ta_LK" , TEXTS_ta_LK, /* 2/ 12 Tamil (Sri Lanka) */
- "ta_SG" , TEXTS_ta_SG, /* 1/ 5 Tamil (Singapore) */
+ "ta_SG" , TEXTS_ta_SG, /* 1/ 6 Tamil (Singapore) */
"te_IN" , TEXTS_te_IN, /* 2/ 12 Telugu (India) */
"th" , TEXTS_th, /* 2/ 12 Thai */
"tl" , TEXTS_tl, /* 7/ 8 Tagalog */
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 9a3ac67..3c329bb 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -76,7 +76,7 @@
private static final int FORMAT_WORD_PROPERTY_IS_NOT_A_WORD_INDEX = 0;
private static final int FORMAT_WORD_PROPERTY_IS_POSSIBLY_OFFENSIVE_INDEX = 1;
private static final int FORMAT_WORD_PROPERTY_HAS_NGRAMS_INDEX = 2;
- private static final int FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX = 3; // DEPRECATED
+ private static final int FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX = 3;
private static final int FORMAT_WORD_PROPERTY_IS_BEGINNING_OF_SENTENCE_INDEX = 4;
// Format to get probability and historical info from native side via getWordPropertyNative().
@@ -412,9 +412,11 @@
outFlags[FORMAT_WORD_PROPERTY_IS_NOT_A_WORD_INDEX],
outFlags[FORMAT_WORD_PROPERTY_IS_POSSIBLY_OFFENSIVE_INDEX],
outFlags[FORMAT_WORD_PROPERTY_HAS_NGRAMS_INDEX],
+ outFlags[FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX],
outFlags[FORMAT_WORD_PROPERTY_IS_BEGINNING_OF_SENTENCE_INDEX], outProbabilityInfo,
outNgramPrevWordsArray, outNgramPrevWordIsBeginningOfSentenceArray,
- outNgramTargets, outNgramProbabilityInfo);
+ outNgramTargets, outNgramProbabilityInfo, outShortcutTargets,
+ outShortcutProbabilities);
}
public static class GetNextWordPropertyResult {
@@ -442,16 +444,19 @@
}
// Add a unigram entry to binary dictionary with unigram attributes in native code.
- public boolean addUnigramEntry(
- final String word, final int probability, final boolean isBeginningOfSentence,
- final boolean isNotAWord, final boolean isPossiblyOffensive, final int timestamp) {
+ public boolean addUnigramEntry(final String word, final int probability,
+ final String shortcutTarget, final int shortcutProbability,
+ final boolean isBeginningOfSentence, final boolean isNotAWord,
+ final boolean isPossiblyOffensive, final int timestamp) {
if (word == null || (word.isEmpty() && !isBeginningOfSentence)) {
return false;
}
final int[] codePoints = StringUtils.toCodePointArray(word);
- if (!addUnigramEntryNative(mNativeDict, codePoints, probability,
- null /* shortcutTargetCodePoints */, 0 /* shortcutProbability */,
- isBeginningOfSentence, isNotAWord, isPossiblyOffensive, timestamp)) {
+ final int[] shortcutTargetCodePoints = (shortcutTarget != null) ?
+ StringUtils.toCodePointArray(shortcutTarget) : null;
+ if (!addUnigramEntryNative(mNativeDict, codePoints, probability, shortcutTargetCodePoints,
+ shortcutProbability, isBeginningOfSentence, isNotAWord, isPossiblyOffensive,
+ timestamp)) {
return false;
}
mHasUpdated = true;
diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
index dbd639f..732484c 100644
--- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
@@ -101,6 +101,8 @@
}
runGCIfRequiredLocked(true /* mindsBlockByGC */);
addUnigramLocked(word, ContactsDictionaryConstants.FREQUENCY_FOR_CONTACTS,
+ null /* shortcut */,
+ 0 /* shortcutFreq */,
false /* isNotAWord */, false /* isPossiblyOffensive */,
BinaryDictionary.NOT_A_VALID_TIMESTAMP);
}
@@ -151,8 +153,8 @@
Log.d(TAG, "addName " + name + ", " + word + ", " + ngramContext);
}
runGCIfRequiredLocked(true /* mindsBlockByGC */);
- addUnigramLocked(word,
- ContactsDictionaryConstants.FREQUENCY_FOR_CONTACTS, false /* isNotAWord */,
+ addUnigramLocked(word, ContactsDictionaryConstants.FREQUENCY_FOR_CONTACTS,
+ null /* shortcut */, 0 /* shortcutFreq */, false /* isNotAWord */,
false /* isPossiblyOffensive */,
BinaryDictionary.NOT_A_VALID_TIMESTAMP);
if (ngramContext.isValid() && mUseFirstLastBigrams) {
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 9070957..f9cc1c4 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -295,18 +295,21 @@
* Adds unigram information of a word to the dictionary. May overwrite an existing entry.
*/
public void addUnigramEntry(final String word, final int frequency,
- final boolean isNotAWord, final boolean isPossiblyOffensive, final int timestamp) {
+ final String shortcutTarget, final int shortcutFreq, final boolean isNotAWord,
+ final boolean isPossiblyOffensive, final int timestamp) {
updateDictionaryWithWriteLock(new Runnable() {
@Override
public void run() {
- addUnigramLocked(word, frequency, isNotAWord, isPossiblyOffensive, timestamp);
+ addUnigramLocked(word, frequency, shortcutTarget, shortcutFreq,
+ isNotAWord, isPossiblyOffensive, timestamp);
}
});
}
protected void addUnigramLocked(final String word, final int frequency,
- final boolean isNotAWord, final boolean isPossiblyOffensive, final int timestamp) {
- if (!mBinaryDictionary.addUnigramEntry(word, frequency,
+ final String shortcutTarget, final int shortcutFreq, final boolean isNotAWord,
+ final boolean isPossiblyOffensive, final int timestamp) {
+ if (!mBinaryDictionary.addUnigramEntry(word, frequency, shortcutTarget, shortcutFreq,
false /* isBeginningOfSentence */, isNotAWord, isPossiblyOffensive, timestamp)) {
Log.e(TAG, "Cannot add unigram entry. word: " + word);
}
diff --git a/java/src/com/android/inputmethod/latin/InputAttributes.java b/java/src/com/android/inputmethod/latin/InputAttributes.java
index 86c7810..5214c74 100644
--- a/java/src/com/android/inputmethod/latin/InputAttributes.java
+++ b/java/src/com/android/inputmethod/latin/InputAttributes.java
@@ -43,6 +43,7 @@
final public boolean mApplicationSpecifiedCompletionOn;
final public boolean mShouldInsertSpacesAutomatically;
final public boolean mShouldShowVoiceInputKey;
+ final public boolean mNoLearning;
/**
* Whether the floating gesture preview should be disabled. If true, this should override the
* corresponding keyboard settings preference, always suppressing the floating preview text.
@@ -86,6 +87,7 @@
mShouldShowVoiceInputKey = false;
mDisableGestureFloatingPreviewText = false;
mIsGeneralTextInput = false;
+ mNoLearning = false;
return;
}
// inputClass == InputType.TYPE_CLASS_TEXT
@@ -139,6 +141,8 @@
&& InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD != variation
&& InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS != variation
&& InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD != variation;
+
+ mNoLearning = (editorInfo.imeOptions & EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING) != 0;
}
public boolean isTypeNull() {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index e68b43b..3c89171 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -16,6 +16,8 @@
package com.android.inputmethod.latin;
+import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
+import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
import static com.android.inputmethod.latin.common.Constants.ImeOption.FORCE_ASCII;
import static com.android.inputmethod.latin.common.Constants.ImeOption.NO_MICROPHONE;
import static com.android.inputmethod.latin.common.Constants.ImeOption.NO_MICROPHONE_COMPAT;
@@ -31,7 +33,8 @@
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.content.res.Resources;
-import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
import android.inputmethodservice.InputMethodService;
import android.media.AudioManager;
import android.os.Build;
@@ -126,6 +129,8 @@
static final long DELAY_WAIT_FOR_DICTIONARY_LOAD_MILLIS = TimeUnit.SECONDS.toMillis(2);
static final long DELAY_DEALLOCATE_MEMORY_MILLIS = TimeUnit.SECONDS.toMillis(10);
+ private static final int MAX_SPACESLIDE_CHARS = 32;
+
/**
* A broadcast intent action to hide the software keyboard.
*/
@@ -1095,7 +1100,7 @@
@Override
public void onWindowShown() {
super.onWindowShown();
- setNavigationBarVisibility(isInputViewShown());
+ updateNavigationBarColor();
}
@Override
@@ -1105,7 +1110,6 @@
if (mainKeyboardView != null) {
mainKeyboardView.closing();
}
- setNavigationBarVisibility(false);
}
void onFinishInputInternal() {
@@ -1419,6 +1423,24 @@
return false;
}
+ @Override
+ public void onMovePointer(int steps) {
+ if (steps < 0) {
+ int availableCharacters =
+ getCurrentInputConnection().getTextBeforeCursor(MAX_SPACESLIDE_CHARS, 0).length();
+ steps = availableCharacters < -steps ? -availableCharacters : steps;
+ } else if (steps > 0) {
+ int availableCharacters =
+ getCurrentInputConnection().getTextAfterCursor(MAX_SPACESLIDE_CHARS, 0).length();
+ steps = availableCharacters < steps ? availableCharacters : steps;
+ } else {
+ return;
+ }
+
+ int newPosition = mInputLogic.mConnection.getExpectedSelectionStart() + steps;
+ getCurrentInputConnection().setSelection(newPosition, newPosition);
+ }
+
private boolean isShowingOptionDialog() {
return mOptionsDialog != null && mOptionsDialog.isShowing();
}
@@ -1869,7 +1891,7 @@
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intent.putExtra(SettingsActivity.EXTRA_SHOW_HOME_AS_UP, false);
+ intent.putExtra(SettingsActivity.EXTRA_SHOW_HOME_AS_UP, true);
intent.putExtra(SettingsActivity.EXTRA_ENTRY_KEY, extraEntryValue);
startActivityOnTheSameDisplay(intent);
}
@@ -2022,12 +2044,26 @@
return mRichImm.shouldOfferSwitchingToNextInputMethod(token, fallbackValue);
}
- private void setNavigationBarVisibility(final boolean visible) {
- if (BuildCompatUtils.EFFECTIVE_SDK_INT > Build.VERSION_CODES.M) {
- // For N and later, IMEs can specify Color.TRANSPARENT to make the navigation bar
- // transparent. For other colors the system uses the default color.
- getWindow().getWindow().setNavigationBarColor(
- visible ? Color.BLACK : Color.TRANSPARENT);
+ /** @noinspection deprecation*/
+ private void updateNavigationBarColor() {
+ // This may happen for devices with a physical keyboard
+ if (mInputView == null)
+ return;
+
+ if (BuildCompatUtils.EFFECTIVE_SDK_INT > Build.VERSION_CODES.R) {
+ Drawable bg = mInputView.findViewById(R.id.keyboard_view).getBackground();
+ Window w = getWindow().getWindow();
+ if (bg instanceof ColorDrawable) {
+ w.setNavigationBarColor(((ColorDrawable) bg).getColor());
+ }
+
+ int nightModeFlags = mDisplayContext.getResources().getConfiguration().uiMode &
+ Configuration.UI_MODE_NIGHT_MASK;
+ int flags = FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+ if (nightModeFlags != Configuration.UI_MODE_NIGHT_YES) {
+ flags |= APPEARANCE_LIGHT_NAVIGATION_BARS;
+ }
+ w.getDecorView().setSystemUiVisibility(flags);
}
}
}
diff --git a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
index fe24ccf..1ed2103 100644
--- a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
@@ -22,6 +22,7 @@
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
+import android.os.Build;
import android.provider.UserDictionary.Words;
import android.text.TextUtils;
import android.util.Log;
@@ -46,8 +47,19 @@
private static final String USER_DICTIONARY_ALL_LANGUAGES = "";
private static final int HISTORICAL_DEFAULT_USER_DICTIONARY_FREQUENCY = 250;
private static final int LATINIME_DEFAULT_USER_DICTIONARY_FREQUENCY = 160;
+ // Shortcut frequency is 0~15, with 15 = whitelist. We don't want user dictionary entries
+ // to auto-correct, so we set this to the highest frequency that won't, i.e. 14.
+ private static final int USER_DICT_SHORTCUT_FREQUENCY = 14;
- private static final String[] PROJECTION_QUERY = new String[] {Words.WORD, Words.FREQUENCY};
+ private static final String[] PROJECTION_QUERY_WITH_SHORTCUT = new String[] {
+ Words.WORD,
+ Words.SHORTCUT,
+ Words.FREQUENCY,
+ };
+ private static final String[] PROJECTION_QUERY_WITHOUT_SHORTCUT = new String[] {
+ Words.WORD,
+ Words.FREQUENCY,
+ };
private static final String NAME = "userunigram";
@@ -159,7 +171,20 @@
requestArguments = localeElements;
}
final String requestString = request.toString();
- addWordsFromProjectionLocked(PROJECTION_QUERY, requestString, requestArguments);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ try {
+ addWordsFromProjectionLocked(PROJECTION_QUERY_WITH_SHORTCUT, requestString,
+ requestArguments);
+ } catch (IllegalArgumentException e) {
+ // This may happen on some non-compliant devices where the declared API is JB+ but
+ // the SHORTCUT column is not present for some reason.
+ addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+ requestArguments);
+ }
+ } else {
+ addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+ requestArguments);
+ }
}
private void addWordsFromProjectionLocked(final String[] query, String request,
@@ -194,20 +219,31 @@
}
private void addWordsLocked(final Cursor cursor) {
+ final boolean hasShortcutColumn = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
if (cursor == null) return;
if (cursor.moveToFirst()) {
final int indexWord = cursor.getColumnIndex(Words.WORD);
+ final int indexShortcut = hasShortcutColumn ? cursor.getColumnIndex(Words.SHORTCUT) : 0;
final int indexFrequency = cursor.getColumnIndex(Words.FREQUENCY);
while (!cursor.isAfterLast()) {
final String word = cursor.getString(indexWord);
+ final String shortcut = hasShortcutColumn ? cursor.getString(indexShortcut) : null;
final int frequency = cursor.getInt(indexFrequency);
final int adjustedFrequency = scaleFrequencyFromDefaultToLatinIme(frequency);
// Safeguard against adding really long words.
if (word.length() <= MAX_WORD_LENGTH) {
runGCIfRequiredLocked(true /* mindsBlockByGC */);
- addUnigramLocked(word, adjustedFrequency, false /* isNotAWord */,
+ addUnigramLocked(word, adjustedFrequency, null /* shortcutTarget */,
+ 0 /* shortcutFreq */, false /* isNotAWord */,
false /* isPossiblyOffensive */,
BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+ if (null != shortcut && shortcut.length() <= MAX_WORD_LENGTH) {
+ runGCIfRequiredLocked(true /* mindsBlockByGC */);
+ addUnigramLocked(shortcut, adjustedFrequency, word,
+ USER_DICT_SHORTCUT_FREQUENCY, true /* isNotAWord */,
+ false /* isPossiblyOffensive */,
+ BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+ }
}
cursor.moveToNext();
}
diff --git a/java/src/com/android/inputmethod/latin/define/JniLibName.java b/java/src/com/android/inputmethod/latin/define/JniLibName.java
index abfc36d..83ed5eb 100644
--- a/java/src/com/android/inputmethod/latin/define/JniLibName.java
+++ b/java/src/com/android/inputmethod/latin/define/JniLibName.java
@@ -22,4 +22,5 @@
}
public static final String JNI_LIB_NAME = "jni_latinime";
+ public static final String JNI_LIB_NAME2 = "jni_latinimegoogle";
}
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index a7804a1..b8c21cf 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -189,10 +189,22 @@
// the useless IPC of {begin,end}BatchEdit.
if (mWordComposer.isComposingWord()) {
mConnection.beginBatchEdit();
+
+ final CharSequence textBeforeCursor =
+ mConnection.getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE, 0);
+ final CharSequence textAfterCursor =
+ mConnection.getTextAfterCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE, 0);
+ final String text = String.valueOf(textBeforeCursor) + String.valueOf(textAfterCursor);
+ final String typedWord = mWordComposer.getTypedWord();
+ if (textBeforeCursor != null && !text.contains(typedWord)) {
+ mWordComposer.reset();
+ }
+
// If we had a composition in progress, we need to commit the word so that the
// suggestionsSpan will be added. This will allow resuming on the same suggestions
// after rotation is finished.
commitTyped(settingsValues, LastComposedWord.NOT_A_SEPARATOR);
+ mConnection.finishComposingText();
mConnection.endBatchEdit();
}
}
diff --git a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
index 264e757..388d578 100644
--- a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
+++ b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
@@ -37,11 +37,13 @@
public final class WordProperty implements Comparable<WordProperty> {
public final String mWord;
public final ProbabilityInfo mProbabilityInfo;
+ public final ArrayList<WeightedString> mShortcutTargets;
public final ArrayList<NgramProperty> mNgrams;
// TODO: Support mIsBeginningOfSentence.
public final boolean mIsBeginningOfSentence;
public final boolean mIsNotAWord;
public final boolean mIsPossiblyOffensive;
+ public final boolean mHasShortcuts;
public final boolean mHasNgrams;
private int mHashCode = 0;
@@ -49,10 +51,12 @@
// TODO: Support n-gram.
@UsedForTesting
public WordProperty(final String word, final ProbabilityInfo probabilityInfo,
+ final ArrayList<WeightedString> shortcutTargets,
@Nullable final ArrayList<WeightedString> bigrams,
final boolean isNotAWord, final boolean isPossiblyOffensive) {
mWord = word;
mProbabilityInfo = probabilityInfo;
+ mShortcutTargets = shortcutTargets;
if (null == bigrams) {
mNgrams = null;
} else {
@@ -66,6 +70,7 @@
mIsNotAWord = isNotAWord;
mIsPossiblyOffensive = isPossiblyOffensive;
mHasNgrams = bigrams != null && !bigrams.isEmpty();
+ mHasShortcuts = shortcutTargets != null && !shortcutTargets.isEmpty();
}
private static ProbabilityInfo createProbabilityInfoFromArray(final int[] probabilityInfo) {
@@ -79,17 +84,21 @@
// Construct word property using information from native code.
// This represents invalid word when the probability is BinaryDictionary.NOT_A_PROBABILITY.
public WordProperty(final int[] codePoints, final boolean isNotAWord,
- final boolean isPossiblyOffensive, final boolean hasBigram,
+ final boolean isPossiblyOffensive, final boolean hasBigram, final boolean hasShortcuts,
final boolean isBeginningOfSentence, final int[] probabilityInfo,
final ArrayList<int[][]> ngramPrevWordsArray,
final ArrayList<boolean[]> ngramPrevWordIsBeginningOfSentenceArray,
- final ArrayList<int[]> ngramTargets, final ArrayList<int[]> ngramProbabilityInfo) {
+ final ArrayList<int[]> ngramTargets, final ArrayList<int[]> ngramProbabilityInfo,
+ final ArrayList<int[]> shortcutTargets,
+ final ArrayList<Integer> shortcutProbabilities) {
mWord = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints);
mProbabilityInfo = createProbabilityInfoFromArray(probabilityInfo);
+ mShortcutTargets = new ArrayList<>();
final ArrayList<NgramProperty> ngrams = new ArrayList<>();
mIsBeginningOfSentence = isBeginningOfSentence;
mIsNotAWord = isNotAWord;
mIsPossiblyOffensive = isPossiblyOffensive;
+ mHasShortcuts = hasShortcuts;
mHasNgrams = hasBigram;
final int relatedNgramCount = ngramTargets.size();
@@ -112,6 +121,14 @@
ngrams.add(new NgramProperty(ngramTarget, ngramContext));
}
mNgrams = ngrams.isEmpty() ? null : ngrams;
+
+ final int shortcutTargetCount = shortcutTargets.size();
+ for (int i = 0; i < shortcutTargetCount; i++) {
+ final String shortcutTargetString =
+ StringUtils.getStringFromNullTerminatedCodePointArray(shortcutTargets.get(i));
+ mShortcutTargets.add(
+ new WeightedString(shortcutTargetString, shortcutProbabilities.get(i)));
+ }
}
// TODO: Remove
@@ -137,6 +154,7 @@
return Arrays.hashCode(new Object[] {
word.mWord,
word.mProbabilityInfo,
+ word.mShortcutTargets,
word.mNgrams,
word.mIsNotAWord,
word.mIsPossiblyOffensive
@@ -167,10 +185,10 @@
if (o == this) return true;
if (!(o instanceof WordProperty)) return false;
WordProperty w = (WordProperty)o;
- return mProbabilityInfo.equals(w.mProbabilityInfo)
- && mWord.equals(w.mWord) && equals(mNgrams, w.mNgrams)
+ return mProbabilityInfo.equals(w.mProbabilityInfo) && mWord.equals(w.mWord)
+ && mShortcutTargets.equals(w.mShortcutTargets) && equals(mNgrams, w.mNgrams)
&& mIsNotAWord == w.mIsNotAWord && mIsPossiblyOffensive == w.mIsPossiblyOffensive
- && mHasNgrams == w.mHasNgrams;
+ && mHasNgrams == w.mHasNgrams && mHasShortcuts && w.mHasNgrams;
}
// TDOO: Have a utility method like java.util.Objects.equals.
diff --git a/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java
index a6fb7f1..bddb864 100644
--- a/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/AdvancedSettingsFragment.java
@@ -29,6 +29,8 @@
import com.android.inputmethod.latin.SystemBroadcastReceiver;
import com.android.inputmethod.latin.define.ProductionFlags;
+import java.util.Locale;
+
/**
* "Advanced" settings sub screen.
*
@@ -41,6 +43,7 @@
* - Debug settings
*/
public final class AdvancedSettingsFragment extends SubScreenFragment {
+ public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale";
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
@@ -91,6 +94,8 @@
setupKeypressVibrationDurationSettings();
setupKeypressSoundVolumeSettings();
setupKeyLongpressTimeoutSettings();
+ setupKeyboardHeight(
+ Settings.PREF_KEYBOARD_HEIGHT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE);
refreshEnablingsOfKeypressSoundAndVibrationSettings();
}
@@ -261,4 +266,49 @@
public void feedbackValue(final int value) {}
});
}
+ private void setupKeyboardHeight(final String prefKey, final float defaultValue) {
+ final SharedPreferences prefs = getSharedPreferences();
+ final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey);
+ if (pref == null) {
+ return;
+ }
+ pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
+ private static final float PERCENTAGE_FLOAT = 100.0f;
+ private float getValueFromPercentage(final int percentage) {
+ return percentage / PERCENTAGE_FLOAT;
+ }
+
+ private int getPercentageFromValue(final float floatValue) {
+ return (int)(floatValue * PERCENTAGE_FLOAT);
+ }
+
+ @Override
+ public void writeValue(final int value, final String key) {
+ prefs.edit().putFloat(key, getValueFromPercentage(value)).apply();
+ }
+
+ @Override
+ public void writeDefaultValue(final String key) {
+ prefs.edit().remove(key).apply();
+ }
+
+ @Override
+ public int readValue(final String key) {
+ return getPercentageFromValue(Settings.readKeyboardHeight(prefs, defaultValue));
+ }
+
+ @Override
+ public int readDefaultValue(final String key) {
+ return getPercentageFromValue(defaultValue);
+ }
+
+ @Override
+ public String getValueText(final int value) {
+ return String.format(Locale.ROOT, "%d%%", value);
+ }
+
+ @Override
+ public void feedbackValue(final int value) {}
+ });
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java
index 56e8f16..6be766c 100644
--- a/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/CustomInputStyleSettingsFragment.java
@@ -24,7 +24,6 @@
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.Preference;
-import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import androidx.core.view.ViewCompat;
import android.text.TextUtils;
@@ -47,7 +46,7 @@
import java.util.ArrayList;
-public final class CustomInputStyleSettingsFragment extends PreferenceFragment
+public final class CustomInputStyleSettingsFragment extends CustomPreferenceFragment
implements CustomInputStylePreference.Listener {
private static final String TAG = CustomInputStyleSettingsFragment.class.getSimpleName();
// Note: We would like to turn this debug flag true in order to see what input styles are
@@ -173,7 +172,8 @@
return;
}
if (findDuplicatedSubtype(subtype) == null) {
- mRichImm.setAdditionalInputMethodSubtypes(getSubtypes());
+ final InputMethodSubtype[] subTypes = saveAndGetSubTypes();
+ mRichImm.setAdditionalInputMethodSubtypes(subTypes);
return;
}
@@ -190,7 +190,8 @@
mIsAddingNewSubtype = false;
final InputMethodSubtype subtype = stylePref.getSubtype();
if (findDuplicatedSubtype(subtype) == null) {
- mRichImm.setAdditionalInputMethodSubtypes(getSubtypes());
+ final InputMethodSubtype[] subTypes = saveAndGetSubTypes();
+ mRichImm.setAdditionalInputMethodSubtypes(subTypes);
mSubtypePreferenceKeyForSubtypeEnabler = stylePref.getKey();
mSubtypeEnablerNotificationDialog = createDialog();
mSubtypeEnablerNotificationDialog.show();
@@ -284,16 +285,7 @@
@Override
public void onPause() {
super.onPause();
- final String oldSubtypes = Settings.readPrefAdditionalSubtypes(mPrefs, getResources());
- final InputMethodSubtype[] subtypes = getSubtypes();
- final String prefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(subtypes);
- if (DEBUG_CUSTOM_INPUT_STYLES) {
- Log.i(TAG, "Save custom input styles: " + prefSubtypes);
- }
- if (prefSubtypes.equals(oldSubtypes)) {
- return;
- }
- Settings.writePrefAdditionalSubtypes(mPrefs, prefSubtypes);
+ final InputMethodSubtype[] subtypes = saveAndGetSubTypes();
mRichImm.setAdditionalInputMethodSubtypes(subtypes);
}
@@ -315,4 +307,18 @@
}
return super.onOptionsItemSelected(item);
}
+
+ private InputMethodSubtype[] saveAndGetSubTypes() {
+ final String oldSubtypes = Settings.readPrefAdditionalSubtypes(mPrefs, getResources());
+ final InputMethodSubtype[] subtypes = getSubtypes();
+ final String prefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(subtypes);
+ if (DEBUG_CUSTOM_INPUT_STYLES) {
+ Log.i(TAG, "Save custom input styles: " + prefSubtypes);
+ }
+ if (prefSubtypes.equals(oldSubtypes)) {
+ return null;
+ }
+ Settings.writePrefAdditionalSubtypes(mPrefs, prefSubtypes);
+ return subtypes;
+ }
}
diff --git a/java/src/com/android/inputmethod/latin/settings/CustomPreferenceFragment.java b/java/src/com/android/inputmethod/latin/settings/CustomPreferenceFragment.java
new file mode 100644
index 0000000..d791b53
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/settings/CustomPreferenceFragment.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2020 The LineageOS 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 com.android.inputmethod.latin.settings;
+
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+import android.view.View;
+import android.widget.ListView;
+
+/**
+ * A base abstract class for a {@link PreferenceFragment} that removes divider lines
+ */
+public abstract class CustomPreferenceFragment extends PreferenceFragment {
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ // remove dividers
+ View rootView = getView();
+ ListView list = (ListView) rootView.findViewById(android.R.id.list);
+ list.setDivider(null);
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
index 6fffb8e..4985c2f 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
@@ -29,8 +29,6 @@
public static final String PREF_FORCE_NON_DISTINCT_MULTITOUCH = "force_non_distinct_multitouch";
public static final String PREF_HAS_CUSTOM_KEY_PREVIEW_ANIMATION_PARAMS =
"pref_has_custom_key_preview_animation_params";
- public static final String PREF_RESIZE_KEYBOARD = "pref_resize_keyboard";
- public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale";
public static final String PREF_KEY_PREVIEW_DISMISS_DURATION =
"pref_key_preview_dismiss_duration";
public static final String PREF_KEY_PREVIEW_DISMISS_END_X_SCALE =
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java
index 3785537..e754f32 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettingsFragment.java
@@ -81,8 +81,6 @@
defaultKeyPreviewDismissEndScale);
setupKeyPreviewAnimationScale(DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_Y_SCALE,
defaultKeyPreviewDismissEndScale);
- setupKeyboardHeight(
- DebugSettings.PREF_KEYBOARD_HEIGHT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE);
mServiceNeedsRestart = false;
mDebugMode = (TwoStatePreference) findPreference(DebugSettings.PREF_DEBUG_MODE);
@@ -240,49 +238,4 @@
});
}
- private void setupKeyboardHeight(final String prefKey, final float defaultValue) {
- final SharedPreferences prefs = getSharedPreferences();
- final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey);
- if (pref == null) {
- return;
- }
- pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
- private static final float PERCENTAGE_FLOAT = 100.0f;
- private float getValueFromPercentage(final int percentage) {
- return percentage / PERCENTAGE_FLOAT;
- }
-
- private int getPercentageFromValue(final float floatValue) {
- return (int)(floatValue * PERCENTAGE_FLOAT);
- }
-
- @Override
- public void writeValue(final int value, final String key) {
- prefs.edit().putFloat(key, getValueFromPercentage(value)).apply();
- }
-
- @Override
- public void writeDefaultValue(final String key) {
- prefs.edit().remove(key).apply();
- }
-
- @Override
- public int readValue(final String key) {
- return getPercentageFromValue(Settings.readKeyboardHeight(prefs, defaultValue));
- }
-
- @Override
- public int readDefaultValue(final String key) {
- return getPercentageFromValue(defaultValue);
- }
-
- @Override
- public String getValueText(final int value) {
- return String.format(Locale.ROOT, "%d%%", value);
- }
-
- @Override
- public void feedbackValue(final int value) {}
- });
- }
}
diff --git a/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java b/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java
index 5c416ab..0fd94b0 100644
--- a/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java
+++ b/java/src/com/android/inputmethod/latin/settings/LocalSettingsConstants.java
@@ -47,14 +47,12 @@
DebugSettings.PREF_DEBUG_MODE,
DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH,
DebugSettings.PREF_HAS_CUSTOM_KEY_PREVIEW_ANIMATION_PARAMS,
- DebugSettings.PREF_KEYBOARD_HEIGHT_SCALE,
DebugSettings.PREF_KEY_PREVIEW_DISMISS_DURATION,
DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_X_SCALE,
DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_Y_SCALE,
DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_DURATION,
DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_START_X_SCALE,
DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_START_Y_SCALE,
- DebugSettings.PREF_RESIZE_KEYBOARD,
DebugSettings.PREF_SHOULD_SHOW_LXX_SUGGESTION_UI,
DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW
};
diff --git a/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java
index d9858e6..aba14ee 100644
--- a/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/PreferencesSettingsFragment.java
@@ -56,6 +56,11 @@
// initialization method of these classes here. See {@link LatinIME#onCreate()}.
RichInputMethodManager.init(context);
+ final boolean showEmojiKeyOption = res.getBoolean(
+ R.bool.config_enable_show_emoji_key_option);
+ if (!showEmojiKeyOption) {
+ removePreference(Settings.PREF_SHOW_EMOJI_KEY);
+ }
final boolean showVoiceKeyOption = res.getBoolean(
R.bool.config_enable_show_voice_key_option);
if (!showVoiceKeyOption) {
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index 940f1bd..803153e 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -31,6 +31,7 @@
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.common.StringUtils;
import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
+import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethod.latin.utils.ResourceUtils;
import com.android.inputmethod.latin.utils.RunInLocale;
import com.android.inputmethod.latin.utils.StatsUtils;
@@ -48,6 +49,7 @@
public static final String SCREEN_ACCOUNTS = "screen_accounts";
public static final String SCREEN_THEME = "screen_theme";
public static final String SCREEN_DEBUG = "screen_debug";
+ public static final String SCREEN_GESTURE = "screen_gesture";
// In the same order as xml/prefs.xml
public static final String PREF_AUTO_CAP = "auto_cap";
public static final String PREF_VIBRATE_ON = "vibrate_on";
@@ -77,6 +79,7 @@
BuildCompatUtils.EFFECTIVE_SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
public static final String PREF_SHOW_LANGUAGE_SWITCH_KEY =
"pref_show_language_switch_key";
+ public static final String PREF_SHOW_EMOJI_KEY = "pref_show_emoji_key";
public static final String PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST =
"pref_include_other_imes_in_language_switch_list";
public static final String PREF_CUSTOM_INPUT_STYLES = "custom_input_styles";
@@ -100,6 +103,9 @@
public static final String PREF_KEY_IS_INTERNAL = "pref_key_is_internal";
public static final String PREF_ENABLE_METRICS_LOGGING = "pref_enable_metrics_logging";
+ public static final String PREF_SHOW_NUMBER_ROW = "pref_show_number_row";
+
+ public static final String PREF_SHOW_LONGPRESS_HINTS = "pref_show_longpress_hints";
// This preference key is deprecated. Use {@link #PREF_SHOW_LANGUAGE_SWITCH_KEY} instead.
// This is being used only for the backward compatibility.
private static final String PREF_SUPPRESS_LANGUAGE_SWITCH_KEY =
@@ -112,6 +118,12 @@
private static final String PREF_CORPUS_HANDLES_FOR_PERSONALIZATION =
"pref_corpus_handles_for_personalization";
+ // Keyboard height (moved from debug settings)
+ public static final String PREF_KEYBOARD_HEIGHT_SCALE = "pref_keyboard_height_scale";
+
+ // Space bar trackpad slider
+ public static final String PREF_SPACE_TRACKPAD = "pref_space_trackpad";
+
// Emoji
public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys";
public static final String PREF_EMOJI_CATEGORY_LAST_TYPED_ID = "emoji_category_last_typed_id";
@@ -230,6 +242,9 @@
}
public static boolean readFromBuildConfigIfGestureInputEnabled(final Resources res) {
+ if (!JniUtils.sHaveGestureLib) {
+ return false;
+ }
return res.getBoolean(R.bool.config_gesture_input_enabled_by_build_config);
}
@@ -342,13 +357,21 @@
return (milliseconds != UNDEFINED_PREFERENCE_VALUE_INT) ? milliseconds : defaultValue;
}
+ public static boolean readShowNumberRow(final SharedPreferences prefs) {
+ return prefs.getBoolean(PREF_SHOW_NUMBER_ROW, false);
+ }
+
public static float readKeyboardHeight(final SharedPreferences prefs,
final float defaultValue) {
final float percentage = prefs.getFloat(
- DebugSettings.PREF_KEYBOARD_HEIGHT_SCALE, UNDEFINED_PREFERENCE_VALUE_FLOAT);
+ PREF_KEYBOARD_HEIGHT_SCALE, UNDEFINED_PREFERENCE_VALUE_FLOAT);
return (percentage != UNDEFINED_PREFERENCE_VALUE_FLOAT) ? percentage : defaultValue;
}
+ public static boolean readSpaceTrackpadEnabled(final SharedPreferences prefs) {
+ return prefs.getBoolean(PREF_SPACE_TRACKPAD, true);
+ }
+
public static boolean readUseFullscreenMode(final Resources res) {
return res.getBoolean(R.bool.config_use_fullscreen_mode);
}
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
index ac16577..43467a0 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsActivity.java
@@ -59,7 +59,7 @@
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
if (mShowHomeAsUp && item.getItemId() == android.R.id.home) {
- finish();
+ onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
index 874f221..3690219 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
@@ -26,11 +26,14 @@
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import android.view.View;
+import android.widget.ListView;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.define.ProductionFlags;
import com.android.inputmethod.latin.utils.ApplicationUtils;
import com.android.inputmethod.latin.utils.FeedbackUtils;
+import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethodcommon.InputMethodSettingsFragment;
public final class SettingsFragment extends InputMethodSettingsFragment {
@@ -47,6 +50,7 @@
setHasOptionsMenu(true);
setInputMethodSettingsCategoryTitle(R.string.language_selection_title);
setSubtypeEnablerTitle(R.string.select_language);
+ setSubtypeEnablerIcon(R.drawable.ic_settings_languages);
addPreferencesFromResource(R.xml.prefs);
final PreferenceScreen preferenceScreen = getPreferenceScreen();
preferenceScreen.setTitle(
@@ -55,6 +59,20 @@
final Preference accountsPreference = findPreference(Settings.SCREEN_ACCOUNTS);
preferenceScreen.removePreference(accountsPreference);
}
+ if (!JniUtils.sHaveGestureLib) {
+ final Preference gesturePreference = findPreference(Settings.SCREEN_GESTURE);
+ preferenceScreen.removePreference(gesturePreference);
+ }
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ // remove dividers
+ View rootView = getView();
+ ListView list = (ListView) rootView.findViewById(android.R.id.list);
+ list.setDivider(null);
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index 5701824..6eb8e98 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -67,12 +67,16 @@
public final boolean mSoundOn;
public final boolean mKeyPreviewPopupOn;
public final boolean mShowsVoiceInputKey;
+ public final boolean mShowNumberRow;
+ public final boolean mShowLongpressHints;
public final boolean mIncludesOtherImesInLanguageSwitchList;
public final boolean mShowsLanguageSwitchKey;
+ public final boolean mShowsEmojiKey;
public final boolean mUseContactsDict;
public final boolean mUsePersonalizedDicts;
public final boolean mUseDoubleSpacePeriod;
public final boolean mBlockPotentiallyOffensive;
+ public final boolean mSpaceTrackpadEnabled;
// Use bigrams to predict the next word when there is no input for it yet
public final boolean mBigramPredictionEnabled;
public final boolean mGestureInputEnabled;
@@ -108,7 +112,6 @@
// Debug settings
public final boolean mIsInternal;
public final boolean mHasCustomKeyPreviewAnimationParams;
- public final boolean mHasKeyboardResize;
public final float mKeyboardHeightScale;
public final int mKeyPreviewShowUpDuration;
public final int mKeyPreviewDismissDuration;
@@ -140,11 +143,14 @@
mShowsVoiceInputKey = needsToShowVoiceInputKey(prefs, res)
&& mInputAttributes.mShouldShowVoiceInputKey
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
+ mShowNumberRow = prefs.getBoolean(Settings.PREF_SHOW_NUMBER_ROW, false);
+ mShowLongpressHints = prefs.getBoolean(Settings.PREF_SHOW_LONGPRESS_HINTS, true);
mIncludesOtherImesInLanguageSwitchList = Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS
? prefs.getBoolean(Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, false)
: true /* forcibly */;
mShowsLanguageSwitchKey = Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS
? Settings.readShowsLanguageSwitchKey(prefs) : true /* forcibly */;
+ mShowsEmojiKey = prefs.getBoolean(Settings.PREF_SHOW_EMOJI_KEY, false);
mUseContactsDict = prefs.getBoolean(Settings.PREF_KEY_USE_CONTACTS_DICT, true);
mUsePersonalizedDicts = prefs.getBoolean(Settings.PREF_KEY_USE_PERSONALIZED_DICTS, true);
mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true)
@@ -184,11 +190,11 @@
&& prefs.getBoolean(Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT, true);
mAutoCorrectionEnabledPerUserSettings = mAutoCorrectEnabled
&& !mInputAttributes.mInputTypeNoAutoCorrect;
- mSuggestionsEnabledPerUserSettings = readSuggestionsEnabled(prefs);
+ mSuggestionsEnabledPerUserSettings = !mInputAttributes.mNoLearning &&
+ readSuggestionsEnabled(prefs);
mIsInternal = Settings.isInternal(prefs);
mHasCustomKeyPreviewAnimationParams = prefs.getBoolean(
DebugSettings.PREF_HAS_CUSTOM_KEY_PREVIEW_ANIMATION_PARAMS, false);
- mHasKeyboardResize = prefs.getBoolean(DebugSettings.PREF_RESIZE_KEYBOARD, false);
mKeyboardHeightScale = Settings.readKeyboardHeight(prefs, DEFAULT_SIZE_SCALE);
mKeyPreviewShowUpDuration = Settings.readKeyPreviewAnimationDuration(
prefs, DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_DURATION,
@@ -222,6 +228,7 @@
new TargetPackageInfoGetterTask(context, mAppWorkarounds)
.execute(mInputAttributes.mTargetApplicationPackageName);
}
+ mSpaceTrackpadEnabled = Settings.readSpaceTrackpadEnabled(prefs);
}
public boolean isMetricsLoggingEnabled() {
diff --git a/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java b/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java
index 5994a76..3194ba0 100644
--- a/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SubScreenFragment.java
@@ -24,7 +24,6 @@
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
-import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.util.Log;
@@ -32,7 +31,7 @@
* A base abstract class for a {@link PreferenceFragment} that implements a nested
* {@link PreferenceScreen} of the main preference screen.
*/
-public abstract class SubScreenFragment extends PreferenceFragment
+public abstract class SubScreenFragment extends CustomPreferenceFragment
implements OnSharedPreferenceChangeListener {
private OnSharedPreferenceChangeListener mSharedPreferenceChangeListener;
@@ -98,6 +97,11 @@
}
@Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ }
+
+ @Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
diff --git a/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java
index 29289ae..437209b 100644
--- a/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/ThemeSettingsFragment.java
@@ -46,11 +46,11 @@
static void updateKeyboardThemeSummary(final Preference pref) {
final Context context = pref.getContext();
final Resources res = context.getResources();
- final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(context);
+ final int keyboardThemeId = KeyboardTheme.getSelectedKeyboardThemeId(context);
final String[] keyboardThemeNames = res.getStringArray(R.array.keyboard_theme_names);
final int[] keyboardThemeIds = res.getIntArray(R.array.keyboard_theme_ids);
for (int index = 0; index < keyboardThemeNames.length; index++) {
- if (keyboardTheme.mThemeId == keyboardThemeIds[index]) {
+ if (keyboardThemeId == keyboardThemeIds[index]) {
pref.setSummary(keyboardThemeNames[index]);
return;
}
@@ -72,8 +72,7 @@
screen.addPreference(pref);
pref.setOnRadioButtonClickedListener(this);
}
- final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(context);
- mSelectedThemeId = keyboardTheme.mThemeId;
+ mSelectedThemeId = KeyboardTheme.getSelectedKeyboardThemeId(context);
}
@Override
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index 4625e8e..9e51ef8 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -119,6 +119,10 @@
return "greek";
case ScriptUtils.SCRIPT_HEBREW:
return "hebrew";
+ case ScriptUtils.SCRIPT_BULGARIAN:
+ return "bulgarian";
+ case ScriptUtils.SCRIPT_GEORGIAN:
+ return "georgian";
default:
throw new RuntimeException("Wrong script supplied: " + script);
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index 9223923..00bf9a1 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -237,16 +237,23 @@
// Handle special patterns like email, URI, telephone number.
final int checkability = getCheckabilityInScript(text, mScript);
if (CHECKABILITY_CHECKABLE != checkability) {
+ // CHECKABILITY_CONTAINS_PERIOD typo should not be reported when text
+ // is a valid word followed by a single period (end of sentence).
+ boolean periodOnlyAtLastIndex = text.indexOf(
+ Constants.CODE_PERIOD) == (text.length() - 1);
if (CHECKABILITY_CONTAINS_PERIOD == checkability) {
final String[] splitText = text.split(Constants.REGEXP_PERIOD);
boolean allWordsAreValid = true;
+ // Validate all words on both sides of periods,
+ // skip empty tokens due to periods at first/last index
for (final String word : splitText) {
- if (!mService.isValidWord(mLocale, word)) {
+ if (!word.isEmpty() && !mService.isValidWord(mLocale, word) &&
+ !mService.isValidWord(mLocale, word.toLowerCase(mLocale))) {
allWordsAreValid = false;
break;
}
}
- if (allWordsAreValid) {
+ if (allWordsAreValid && !periodOnlyAtLastIndex) {
return new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
| SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS,
new String[] {
@@ -256,7 +263,7 @@
return mService.isValidWord(mLocale, text) ?
AndroidSpellCheckerService.getInDictEmptySuggestions() :
AndroidSpellCheckerService.getNotInDictEmptySuggestions(
- CHECKABILITY_CONTAINS_PERIOD == checkability /* reportAsTypo */);
+ !periodOnlyAtLastIndex);
}
// Handle normal words.
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
index f7940e3..8efa85f 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
@@ -22,7 +22,6 @@
import android.database.Cursor;
import android.os.Bundle;
import android.preference.Preference;
-import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import android.provider.UserDictionary;
import android.text.TextUtils;
@@ -32,6 +31,7 @@
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.common.LocaleUtils;
+import com.android.inputmethod.latin.settings.CustomPreferenceFragment;
import java.util.List;
import java.util.Locale;
@@ -43,7 +43,7 @@
// packages/apps/Settings/src/com/android/settings/inputmethod/UserDictionaryList.java
// in order to deal with some devices that have issues with the user dictionary handling
-public class UserDictionaryList extends PreferenceFragment {
+public class UserDictionaryList extends CustomPreferenceFragment {
public static final String USER_DICTIONARY_SETTINGS_INTENT_ACTION =
"android.settings.USER_DICTIONARY_SETTINGS";
diff --git a/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java b/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
index 5c0c432..476c134 100644
--- a/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
@@ -19,6 +19,7 @@
import com.android.inputmethod.latin.makedict.DictionaryHeader;
import com.android.inputmethod.latin.makedict.NgramProperty;
import com.android.inputmethod.latin.makedict.ProbabilityInfo;
+import com.android.inputmethod.latin.makedict.WeightedString;
import com.android.inputmethod.latin.makedict.WordProperty;
import java.util.HashMap;
@@ -28,6 +29,7 @@
public static final String BIGRAM_TAG = "bigram";
public static final String NGRAM_TAG = "ngram";
public static final String NGRAM_PREV_WORD_TAG = "prev_word";
+ public static final String SHORTCUT_TAG = "shortcut";
public static final String PROBABILITY_TAG = "f";
public static final String HISTORICAL_INFO_TAG = "historicalInfo";
public static final String HISTORICAL_INFO_SEPARATOR = ":";
@@ -69,6 +71,14 @@
builder.append("," + POSSIBLY_OFFENSIVE_TAG + "=" + TRUE_VALUE);
}
builder.append("\n");
+ if (wordProperty.mHasShortcuts) {
+ for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+ builder.append(" " + SHORTCUT_TAG + "=" + shortcutTarget.mWord);
+ builder.append(",");
+ builder.append(formatProbabilityInfo(shortcutTarget.mProbabilityInfo));
+ builder.append("\n");
+ }
+ }
if (wordProperty.mHasNgrams) {
for (final NgramProperty ngramProperty : wordProperty.mNgrams) {
builder.append(" " + NGRAM_TAG + "=" + ngramProperty.mTargetWord.mWord);
diff --git a/java/src/com/android/inputmethod/latin/utils/JniUtils.java b/java/src/com/android/inputmethod/latin/utils/JniUtils.java
index e7fdafa..458c169 100644
--- a/java/src/com/android/inputmethod/latin/utils/JniUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/JniUtils.java
@@ -23,11 +23,18 @@
public final class JniUtils {
private static final String TAG = JniUtils.class.getSimpleName();
+ public static boolean sHaveGestureLib = false;
static {
try {
- System.loadLibrary(JniLibName.JNI_LIB_NAME);
- } catch (UnsatisfiedLinkError ule) {
- Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
+ System.loadLibrary(JniLibName.JNI_LIB_NAME2);
+ sHaveGestureLib = true;
+ } catch (UnsatisfiedLinkError ue) {
+ Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME2, ue);
+ try {
+ System.loadLibrary(JniLibName.JNI_LIB_NAME);
+ } catch (UnsatisfiedLinkError ule) {
+ Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
+ }
}
}
diff --git a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
index cc0d470..0bb19af 100644
--- a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
@@ -189,11 +189,8 @@
public static int getKeyboardHeight(final Resources res, final SettingsValues settingsValues) {
final int defaultKeyboardHeight = getDefaultKeyboardHeight(res);
- if (settingsValues.mHasKeyboardResize) {
- // mKeyboardHeightScale Ranges from [.5,1.2], from xml/prefs_screen_debug.xml
- return (int)(defaultKeyboardHeight * settingsValues.mKeyboardHeightScale);
- }
- return defaultKeyboardHeight;
+ // mKeyboardHeightScale Ranges from [.5,1.2], from xml/prefs_screen_debug.xml
+ return (int)(defaultKeyboardHeight * settingsValues.mKeyboardHeightScale);
}
public static int getDefaultKeyboardHeight(final Resources res) {
diff --git a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
index 5377130..81d489f 100644
--- a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
@@ -45,6 +45,7 @@
public static final int SCRIPT_TAMIL = 15;
public static final int SCRIPT_TELUGU = 16;
public static final int SCRIPT_THAI = 17;
+ public static final int SCRIPT_BULGARIAN = 18;
private static final TreeMap<String, Integer> mLanguageCodeToScriptCode;
@@ -53,8 +54,8 @@
mLanguageCodeToScriptCode.put("", SCRIPT_LATIN); // default
mLanguageCodeToScriptCode.put("ar", SCRIPT_ARABIC);
mLanguageCodeToScriptCode.put("hy", SCRIPT_ARMENIAN);
+ mLanguageCodeToScriptCode.put("bg", SCRIPT_BULGARIAN);
mLanguageCodeToScriptCode.put("bn", SCRIPT_BENGALI);
- mLanguageCodeToScriptCode.put("bg", SCRIPT_CYRILLIC);
mLanguageCodeToScriptCode.put("sr", SCRIPT_CYRILLIC);
mLanguageCodeToScriptCode.put("ru", SCRIPT_CYRILLIC);
mLanguageCodeToScriptCode.put("ka", SCRIPT_GEORGIAN);
@@ -68,6 +69,7 @@
mLanguageCodeToScriptCode.put("ta", SCRIPT_TAMIL);
mLanguageCodeToScriptCode.put("te", SCRIPT_TELUGU);
mLanguageCodeToScriptCode.put("th", SCRIPT_THAI);
+ mLanguageCodeToScriptCode.put("uk", SCRIPT_CYRILLIC);
}
/*
@@ -101,6 +103,7 @@
case SCRIPT_BENGALI:
// Bengali unicode block is U+0980..U+09FF
return (codePoint >= 0x980 && codePoint <= 0x9FF);
+ case SCRIPT_BULGARIAN:
case SCRIPT_CYRILLIC:
// All Cyrillic characters are in the 400~52F block. There are some in the upper
// Unicode range, but they are archaic characters that are not used in modern
diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java
index 49f0b87..8d05f83 100644
--- a/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java
+++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsFragment.java
@@ -19,13 +19,14 @@
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.preference.PreferenceFragment;
+
+import com.android.inputmethod.latin.settings.CustomPreferenceFragment;
/**
* This is a helper class for an IME's settings preference fragment. It's recommended for every
* IME to have its own settings preference fragment which inherits this class.
*/
-public abstract class InputMethodSettingsFragment extends PreferenceFragment
+public abstract class InputMethodSettingsFragment extends CustomPreferenceFragment
implements InputMethodSettingsInterface {
private final InputMethodSettingsImpl mSettings = new InputMethodSettingsImpl();
@Override
@@ -33,6 +34,7 @@
super.onCreate(savedInstanceState);
final Context context = getActivity();
setPreferenceScreen(getPreferenceManager().createPreferenceScreen(context));
+ mSettings.setSpawnAsNewActivity(false);
mSettings.init(context, getPreferenceScreen());
}
diff --git a/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java b/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java
index cfa1a65..e56c975 100644
--- a/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java
+++ b/java/src/com/android/inputmethodcommon/InputMethodSettingsImpl.java
@@ -40,6 +40,7 @@
private Drawable mSubtypeEnablerIcon;
private InputMethodManager mImm;
private InputMethodInfo mImi;
+ private boolean mSpawnAsNewActivity = true;
/**
* Initialize internal states of this object.
@@ -55,9 +56,11 @@
}
final Intent intent = new Intent(Settings.ACTION_INPUT_METHOD_SUBTYPE_SETTINGS);
intent.putExtra(Settings.EXTRA_INPUT_METHOD_ID, mImi.getId());
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
- | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ if (mSpawnAsNewActivity) {
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
+ | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ }
mSubtypeEnablerPreference = new Preference(context);
mSubtypeEnablerPreference.setIntent(intent);
prefScreen.addPreference(mSubtypeEnablerPreference);
@@ -176,4 +179,8 @@
pref.setIcon(mSubtypeEnablerIcon);
}
}
+
+ public void setSpawnAsNewActivity(boolean spawnAsNew) {
+ mSpawnAsNewActivity = spawnAsNew;
+ }
}
diff --git a/native/jni/Android.mk b/native/jni/Android.mk
new file mode 100644
index 0000000..4129576
--- /dev/null
+++ b/native/jni/Android.mk
@@ -0,0 +1,103 @@
+# Copyright (C) 2011 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.
+
+LOCAL_PATH := $(call my-dir)
+
+############ some local flags
+# If you change any of those flags, you need to rebuild both libjni_latinime_common_static
+# and the shared library that uses libjni_latinime_common_static.
+FLAG_DBG ?= false
+FLAG_DO_PROFILE ?= false
+
+######################################
+include $(CLEAR_VARS)
+
+LATIN_IME_SRC_DIR := src
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+
+LOCAL_CFLAGS += -Werror -Wall -Wextra -Weffc++ -Wformat=2 -Wcast-qual -Wcast-align \
+ -Wwrite-strings -Wfloat-equal -Wpointer-arith -Winit-self -Wredundant-decls \
+ -Woverloaded-virtual -Wsign-promo -Wno-system-headers
+
+# To suppress compiler warnings for unused variables/functions used for debug features etc.
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+
+# HACK: -mstackrealign is required for x86 builds running on pre-KitKat devices to avoid crashes
+# with SSE instructions.
+ifeq ($(TARGET_ARCH), x86)
+ LOCAL_CFLAGS += -mstackrealign
+endif # x86
+
+include $(LOCAL_PATH)/NativeFileList.mk
+
+LOCAL_SRC_FILES := \
+ $(LATIN_IME_JNI_SRC_FILES) \
+ $(addprefix $(LATIN_IME_SRC_DIR)/, $(LATIN_IME_CORE_SRC_FILES))
+
+ifeq ($(FLAG_DO_PROFILE), true)
+ $(warning Making profiling version of native library)
+ LOCAL_CFLAGS += -DFLAG_DO_PROFILE -funwind-tables
+else # FLAG_DO_PROFILE
+ifeq ($(FLAG_DBG), true)
+ $(warning Making debug version of native library)
+ LOCAL_CFLAGS += -DFLAG_DBG -funwind-tables -fno-inline
+ifeq ($(FLAG_FULL_DBG), true)
+ $(warning Making full debug version of native library)
+ LOCAL_CFLAGS += -DFLAG_FULL_DBG
+endif # FLAG_FULL_DBG
+endif # FLAG_DBG
+endif # FLAG_DO_PROFILE
+
+LOCAL_MODULE := libjni_latinime_common_static
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_CLANG := true
+LOCAL_SDK_VERSION := 14
+LOCAL_NDK_STL_VARIANT := c++_static
+
+include $(BUILD_STATIC_LIBRARY)
+######################################
+include $(CLEAR_VARS)
+
+# All code in LOCAL_WHOLE_STATIC_LIBRARIES will be built into this shared library.
+LOCAL_WHOLE_STATIC_LIBRARIES := libjni_latinime_common_static
+
+ifeq ($(FLAG_DO_PROFILE), true)
+ $(warning Making profiling version of native library)
+ LOCAL_LDFLAGS += -llog
+else # FLAG_DO_PROFILE
+ifeq ($(FLAG_DBG), true)
+ $(warning Making debug version of native library)
+ LOCAL_LDFLAGS += -llog
+endif # FLAG_DBG
+endif # FLAG_DO_PROFILE
+
+LOCAL_MODULE := libjni_latinime
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_CLANG := true
+LOCAL_SDK_VERSION := 14
+LOCAL_NDK_STL_VARIANT := c++_static
+LOCAL_LDFLAGS += -ldl
+
+include $(BUILD_SHARED_LIBRARY)
+#################### Clean up the tmp vars
+include $(LOCAL_PATH)/CleanupNativeFileList.mk
+
+#################### Unit test on host environment
+#include $(LOCAL_PATH)/HostUnitTests.mk
+
+#################### Unit test on target environment
+#include $(LOCAL_PATH)/TargetUnitTests.mk
diff --git a/native/jni/Application.mk b/native/jni/Application.mk
new file mode 100644
index 0000000..a169e74
--- /dev/null
+++ b/native/jni/Application.mk
@@ -0,0 +1,2 @@
+APP_STL := c++_static
+APP_ABI := all
diff --git a/native/jni/CleanupNativeFileList.mk b/native/jni/CleanupNativeFileList.mk
new file mode 100644
index 0000000..eed6f1e
--- /dev/null
+++ b/native/jni/CleanupNativeFileList.mk
@@ -0,0 +1,19 @@
+# Copyright (C) 2013 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.
+
+LATIN_IME_CORE_SRC_FILES :=
+LATIN_IME_CORE_SRC_FILES_BACKWARD_V401 :=
+LATIN_IME_CORE_TEST_FILES :=
+LATIN_IME_JNI_SRC_FILES :=
+LATIN_IME_SRC_DIR :=
diff --git a/native/jni/HostUnitTests.mk b/native/jni/HostUnitTests.mk
new file mode 100644
index 0000000..6a8bcec
--- /dev/null
+++ b/native/jni/HostUnitTests.mk
@@ -0,0 +1,64 @@
+# Copyright (C) 2014 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.
+
+# Host build is never supported in unbundled (NDK/tapas) build
+ifeq (,$(TARGET_BUILD_APPS))
+
+# HACK: Temporarily disable host tool build on Mac until the build system is ready for C++11.
+LATINIME_HOST_OSNAME := $(shell uname -s)
+ifneq ($(LATINIME_HOST_OSNAME), Darwin) # TODO: Remove this
+
+LOCAL_PATH := $(call my-dir)
+
+######################################
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/NativeFileList.mk
+
+#################### Host library for unit test
+LATIN_IME_SRC_DIR := src
+LOCAL_ADDRESS_SANITIZER := true
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_CXX_STL := libc++
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_host_static_for_unittests
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_SRC_DIR)/, $(LATIN_IME_CORE_SRC_FILES))
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+#################### Host native tests
+include $(CLEAR_VARS)
+LATIN_IME_TEST_SRC_DIR := tests
+LOCAL_ADDRESS_SANITIZER := true
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_CXX_STL := libc++
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_host_unittests
+LOCAL_MODULE_TAGS := tests
+LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_TEST_SRC_DIR)/, $(LATIN_IME_CORE_TEST_FILES))
+LOCAL_STATIC_LIBRARIES += liblatinime_host_static_for_unittests
+include $(BUILD_HOST_NATIVE_TEST)
+
+include $(LOCAL_PATH)/CleanupNativeFileList.mk
+
+endif # Darwin - TODO: Remove this
+
+endif # TARGET_BUILD_APPS
+
+#################### Clean up the tmp vars
+LATINIME_HOST_OSNAME :=
+LATIN_IME_SRC_DIR :=
+LATIN_IME_TEST_SRC_DIR :=
diff --git a/native/jni/NativeFileList.mk b/native/jni/NativeFileList.mk
new file mode 100644
index 0000000..dbe1d80
--- /dev/null
+++ b/native/jni/NativeFileList.mk
@@ -0,0 +1,146 @@
+# Copyright (C) 2013 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.
+
+LATIN_IME_JNI_SRC_FILES := \
+ com_android_inputmethod_keyboard_ProximityInfo.cpp \
+ com_android_inputmethod_latin_BinaryDictionary.cpp \
+ com_android_inputmethod_latin_BinaryDictionaryUtils.cpp \
+ com_android_inputmethod_latin_DicTraverseSession.cpp \
+ jni_common.cpp
+
+LATIN_IME_CORE_SRC_FILES := \
+ $(addprefix dictionary/header/, \
+ header_policy.cpp \
+ header_read_write_utils.cpp) \
+ dictionary/property/ngram_context.cpp \
+ dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp \
+ $(addprefix dictionary/structure/pt_common/, \
+ bigram/bigram_list_read_write_utils.cpp \
+ dynamic_pt_gc_event_listeners.cpp \
+ dynamic_pt_reading_helper.cpp \
+ dynamic_pt_reading_utils.cpp \
+ dynamic_pt_updating_helper.cpp \
+ dynamic_pt_writing_utils.cpp \
+ patricia_trie_reading_utils.cpp \
+ shortcut/shortcut_list_reading_utils.cpp) \
+ $(addprefix dictionary/structure/v2/, \
+ patricia_trie_policy.cpp \
+ ver2_patricia_trie_node_reader.cpp \
+ ver2_pt_node_array_reader.cpp) \
+ $(addprefix dictionary/structure/v4/, \
+ ver4_dict_buffers.cpp \
+ ver4_dict_constants.cpp \
+ ver4_patricia_trie_node_reader.cpp \
+ ver4_patricia_trie_node_writer.cpp \
+ ver4_patricia_trie_policy.cpp \
+ ver4_patricia_trie_reading_utils.cpp \
+ ver4_patricia_trie_writing_helper.cpp \
+ ver4_pt_node_array_reader.cpp) \
+ $(addprefix dictionary/structure/v4/content/, \
+ dynamic_language_model_probability_utils.cpp \
+ language_model_dict_content.cpp \
+ language_model_dict_content_global_counters.cpp \
+ shortcut_dict_content.cpp \
+ sparse_table_dict_content.cpp \
+ terminal_position_lookup_table.cpp) \
+ $(addprefix dictionary/utils/, \
+ buffer_with_extendable_buffer.cpp \
+ byte_array_utils.cpp \
+ dict_file_writing_utils.cpp \
+ file_utils.cpp \
+ forgetting_curve_utils.cpp \
+ format_utils.cpp \
+ mmapped_buffer.cpp \
+ multi_bigram_map.cpp \
+ probability_utils.cpp \
+ sparse_table.cpp \
+ trie_map.cpp ) \
+ suggest/core/suggest.cpp \
+ $(addprefix suggest/core/dicnode/, \
+ dic_node.cpp \
+ dic_node_utils.cpp \
+ dic_nodes_cache.cpp) \
+ $(addprefix suggest/core/dictionary/, \
+ dictionary.cpp \
+ dictionary_utils.cpp \
+ digraph_utils.cpp \
+ error_type_utils.cpp ) \
+ $(addprefix suggest/core/layout/, \
+ additional_proximity_chars.cpp \
+ proximity_info.cpp \
+ proximity_info_params.cpp \
+ proximity_info_state.cpp \
+ proximity_info_state_utils.cpp) \
+ suggest/core/policy/weighting.cpp \
+ suggest/core/session/dic_traverse_session.cpp \
+ $(addprefix suggest/core/result/, \
+ suggestion_results.cpp \
+ suggestions_output_utils.cpp) \
+ suggest/policyimpl/gesture/gesture_suggest_policy_factory.cpp \
+ $(addprefix suggest/policyimpl/typing/, \
+ scoring_params.cpp \
+ typing_scoring.cpp \
+ typing_suggest_policy.cpp \
+ typing_traversal.cpp \
+ typing_weighting.cpp) \
+ $(addprefix utils/, \
+ autocorrection_threshold_utils.cpp \
+ char_utils.cpp \
+ jni_data_utils.cpp \
+ log_utils.cpp \
+ time_keeper.cpp)
+
+LATIN_IME_CORE_SRC_FILES_BACKWARD_V402 := \
+ $(addprefix dictionary/structure/backward/v402/, \
+ ver4_dict_buffers.cpp \
+ ver4_dict_constants.cpp \
+ ver4_patricia_trie_node_reader.cpp \
+ ver4_patricia_trie_node_writer.cpp \
+ ver4_patricia_trie_policy.cpp \
+ ver4_patricia_trie_reading_utils.cpp \
+ ver4_patricia_trie_writing_helper.cpp \
+ ver4_pt_node_array_reader.cpp) \
+ $(addprefix dictionary/structure/backward/v402/content/, \
+ bigram_dict_content.cpp \
+ probability_dict_content.cpp \
+ shortcut_dict_content.cpp \
+ sparse_table_dict_content.cpp \
+ terminal_position_lookup_table.cpp) \
+ $(addprefix dictionary/structure/backward/v402/bigram/, \
+ ver4_bigram_list_policy.cpp)
+
+LATIN_IME_CORE_SRC_FILES += $(LATIN_IME_CORE_SRC_FILES_BACKWARD_V402)
+
+LATIN_IME_CORE_TEST_FILES := \
+ defines_test.cpp \
+ dictionary/header/header_read_write_utils_test.cpp \
+ dictionary/structure/v4/content/language_model_dict_content_test.cpp \
+ dictionary/structure/v4/content/language_model_dict_content_global_counters_test.cpp \
+ dictionary/structure/v4/content/probability_entry_test.cpp \
+ dictionary/structure/v4/content/terminal_position_lookup_table_test.cpp \
+ dictionary/utils/bloom_filter_test.cpp \
+ dictionary/utils/buffer_with_extendable_buffer_test.cpp \
+ dictionary/utils/byte_array_utils_test.cpp \
+ dictionary/utils/format_utils_test.cpp \
+ dictionary/utils/probability_utils_test.cpp \
+ dictionary/utils/sparse_table_test.cpp \
+ dictionary/utils/trie_map_test.cpp \
+ suggest/core/dicnode/dic_node_pool_test.cpp \
+ suggest/core/layout/geometry_utils_test.cpp \
+ suggest/core/layout/normal_distribution_2d_test.cpp \
+ suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp \
+ utils/autocorrection_threshold_utils_test.cpp \
+ utils/char_utils_test.cpp \
+ utils/int_array_view_test.cpp \
+ utils/time_keeper_test.cpp
\ No newline at end of file
diff --git a/native/jni/TargetUnitTests.mk b/native/jni/TargetUnitTests.mk
new file mode 100644
index 0000000..69a32ed
--- /dev/null
+++ b/native/jni/TargetUnitTests.mk
@@ -0,0 +1,52 @@
+# Copyright (C) 2014 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.
+
+LOCAL_PATH := $(call my-dir)
+
+######################################
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/NativeFileList.mk
+
+#################### Target library for unit test
+LATIN_IME_SRC_DIR := src
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_target_static_for_unittests
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_SRC_DIR)/, $(LATIN_IME_CORE_SRC_FILES))
+LOCAL_SDK_VERSION := 14
+LOCAL_NDK_STL_VARIANT := c++_static
+include $(BUILD_STATIC_LIBRARY)
+
+#################### Target native tests
+include $(CLEAR_VARS)
+LATIN_IME_TEST_SRC_DIR := tests
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_target_unittests
+LOCAL_MODULE_TAGS := tests
+LOCAL_SRC_FILES := \
+ $(addprefix $(LATIN_IME_TEST_SRC_DIR)/, $(LATIN_IME_CORE_TEST_FILES))
+LOCAL_STATIC_LIBRARIES += liblatinime_target_static_for_unittests
+LOCAL_SDK_VERSION := 14
+LOCAL_NDK_STL_VARIANT := c++_static
+include $(BUILD_NATIVE_TEST)
+
+#################### Clean up the tmp vars
+LATIN_IME_SRC_DIR :=
+LATIN_IME_TEST_SRC_DIR :=
+include $(LOCAL_PATH)/CleanupNativeFileList.mk
diff --git a/native/jni/UnitTests.mk b/native/jni/UnitTests.mk
new file mode 100644
index 0000000..09f0183
--- /dev/null
+++ b/native/jni/UnitTests.mk
@@ -0,0 +1,65 @@
+# Copyright (C) 2014 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.
+
+ifeq (,$(TARGET_BUILD_APPS))
+
+LOCAL_PATH := $(call my-dir)
+
+######################################
+include $(CLEAR_VARS)
+
+LATIN_IME_CORE_PATH := $(LOCAL_PATH)/../jni
+
+LATIN_IME_DICT_TOOLKIT_SRC_DIR := src
+LATIN_IME_CORE_SRC_DIR := ../jni/src
+LATIN_DICT_TOOLKIT_TEST_SRC_DIR := tests
+
+include $(LOCAL_PATH)/NativeFileList.mk
+include $(LATIN_IME_CORE_PATH)/NativeFileList.mk
+
+LATIN_IME_SRC_DIR := src
+LOCAL_ADDRESS_SANITIZER := true
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+LOCAL_CXX_STL := libc++
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_DICT_TOOLKIT_SRC_DIR) \
+ $(LATIN_IME_CORE_PATH)/$(LATIN_IME_CORE_SRC_DIR)
+LOCAL_MODULE := liblatinime_dicttoolkit_host_static_for_unittests
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := \
+ $(addprefix $(LATIN_IME_DICT_TOOLKIT_SRC_DIR)/, $(LATIN_IME_DICT_TOOLKIT_SRC_FILES)) \
+ $(addprefix $(LATIN_IME_CORE_SRC_DIR)/, $(LATIN_IME_CORE_SRC_FILES))
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+
+LOCAL_ADDRESS_SANITIZER := true
+LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
+LOCAL_CXX_STL := libc++
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_DICT_TOOLKIT_SRC_DIR) \
+ $(LATIN_IME_CORE_PATH)/$(LATIN_IME_CORE_SRC_DIR)
+LOCAL_MODULE := dicttoolkit_unittests
+LOCAL_MODULE_TAGS := tests
+LOCAL_SRC_FILES := \
+ $(addprefix $(LATIN_DICT_TOOLKIT_TEST_SRC_DIR)/, $(LATIN_IME_DICT_TOOLKIT_TEST_FILES))
+LOCAL_STATIC_LIBRARIES += liblatinime_dicttoolkit_host_static_for_unittests
+include $(BUILD_HOST_NATIVE_TEST)
+
+include $(LOCAL_PATH)/CleanupNativeFileList.mk
+
+#################### Clean up the tmp vars
+LATINIME_HOST_OSNAME :=
+LATIN_IME_SRC_DIR :=
+LATIN_IME_TEST_SRC_DIR :=
+
+endif # TARGET_BUILD_APPS
\ No newline at end of file
diff --git a/native/jni/src/dictionary/property/historical_info.h b/native/jni/src/dictionary/property/historical_info.h
index e5ce1ea..cae2051 100644
--- a/native/jni/src/dictionary/property/historical_info.h
+++ b/native/jni/src/dictionary/property/historical_info.h
@@ -48,9 +48,6 @@
}
private:
- // Default copy constructor is used for using in std::vector.
- DISALLOW_ASSIGNMENT_OPERATOR(HistoricalInfo);
-
const int mTimestamp;
const int mLevel;
const int mCount;
diff --git a/native/jni/src/dictionary/property/ngram_property.h b/native/jni/src/dictionary/property/ngram_property.h
index 5f259ec..adc8c5b 100644
--- a/native/jni/src/dictionary/property/ngram_property.h
+++ b/native/jni/src/dictionary/property/ngram_property.h
@@ -51,7 +51,6 @@
private:
// Default copy constructor is used for using in std::vector.
DISALLOW_DEFAULT_CONSTRUCTOR(NgramProperty);
- DISALLOW_ASSIGNMENT_OPERATOR(NgramProperty);
const NgramContext mNgramContext;
const std::vector<int> mTargetCodePoints;
diff --git a/native/jni/src/dictionary/property/unigram_property.h b/native/jni/src/dictionary/property/unigram_property.h
index 92f61b8..f25a4ae 100644
--- a/native/jni/src/dictionary/property/unigram_property.h
+++ b/native/jni/src/dictionary/property/unigram_property.h
@@ -122,9 +122,6 @@
}
private:
- // Default copy constructor is used for using as a return value.
- DISALLOW_ASSIGNMENT_OPERATOR(UnigramProperty);
-
const bool mRepresentsBeginningOfSentence;
const bool mIsNotAWord;
const bool mIsBlacklisted;
diff --git a/native/jni/src/dictionary/property/word_attributes.h b/native/jni/src/dictionary/property/word_attributes.h
index 5351e7d..d415654 100644
--- a/native/jni/src/dictionary/property/word_attributes.h
+++ b/native/jni/src/dictionary/property/word_attributes.h
@@ -56,8 +56,6 @@
}
private:
- DISALLOW_ASSIGNMENT_OPERATOR(WordAttributes);
-
int mProbability;
bool mIsBlacklisted;
bool mIsNotAWord;
diff --git a/native/jni/src/dictionary/property/word_property.h b/native/jni/src/dictionary/property/word_property.h
index 3028e02..d57ca9b 100644
--- a/native/jni/src/dictionary/property/word_property.h
+++ b/native/jni/src/dictionary/property/word_property.h
@@ -51,9 +51,6 @@
}
private:
- // Default copy constructor is used for using as a return value.
- DISALLOW_ASSIGNMENT_OPERATOR(WordProperty);
-
const std::vector<int> mCodePoints;
const UnigramProperty mUnigramProperty;
const std::vector<NgramProperty> mNgrams;
diff --git a/native/jni/src/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h b/native/jni/src/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h
index f2b8738..b29dfd6 100644
--- a/native/jni/src/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h
+++ b/native/jni/src/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h
@@ -119,7 +119,6 @@
}
private:
- DISALLOW_ASSIGNMENT_OPERATOR(DictProbabilityComparator);
};
bool runGC(const int rootPtNodeArrayPos, const HeaderPolicy *const headerPolicy,
diff --git a/native/jni/src/dictionary/structure/v4/content/language_model_dict_content.h b/native/jni/src/dictionary/structure/v4/content/language_model_dict_content.h
index db8c6e1..ab7ef85 100644
--- a/native/jni/src/dictionary/structure/v4/content/language_model_dict_content.h
+++ b/native/jni/src/dictionary/structure/v4/content/language_model_dict_content.h
@@ -53,7 +53,6 @@
private:
DISALLOW_DEFAULT_CONSTRUCTOR(WordIdAndProbabilityEntry);
- DISALLOW_ASSIGNMENT_OPERATOR(WordIdAndProbabilityEntry);
const int mWordId;
const ProbabilityEntry mProbabilityEntry;
@@ -83,7 +82,6 @@
private:
DISALLOW_DEFAULT_CONSTRUCTOR(EntryIterator);
- DISALLOW_ASSIGNMENT_OPERATOR(EntryIterator);
TrieMap::TrieMapIterator mTrieMapIterator;
const bool mHasHistoricalInfo;
@@ -105,7 +103,6 @@
private:
DISALLOW_DEFAULT_CONSTRUCTOR(EntryRange);
- DISALLOW_ASSIGNMENT_OPERATOR(EntryRange);
const TrieMap::TrieMapRange mTrieMapRange;
const bool mHasHistoricalInfo;
@@ -124,8 +121,6 @@
const ProbabilityEntry &getProbabilityEntry() const { return mProbabilityEntry; }
private:
- DISALLOW_ASSIGNMENT_OPERATOR(DumppedFullEntryInfo);
-
const std::vector<int> mPrevWordIds;
const int mTargetWordId;
const WordAttributes mWordAttributes;
@@ -211,7 +206,6 @@
bool operator()(const EntryInfoToTurncate &left,
const EntryInfoToTurncate &right) const;
private:
- DISALLOW_ASSIGNMENT_OPERATOR(Comparator);
};
EntryInfoToTurncate(const int priority, const int count, const int key,
diff --git a/native/jni/src/dictionary/utils/bloom_filter.h b/native/jni/src/dictionary/utils/bloom_filter.h
index 1e60f49..26f0610 100644
--- a/native/jni/src/dictionary/utils/bloom_filter.h
+++ b/native/jni/src/dictionary/utils/bloom_filter.h
@@ -44,8 +44,6 @@
}
private:
- DISALLOW_ASSIGNMENT_OPERATOR(BloomFilter);
-
AK_FORCE_INLINE size_t getIndex(const int position) const {
return static_cast<size_t>(position) % BIGRAM_FILTER_MODULO;
}
diff --git a/native/jni/src/dictionary/utils/entry_counters.h b/native/jni/src/dictionary/utils/entry_counters.h
index 5e44302..4a7cecf 100644
--- a/native/jni/src/dictionary/utils/entry_counters.h
+++ b/native/jni/src/dictionary/utils/entry_counters.h
@@ -41,8 +41,6 @@
}
private:
- DISALLOW_ASSIGNMENT_OPERATOR(EntryCounts);
-
// Counts from Unigram (0-th element) to (MAX_PREV_WORD_COUNT_FOR_N_GRAM + 1)-gram
// (MAX_PREV_WORD_COUNT_FOR_N_GRAM-th element)
const std::array<int, MAX_PREV_WORD_COUNT_FOR_N_GRAM + 1> mEntryCounts;
diff --git a/native/jni/src/dictionary/utils/trie_map.h b/native/jni/src/dictionary/utils/trie_map.h
index 5fc6c26..5a0395a 100644
--- a/native/jni/src/dictionary/utils/trie_map.h
+++ b/native/jni/src/dictionary/utils/trie_map.h
@@ -126,7 +126,6 @@
private:
DISALLOW_DEFAULT_CONSTRUCTOR(TrieMapIterator);
- DISALLOW_ASSIGNMENT_OPERATOR(TrieMapIterator);
const TrieMap *const mTrieMap;
std::vector<TrieMap::TableIterationState> mStateStack;
@@ -155,7 +154,6 @@
private:
DISALLOW_DEFAULT_CONSTRUCTOR(TrieMapRange);
- DISALLOW_ASSIGNMENT_OPERATOR(TrieMapRange);
const TrieMap *const mTrieMap;
const int mBaseBitmapEntryIndex;
diff --git a/native/jni/src/suggest/core/result/suggested_word.h b/native/jni/src/suggest/core/result/suggested_word.h
index 258a40e..05f1e7c 100644
--- a/native/jni/src/suggest/core/result/suggested_word.h
+++ b/native/jni/src/suggest/core/result/suggested_word.h
@@ -36,7 +36,6 @@
}
private:
- DISALLOW_ASSIGNMENT_OPERATOR(Comparator);
};
SuggestedWord(const int *const codePoints, const int codePointCount,
diff --git a/native/jni/src/utils/byte_array_view.h b/native/jni/src/utils/byte_array_view.h
index 2b778af..04a8c18 100644
--- a/native/jni/src/utils/byte_array_view.h
+++ b/native/jni/src/utils/byte_array_view.h
@@ -50,8 +50,6 @@
}
private:
- DISALLOW_ASSIGNMENT_OPERATOR(ReadOnlyByteArrayView);
-
const uint8_t *const mPtr;
const size_t mSize;
};
diff --git a/native/jni/src/utils/int_array_view.h b/native/jni/src/utils/int_array_view.h
index e0f6710..1b47090 100644
--- a/native/jni/src/utils/int_array_view.h
+++ b/native/jni/src/utils/int_array_view.h
@@ -157,8 +157,6 @@
}
private:
- DISALLOW_ASSIGNMENT_OPERATOR(IntArrayView);
-
const int *const mPtr;
const size_t mSize;
};
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..fc4eb30
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = "LatinIME"
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBekl.java b/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBekl.java
new file mode 100644
index 0000000..59c22e8
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBekl.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2014 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 com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.customizer.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+public final class BulgarianBekl extends LayoutBase {
+ private static final String LAYOUT_NAME = "bulgarian_bekl";
+
+ public BulgarianBekl(final Locale locale) {
+ super(new BulgarianBeklCustomizer(locale), Symbols.class, SymbolsShifted.class);
+ }
+
+ @Override
+ public String getName() { return LAYOUT_NAME; }
+
+ private static class BulgarianBeklCustomizer extends EastSlavicCustomizer {
+ BulgarianBeklCustomizer(final Locale locale) { super(locale); }
+
+ @Override
+ public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+ }
+
+ @Override
+ ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+ private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+ .setKeysOfRow(1,
+ // U+0443: "у" CYRILLIC SMALL LETTER U
+ key("\u0443", moreKey("1")),
+ // U+0435: "е" CYRILLIC SMALL LETTER IE
+ key("\u0435", moreKey("2")),
+ // U+0438: "и" CYRILLIC SMALL LETTER I
+ // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+ key("\u0438", joinMoreKeys("3", "\u045D")),
+ // U+0448: "ш" CYRILLIC SMALL LETTER SHA
+ key("\u0448", moreKey("4")),
+ // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+ key("\u0449", moreKey("5")),
+ // U+043A: "к" CYRILLIC SMALL LETTER KA
+ key("\u043A", moreKey("6")),
+ // U+0441: "с" CYRILLIC SMALL LETTER ES
+ key("\u0441", moreKey("7")),
+ // U+0434: "д" CYRILLIC SMALL LETTER DE
+ key("\u0434", moreKey("8")),
+ // U+0437: "з" CYRILLIC SMALL LETTER ZE
+ key("\u0437", moreKey("9")),
+ // U+0446: "ц" CYRILLIC SMALL LETTER TSE
+ key("\u0446", moreKey("0")),
+ // U+0431: "б" CYRILLIC SMALL LETTER BE
+ "\u0431")
+ .setKeysOfRow(2,
+ // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+ // U+044F: "я" CYRILLIC SMALL LETTER YA
+ // U+0430: "а" CYRILLIC SMALL LETTER A
+ // U+043E: "о" CYRILLIC SMALL LETTER O
+ // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
+ // U+0433: "г" CYRILLIC SMALL LETTER GHE
+ // U+0442: "т" CYRILLIC SMALL LETTER TE
+ // U+043D: "н" CYRILLIC SMALL LETTER EN
+ // U+0432: "в" CYRILLIC SMALL LETTER VE
+ // U+043C: "м" CYRILLIC SMALL LETTER EM
+ // U+0447: "ч" CYRILLIC SMALL LETTER CHE
+ "\u044C", "\u044F", "\u0430", "\u043E", "\u0436", "\u0433", "\u0442", "\u043D",
+ "\u0432", "\u043C", "\u0447")
+ .setKeysOfRow(3,
+ // U+044E: "ю" CYRILLIC SMALL LETTER YU
+ // U+0439: "й" CYRILLIC SMALL LETTER SHORT I
+ // U+046D: "ѭ" CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+ // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+ // U+046B: "ѫ" CYRILLIC SMALL LETTER BIG YUS
+ // U+0463: "ѣ" CYRILLIC SMALL LETTER YAT
+ // U+0444: "ф" CYRILLIC SMALL LETTER EF
+ // U+0445: "х" CYRILLIC SMALL LETTER HA
+ // U+043F: "п" CYRILLIC SMALL LETTER PE
+ // U+0440: "р" CYRILLIC SMALL LETTER ER
+ // U+043B: "л" CYRILLIC SMALL LETTER EL
+ "\u044E", key("\u0439", moreKey("\u046D")), key("\u044A", moreKey("\u046B")),
+ "\u0463", "\u0444", "\u0445", "\u043F", "\u0440", "\u043B")
+ .build();
+}
\ No newline at end of file
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java
index 27f5534..8caa447 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/customizer/LayoutCustomizer.java
@@ -161,7 +161,7 @@
* @return the array of {@link ExpectedKey} that should be placed as an enter key.
*/
public ExpectedKey getEnterKey(final boolean isPhone) {
- return isPhone ? key(ENTER_KEY, EMOJI_ACTION_KEY) : ENTER_KEY;
+ return ENTER_KEY;
}
/**
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarianBekl.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarianBekl.java
new file mode 100644
index 0000000..22bbe16
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarianBekl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 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 com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.BulgarianBekl;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * bg: Bulgarian/bulgarian_bekl
+ */
+@SmallTest
+public final class TestsBulgarianBekl extends LayoutTestsBase {
+ private static final Locale LOCALE = new Locale("bg");
+ private static final LayoutBase LAYOUT = new BulgarianBekl(LOCALE);
+
+ @Override
+ LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
index db8b809..ed14831 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
@@ -170,7 +170,8 @@
addUnigramWord(binaryDictionary, validLongWord, probability);
addUnigramWord(binaryDictionary, invalidLongWord, probability);
// Too long short cut.
- binaryDictionary.addUnigramEntry("a", probability, false /* isBeginningOfSentence */,
+ binaryDictionary.addUnigramEntry("a", probability, invalidLongWord,
+ 10 /* shortcutProbability */, false /* isBeginningOfSentence */,
false /* isNotAWord */, false /* isPossiblyOffensive */,
BinaryDictionary.NOT_A_VALID_TIMESTAMP);
addUnigramWord(binaryDictionary, "abc", probability);
@@ -188,7 +189,8 @@
private static void addUnigramWord(final BinaryDictionary binaryDictionary, final String word,
final int probability) {
- binaryDictionary.addUnigramEntry(word, probability,
+ binaryDictionary.addUnigramEntry(word, probability, "" /* shortcutTarget */,
+ Dictionary.NOT_A_PROBABILITY /* shortcutProbability */,
false /* isBeginningOfSentence */, false /* isNotAWord */,
false /* isPossiblyOffensive */,
BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
@@ -736,6 +738,7 @@
final boolean isPossiblyOffensive = random.nextBoolean();
// TODO: Add tests for historical info.
binaryDictionary.addUnigramEntry(word, unigramProbability,
+ null /* shortcutTarget */, Dictionary.NOT_A_PROBABILITY,
false /* isBeginningOfSentence */, isNotAWord, isPossiblyOffensive,
BinaryDictionary.NOT_A_VALID_TIMESTAMP);
if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
@@ -750,7 +753,9 @@
assertEquals(isNotAWord, wordProperty.mIsNotAWord);
assertEquals(isPossiblyOffensive, wordProperty.mIsPossiblyOffensive);
assertEquals(false, wordProperty.mHasNgrams);
+ assertEquals(false, wordProperty.mHasShortcuts);
assertEquals(unigramProbability, wordProperty.mProbabilityInfo.mProbability);
+ assertTrue(wordProperty.mShortcutTargets.isEmpty());
}
for (int i = 0; i < BIGRAM_COUNT; i++) {
@@ -880,10 +885,127 @@
}
@Test
+ public void testAddShortcuts() {
+ final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
+
+ final int unigramProbability = 100;
+ final int shortcutProbability = 10;
+ binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+ shortcutProbability, false /* isBeginningOfSentence */,
+ false /* isNotAWord */, false /* isPossiblyOffensive */, 0 /* timestamp */);
+ WordProperty wordProperty = binaryDictionary.getWordProperty("aaa",
+ false /* isBeginningOfSentence */);
+ assertEquals(1, wordProperty.mShortcutTargets.size());
+ assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
+ assertEquals(shortcutProbability, wordProperty.mShortcutTargets.get(0).getProbability());
+ final int updatedShortcutProbability = 2;
+ binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+ updatedShortcutProbability, false /* isBeginningOfSentence */,
+ false /* isNotAWord */, false /* isPossiblyOffensive */, 0 /* timestamp */);
+ wordProperty = binaryDictionary.getWordProperty("aaa",
+ false /* isBeginningOfSentence */);
+ assertEquals(1, wordProperty.mShortcutTargets.size());
+ assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
+ assertEquals(updatedShortcutProbability,
+ wordProperty.mShortcutTargets.get(0).getProbability());
+ binaryDictionary.addUnigramEntry("aaa", unigramProbability, "yyy",
+ shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+ false /* isPossiblyOffensive */, 0 /* timestamp */);
+ final HashMap<String, Integer> shortcutTargets = new HashMap<>();
+ shortcutTargets.put("zzz", updatedShortcutProbability);
+ shortcutTargets.put("yyy", shortcutProbability);
+ wordProperty = binaryDictionary.getWordProperty("aaa",
+ false /* isBeginningOfSentence */);
+ assertEquals(2, wordProperty.mShortcutTargets.size());
+ for (WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+ assertTrue(shortcutTargets.containsKey(shortcutTarget.mWord));
+ assertEquals((int)shortcutTargets.get(shortcutTarget.mWord),
+ shortcutTarget.getProbability());
+ shortcutTargets.remove(shortcutTarget.mWord);
+ }
+ shortcutTargets.put("zzz", updatedShortcutProbability);
+ shortcutTargets.put("yyy", shortcutProbability);
+ binaryDictionary.flushWithGC();
+ wordProperty = binaryDictionary.getWordProperty("aaa",
+ false /* isBeginningOfSentence */);
+ assertEquals(2, wordProperty.mShortcutTargets.size());
+ for (WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+ assertTrue(shortcutTargets.containsKey(shortcutTarget.mWord));
+ assertEquals((int)shortcutTargets.get(shortcutTarget.mWord),
+ shortcutTarget.getProbability());
+ shortcutTargets.remove(shortcutTarget.mWord);
+ }
+ }
+
+ @Test
+ public void testAddManyShortcuts() {
+ final long seed = System.currentTimeMillis();
+ final Random random = new Random(seed);
+ final int UNIGRAM_COUNT = 1000;
+ final int SHORTCUT_COUNT = 10000;
+ final int codePointSetSize = 20;
+ final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+
+ final ArrayList<String> words = new ArrayList<>();
+ final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+ final HashMap<String, HashMap<String, Integer>> shortcutTargets = new HashMap<>();
+ final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
+
+ for (int i = 0; i < UNIGRAM_COUNT; i++) {
+ final String word = CodePointUtils.generateWord(random, codePointSet);
+ final int unigramProbability = random.nextInt(0xFF);
+ addUnigramWord(binaryDictionary, word, unigramProbability);
+ words.add(word);
+ unigramProbabilities.put(word, unigramProbability);
+ if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+ binaryDictionary.flushWithGC();
+ }
+ }
+ for (int i = 0; i < SHORTCUT_COUNT; i++) {
+ final String shortcutTarget = CodePointUtils.generateWord(random, codePointSet);
+ final int shortcutProbability = random.nextInt(0xF);
+ final String word = words.get(random.nextInt(words.size()));
+ final int unigramProbability = unigramProbabilities.get(word);
+ binaryDictionary.addUnigramEntry(word, unigramProbability, shortcutTarget,
+ shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+ false /* isPossiblyOffensive */, 0 /* timestamp */);
+ if (shortcutTargets.containsKey(word)) {
+ final HashMap<String, Integer> shortcutTargetsOfWord = shortcutTargets.get(word);
+ shortcutTargetsOfWord.put(shortcutTarget, shortcutProbability);
+ } else {
+ final HashMap<String, Integer> shortcutTargetsOfWord = new HashMap<>();
+ shortcutTargetsOfWord.put(shortcutTarget, shortcutProbability);
+ shortcutTargets.put(word, shortcutTargetsOfWord);
+ }
+ if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+ binaryDictionary.flushWithGC();
+ }
+ }
+
+ for (final String word : words) {
+ final WordProperty wordProperty = binaryDictionary.getWordProperty(word,
+ false /* isBeginningOfSentence */);
+ assertEquals((int)unigramProbabilities.get(word),
+ wordProperty.mProbabilityInfo.mProbability);
+ if (!shortcutTargets.containsKey(word)) {
+ // The word does not have shortcut targets.
+ continue;
+ }
+ assertEquals(shortcutTargets.get(word).size(), wordProperty.mShortcutTargets.size());
+ for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+ final String targetCodePonts = shortcutTarget.mWord;
+ assertEquals((int)shortcutTargets.get(word).get(targetCodePonts),
+ shortcutTarget.getProbability());
+ }
+ }
+ }
+
+ @Test
public void testPossiblyOffensiveAttributeMaintained() {
final BinaryDictionary binaryDictionary =
getEmptyBinaryDictionary(FormatSpec.VERSION403);
- binaryDictionary.addUnigramEntry("ddd", 100, false, true, true, 0);
+ binaryDictionary.addUnigramEntry("ddd", 100, null, Dictionary.NOT_A_PROBABILITY,
+ false, true, true, 0);
WordProperty wordProperty = binaryDictionary.getWordProperty("ddd", false);
assertEquals(true, wordProperty.mIsPossiblyOffensive);
}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
index 2ae5bf5..f423769 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
@@ -16,7 +16,9 @@
package com.android.inputmethod.latin.makedict;
+import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
@@ -90,6 +92,38 @@
}
/**
+ * Compute the size of a shortcut in bytes.
+ */
+ private static int getShortcutSize(final WeightedString shortcut,
+ final HashMap<Integer, Integer> codePointToOneByteCodeMap) {
+ int size = FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE;
+ final String word = shortcut.mWord;
+ final int length = word.length();
+ for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
+ final int codePoint = word.codePointAt(i);
+ size += CharEncoding.getCharSize(codePoint, codePointToOneByteCodeMap);
+ }
+ size += FormatSpec.PTNODE_TERMINATOR_SIZE;
+ return size;
+ }
+
+ /**
+ * Compute the size of a shortcut list in bytes.
+ *
+ * This is known in advance and does not change according to position in the file
+ * like address lists do.
+ */
+ static int getShortcutListSize(final ArrayList<WeightedString> shortcutList,
+ final HashMap<Integer, Integer> codePointToOneByteCodeMap) {
+ if (null == shortcutList || shortcutList.isEmpty()) return 0;
+ int size = FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE;
+ for (final WeightedString shortcut : shortcutList) {
+ size += getShortcutSize(shortcut, codePointToOneByteCodeMap);
+ }
+ return size;
+ }
+
+ /**
* Compute the maximum size of a PtNode, assuming 3-byte addresses for everything.
*
* @param ptNode the PtNode to compute the size of.
@@ -103,6 +137,8 @@
size += FormatSpec.PTNODE_FREQUENCY_SIZE;
}
size += FormatSpec.PTNODE_MAX_ADDRESS_SIZE; // For children address
+ // TODO: Use codePointToOneByteCodeMap for shortcuts.
+ size += getShortcutListSize(ptNode.mShortcutTargets, null /* codePointToOneByteCodeMap */);
if (null != ptNode.mBigrams) {
size += (FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE
+ FormatSpec.PTNODE_ATTRIBUTE_MAX_ADDRESS_SIZE)
@@ -205,6 +241,27 @@
}
}
+ @UsedForTesting
+ static void writeUIntToDictBuffer(final DictBuffer dictBuffer, final int value,
+ final int size) {
+ switch(size) {
+ case 4:
+ dictBuffer.put((byte) ((value >> 24) & 0xFF));
+ /* fall through */
+ case 3:
+ dictBuffer.put((byte) ((value >> 16) & 0xFF));
+ /* fall through */
+ case 2:
+ dictBuffer.put((byte) ((value >> 8) & 0xFF));
+ /* fall through */
+ case 1:
+ dictBuffer.put((byte) (value & 0xFF));
+ break;
+ default:
+ /* nop */
+ }
+ }
+
// End utility methods
// This method is responsible for finding a nice ordering of the nodes that favors run-time
@@ -334,6 +391,9 @@
nodeSize += getByteSize(getOffsetToTargetNodeArrayDuringUpdate(ptNodeArray,
nodeSize + size, ptNode.mChildren));
}
+ // TODO: Use codePointToOneByteCodeMap for shortcuts.
+ nodeSize += getShortcutListSize(ptNode.mShortcutTargets,
+ null /* codePointToOneByteCodeMap */);
if (null != ptNode.mBigrams) {
for (WeightedString bigram : ptNode.mBigrams) {
final int offset = getOffsetToTargetPtNodeDuringUpdate(ptNodeArray,
@@ -508,13 +568,14 @@
* @param hasMultipleChars whether the PtNode has multiple chars.
* @param isTerminal whether the PtNode is terminal.
* @param childrenAddressSize the size of a children address.
+ * @param hasShortcuts whether the PtNode has shortcuts.
* @param hasBigrams whether the PtNode has bigrams.
* @param isNotAWord whether the PtNode is not a word.
* @param isPossiblyOffensive whether the PtNode is a possibly offensive entry.
* @return the flags
*/
static int makePtNodeFlags(final boolean hasMultipleChars, final boolean isTerminal,
- final int childrenAddressSize, final boolean hasBigrams,
+ final int childrenAddressSize, final boolean hasShortcuts, final boolean hasBigrams,
final boolean isNotAWord, final boolean isPossiblyOffensive) {
byte flags = 0;
if (hasMultipleChars) flags |= FormatSpec.FLAG_HAS_MULTIPLE_CHARS;
@@ -535,6 +596,7 @@
default:
throw new RuntimeException("Node with a strange address");
}
+ if (hasShortcuts) flags |= FormatSpec.FLAG_HAS_SHORTCUT_TARGETS;
if (hasBigrams) flags |= FormatSpec.FLAG_HAS_BIGRAMS;
if (isNotAWord) flags |= FormatSpec.FLAG_IS_NOT_A_WORD;
if (isPossiblyOffensive) flags |= FormatSpec.FLAG_IS_POSSIBLY_OFFENSIVE;
@@ -544,6 +606,7 @@
/* package */ static byte makePtNodeFlags(final PtNode node, final int childrenOffset) {
return (byte) makePtNodeFlags(node.mChars.length > 1, node.isTerminal(),
getByteSize(childrenOffset),
+ node.mShortcutTargets != null && !node.mShortcutTargets.isEmpty(),
node.mBigrams != null && !node.mBigrams.isEmpty(),
node.mIsNotAWord, node.mIsPossiblyOffensive);
}
@@ -558,7 +621,7 @@
* @param word the second bigram, for debugging purposes
* @return the flags
*/
- /* package */ static int makeBigramFlags(final boolean more, final int offset,
+ /* package */ static final int makeBigramFlags(final boolean more, final int offset,
final int bigramFrequency, final int unigramFrequency, final String word) {
int bigramFlags = (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
+ (offset < 0 ? FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE : 0);
@@ -627,7 +690,19 @@
return discretizedFrequency > 0 ? discretizedFrequency : 0;
}
- /* package */ static int getChildrenPosition(final PtNode ptNode,
+ /**
+ * Makes the flag value for a shortcut.
+ *
+ * @param more whether there are more attributes after this one.
+ * @param frequency the frequency of the attribute, 0..15
+ * @return the flags
+ */
+ static final int makeShortcutFlags(final boolean more, final int frequency) {
+ return (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
+ + (frequency & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY);
+ }
+
+ /* package */ static final int getChildrenPosition(final PtNode ptNode,
final HashMap<Integer, Integer> codePointToOneByteCodeMap) {
int positionOfChildrenPosField = ptNode.mCachedAddressAfterUpdate
+ getNodeHeaderSize(ptNode, codePointToOneByteCodeMap);
diff --git a/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
index 2bed44d..c97e886 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
@@ -82,6 +82,7 @@
public static final class PtNode {
private static final int NOT_A_TERMINAL = -1;
final int mChars[];
+ ArrayList<WeightedString> mShortcutTargets;
ArrayList<WeightedString> mBigrams;
// null == mProbabilityInfo indicates this is not a terminal.
ProbabilityInfo mProbabilityInfo;
@@ -99,23 +100,26 @@
int mCachedAddressBeforeUpdate; // The address of this PtNode (before update)
int mCachedAddressAfterUpdate; // The address of this PtNode (after update)
- public PtNode(final int[] chars, final ArrayList<WeightedString> bigrams,
- final ProbabilityInfo probabilityInfo, final boolean isNotAWord,
- final boolean isPossiblyOffensive) {
+ public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
+ final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo,
+ final boolean isNotAWord, final boolean isPossiblyOffensive) {
mChars = chars;
mProbabilityInfo = probabilityInfo;
mTerminalId = probabilityInfo == null ? NOT_A_TERMINAL : probabilityInfo.mProbability;
+ mShortcutTargets = shortcutTargets;
mBigrams = bigrams;
mChildren = null;
mIsNotAWord = isNotAWord;
mIsPossiblyOffensive = isPossiblyOffensive;
}
- public PtNode(final int[] chars, final ArrayList<WeightedString> bigrams,
- final ProbabilityInfo probabilityInfo, final boolean isNotAWord,
- final boolean isPossiblyOffensive, final PtNodeArray children) {
+ public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
+ final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo,
+ final boolean isNotAWord, final boolean isPossiblyOffensive,
+ final PtNodeArray children) {
mChars = chars;
mProbabilityInfo = probabilityInfo;
+ mShortcutTargets = shortcutTargets;
mBigrams = bigrams;
mChildren = children;
mIsNotAWord = isNotAWord;
@@ -149,6 +153,14 @@
return mIsPossiblyOffensive;
}
+ public ArrayList<WeightedString> getShortcutTargets() {
+ // We don't want write permission to escape outside the package, so we return a copy
+ if (null == mShortcutTargets) return null;
+ final ArrayList<WeightedString> copyOfShortcutTargets =
+ new ArrayList<>(mShortcutTargets);
+ return copyOfShortcutTargets;
+ }
+
public ArrayList<WeightedString> getBigrams() {
// We don't want write permission to escape outside the package, so we return a copy
if (null == mBigrams) return null;
@@ -179,6 +191,24 @@
}
/**
+ * Gets the shortcut target for the given word. Returns null if the word is not in the
+ * shortcut list.
+ */
+ public WeightedString getShortcut(final String word) {
+ // TODO: Don't do a linear search
+ if (mShortcutTargets != null) {
+ final int size = mShortcutTargets.size();
+ for (int i = 0; i < size; ++i) {
+ WeightedString shortcut = mShortcutTargets.get(i);
+ if (shortcut.mWord.equals(word)) {
+ return shortcut;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
* Gets the bigram for the given word.
* Returns null if the word is not in the bigrams list.
*/
@@ -202,9 +232,27 @@
* updated if they are higher than the existing ones.
*/
void update(final ProbabilityInfo probabilityInfo,
+ final ArrayList<WeightedString> shortcutTargets,
final ArrayList<WeightedString> bigrams,
final boolean isNotAWord, final boolean isPossiblyOffensive) {
mProbabilityInfo = ProbabilityInfo.max(mProbabilityInfo, probabilityInfo);
+ if (shortcutTargets != null) {
+ if (mShortcutTargets == null) {
+ mShortcutTargets = shortcutTargets;
+ } else {
+ final int size = shortcutTargets.size();
+ for (int i = 0; i < size; ++i) {
+ final WeightedString shortcut = shortcutTargets.get(i);
+ final WeightedString existingShortcut = getShortcut(shortcut.mWord);
+ if (existingShortcut == null) {
+ mShortcutTargets.add(shortcut);
+ } else {
+ existingShortcut.mProbabilityInfo = ProbabilityInfo.max(
+ existingShortcut.mProbabilityInfo, shortcut.mProbabilityInfo);
+ }
+ }
+ }
+ }
if (bigrams != null) {
if (mBigrams == null) {
mBigrams = bigrams;
@@ -264,16 +312,19 @@
* Helper method to add a word as a string.
*
* This method adds a word to the dictionary with the given frequency. Optional
- * lists of bigrams can be passed here. For each word inside,
+ * lists of bigrams and shortcuts can be passed here. For each word inside,
* they will be added to the dictionary as necessary.
- * @param word the word to add.
+ *
+ * @param word the word to add.
* @param probabilityInfo probability information of the word.
+ * @param shortcutTargets a list of shortcut targets for this word, or null.
* @param isNotAWord true if this should not be considered a word (e.g. shortcut only)
* @param isPossiblyOffensive true if this word is possibly offensive
*/
public void add(final String word, final ProbabilityInfo probabilityInfo,
- final boolean isNotAWord, final boolean isPossiblyOffensive) {
- add(getCodePoints(word), probabilityInfo, isNotAWord, isPossiblyOffensive);
+ final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord,
+ final boolean isPossiblyOffensive) {
+ add(getCodePoints(word), probabilityInfo, shortcutTargets, isNotAWord, isPossiblyOffensive);
}
/**
@@ -307,7 +358,7 @@
if (ptNode0 != null) {
final PtNode ptNode1 = findWordInTree(mRootNodeArray, word1);
if (ptNode1 == null) {
- add(getCodePoints(word1), new ProbabilityInfo(0), false /* isNotAWord */,
+ add(getCodePoints(word1), new ProbabilityInfo(0), null, false /* isNotAWord */,
false /* isPossiblyOffensive */);
// The PtNode for the first word may have moved by the above insertion,
// if word1 and word2 share a common stem that happens not to have been
@@ -325,12 +376,15 @@
*
* The shortcuts, if any, have to be in the dictionary already. If they aren't,
* an exception is thrown.
- * @param word the word, as an int array.
+ *
+ * @param word the word, as an int array.
* @param probabilityInfo the probability information of the word.
- * @param isNotAWord true if this is not a word for spellchecking purposes (shortcut only or so)
+ * @param shortcutTargets an optional list of shortcut targets for this word (null if none).
+ * @param isNotAWord true if this is not a word for spellcheking purposes (shortcut only or so)
* @param isPossiblyOffensive true if this word is possibly offensive
*/
private void add(final int[] word, final ProbabilityInfo probabilityInfo,
+ final ArrayList<WeightedString> shortcutTargets,
final boolean isNotAWord, final boolean isPossiblyOffensive) {
assert(probabilityInfo.mProbability <= FormatSpec.MAX_TERMINAL_FREQUENCY);
if (word.length >= DecoderSpecificConstants.DICTIONARY_MAX_WORD_LENGTH) {
@@ -360,7 +414,7 @@
// No node at this point to accept the word. Create one.
final int insertionIndex = findInsertionIndex(currentNodeArray, word[charIndex]);
final PtNode newPtNode = new PtNode(Arrays.copyOfRange(word, charIndex, word.length),
- null /* bigrams */, probabilityInfo, isNotAWord,
+ shortcutTargets, null /* bigrams */, probabilityInfo, isNotAWord,
isPossiblyOffensive);
currentNodeArray.mData.add(insertionIndex, newPtNode);
if (DBG) checkStack(currentNodeArray);
@@ -371,14 +425,14 @@
// The new word is a prefix of an existing word, but the node on which it
// should end already exists as is. Since the old PtNode was not a terminal,
// make it one by filling in its frequency and other attributes
- currentPtNode.update(probabilityInfo, null, isNotAWord,
+ currentPtNode.update(probabilityInfo, shortcutTargets, null, isNotAWord,
isPossiblyOffensive);
} else {
// The new word matches the full old word and extends past it.
// We only have to create a new node and add it to the end of this.
final PtNode newNode = new PtNode(
Arrays.copyOfRange(word, charIndex + differentCharIndex, word.length),
- null /* bigrams */, probabilityInfo,
+ shortcutTargets, null /* bigrams */, probabilityInfo,
isNotAWord, isPossiblyOffensive);
currentPtNode.mChildren = new PtNodeArray();
currentPtNode.mChildren.mData.add(newNode);
@@ -387,7 +441,7 @@
if (0 == differentCharIndex) {
// Exact same word. Update the frequency if higher. This will also add the
// new shortcuts to the existing shortcut list if it already exists.
- currentPtNode.update(probabilityInfo, null,
+ currentPtNode.update(probabilityInfo, shortcutTargets, null,
currentPtNode.mIsNotAWord && isNotAWord,
currentPtNode.mIsPossiblyOffensive || isPossiblyOffensive);
} else {
@@ -396,7 +450,7 @@
PtNodeArray newChildren = new PtNodeArray();
final PtNode newOldWord = new PtNode(
Arrays.copyOfRange(currentPtNode.mChars, differentCharIndex,
- currentPtNode.mChars.length),
+ currentPtNode.mChars.length), currentPtNode.mShortcutTargets,
currentPtNode.mBigrams, currentPtNode.mProbabilityInfo,
currentPtNode.mIsNotAWord, currentPtNode.mIsPossiblyOffensive,
currentPtNode.mChildren);
@@ -406,17 +460,17 @@
if (charIndex + differentCharIndex >= word.length) {
newParent = new PtNode(
Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
- null /* bigrams */, probabilityInfo,
+ shortcutTargets, null /* bigrams */, probabilityInfo,
isNotAWord, isPossiblyOffensive, newChildren);
} else {
newParent = new PtNode(
Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
- null /* bigrams */, null /* probabilityInfo */,
- false /* isNotAWord */, false /* isPossiblyOffensive */,
- newChildren);
+ null /* shortcutTargets */, null /* bigrams */,
+ null /* probabilityInfo */, false /* isNotAWord */,
+ false /* isPossiblyOffensive */, newChildren);
final PtNode newWord = new PtNode(Arrays.copyOfRange(word,
charIndex + differentCharIndex, word.length),
- null /* bigrams */, probabilityInfo,
+ shortcutTargets, null /* bigrams */, probabilityInfo,
isNotAWord, isPossiblyOffensive);
final int addIndex = word[charIndex + differentCharIndex]
> currentPtNode.mChars[differentCharIndex] ? 1 : 0;
@@ -478,7 +532,7 @@
private static int findInsertionIndex(final PtNodeArray nodeArray, int character) {
final ArrayList<PtNode> data = nodeArray.mData;
final PtNode reference = new PtNode(new int[] { character },
- null /* bigrams */, null /* probabilityInfo */,
+ null /* shortcutTargets */, null /* bigrams */, null /* probabilityInfo */,
false /* isNotAWord */, false /* isPossiblyOffensive */);
int result = Collections.binarySearch(data, reference, PTNODE_COMPARATOR);
return result >= 0 ? result : -result - 1;
@@ -615,7 +669,8 @@
}
if (currentPtNode.isTerminal()) {
return new WordProperty(mCurrentString.toString(),
- currentPtNode.mProbabilityInfo, currentPtNode.mBigrams,
+ currentPtNode.mProbabilityInfo,
+ currentPtNode.mShortcutTargets, currentPtNode.mBigrams,
currentPtNode.mIsNotAWord, currentPtNode.mIsPossiblyOffensive);
}
} else {
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
index 746431d..63ea89c 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
@@ -84,7 +84,7 @@
// Insert unigrams into the fusion dictionary.
for (final WordProperty wordProperty : wordProperties) {
fusionDict.add(wordProperty.mWord, wordProperty.mProbabilityInfo,
- wordProperty.mIsNotAWord,
+ wordProperty.mShortcutTargets, wordProperty.mIsNotAWord,
wordProperty.mIsPossiblyOffensive);
}
// Insert bigrams into the fusion dictionary.
diff --git a/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml
index a394a97..1a3ad17 100644
--- a/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml
@@ -18,47 +18,20 @@
*/
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
- U+00E6: "æ" LATIN SMALL LETTER AE
- U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
- U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
- <string name="morekeys_a">á,à,â,ä,æ,ã,å,ā</string>
- <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
- U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
- U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
- <string name="morekeys_e">é,è,ê,ë,ę,ė,ē</string>
- <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
- U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
- <string name="morekeys_i">í,î,ï,ì,į,ī</string>
+ <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE -->
+ <string name="morekeys_a">á</string>
+ <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+ <string name="morekeys_e">é</string>
+ <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE -->
+ <string name="morekeys_i">í</string>
<!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
- U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
- U+0153: "œ" LATIN SMALL LIGATURE OE
- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
- U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
- <string name="morekeys_o">ó,ö,ő,ô,ò,õ,œ,ø,ō</string>
+ U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE -->
+ <string name="morekeys_o">ó,ö,ő</string>
<!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
- <string name="morekeys_u">ú,ü,ű,û,ù,ū</string>
+ U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
+ <string name="morekeys_u">ú,ü,ű</string>
<string name="single_quotes">!text/single_9qm_rqm</string>
<string name="double_quotes">!text/double_9qm_rqm</string>
<string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-lb/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lb/donottranslate-more-keys.xml
new file mode 100644
index 0000000..29f7220
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-lb/donottranslate-more-keys.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2015, The CyanogenMod 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+ U+0040: "@" COMMERCIAL AT
+ U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+ U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+ U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+ U+00E6: "æ" LATIN SMALL LETTER AE
+ U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+ U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+ U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+ <string name="morekeys_a">ä,@,â,à,á,æ,ã,å,ā</string>
+ <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+ U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+ U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+ U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS -->
+ <string name="morekeys_e">é,è,ê,ë</string>
+ <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+ U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+ U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+ U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS -->
+ <string name="morekeys_i">í,ì,î,ï</string>
+ <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+ U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+ U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+ U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+ U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+ U+0153: "œ" LATIN SMALL LIGATURE OE
+ U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+ U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+ <string name="morekeys_o">ö,ô,ò,ó,õ,œ,ø,ō</string>
+ <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+ U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+ U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+ U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+ U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+ <string name="morekeys_u">ü,û,ù,ú,ū</string>
+ <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
+ U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+ U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+ <string name="morekeys_s">ß,ś,š</string>
+ <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+ U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
+ <string name="morekeys_n">ñ,ń</string>
+ <string name="single_quotes">!text/single_9qm_lqm</string>
+ <string name="double_quotes">!text/double_9qm_lqm</string>
+ <string name="single_angle_quotes">!text/single_raqm_laqm</string>
+ <string name="double_angle_quotes">!text/double_raqm_laqm</string>
+</resources>