Merge branch 'main' into scandinavian_language_layouts
This commit is contained in:
commit
f68396d24e
|
@ -44,6 +44,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
setupKeyboardLanguage()
|
||||
setupKeyboardHeightMultiplier()
|
||||
setupShowClipboardContent()
|
||||
setupSentencesCapitalization()
|
||||
setupShowNumbersRow()
|
||||
|
||||
updateTextColors(settings_nested_scrollview)
|
||||
|
@ -160,6 +161,15 @@ class SettingsActivity : SimpleActivity() {
|
|||
config.showClipboardContent = settings_show_clipboard_content.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupSentencesCapitalization() {
|
||||
settings_start_sentences_capitalized.isChecked = config.enableSentencesCapitalization
|
||||
settings_start_sentences_capitalized_holder.setOnClickListener {
|
||||
settings_start_sentences_capitalized.toggle()
|
||||
config.enableSentencesCapitalization = settings_start_sentences_capitalized.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupShowNumbersRow() {
|
||||
settings_show_numbers_row.isChecked = config.showNumbersRow
|
||||
settings_show_numbers_row_holder.setOnClickListener {
|
||||
|
|
|
@ -17,6 +17,10 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
get() = prefs.getBoolean(SHOW_POPUP_ON_KEYPRESS, true)
|
||||
set(showPopupOnKeypress) = prefs.edit().putBoolean(SHOW_POPUP_ON_KEYPRESS, showPopupOnKeypress).apply()
|
||||
|
||||
var enableSentencesCapitalization: Boolean
|
||||
get() = prefs.getBoolean(SENTENCES_CAPITALIZATION, true)
|
||||
set(enableCapitalization) = prefs.edit().putBoolean(SENTENCES_CAPITALIZATION, enableCapitalization).apply()
|
||||
|
||||
var showKeyBorders: Boolean
|
||||
get() = prefs.getBoolean(SHOW_KEY_BORDERS, false)
|
||||
set(showKeyBorders) = prefs.edit().putBoolean(SHOW_KEY_BORDERS, showKeyBorders).apply()
|
||||
|
|
|
@ -1,12 +1,61 @@
|
|||
package com.simplemobiletools.keyboard.helpers
|
||||
|
||||
import android.content.Context
|
||||
import androidx.annotation.StringRes
|
||||
import com.simplemobiletools.keyboard.R
|
||||
import com.simplemobiletools.keyboard.extensions.config
|
||||
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SPACE
|
||||
|
||||
const val SHIFT_OFF = 0
|
||||
const val SHIFT_ON_ONE_CHAR = 1
|
||||
const val SHIFT_ON_PERMANENT = 2
|
||||
enum class ShiftState {
|
||||
OFF,
|
||||
ON_ONE_CHAR,
|
||||
ON_PERMANENT;
|
||||
|
||||
companion object {
|
||||
private val endOfSentenceChars: List<Char> = listOf('.', '?', '!')
|
||||
|
||||
fun getDefaultShiftState(context: Context): ShiftState {
|
||||
return when (context.config.enableSentencesCapitalization) {
|
||||
true -> ON_ONE_CHAR
|
||||
else -> OFF
|
||||
}
|
||||
}
|
||||
|
||||
fun getShiftStateForText(context: Context, newText: String?): ShiftState {
|
||||
if (!context.config.enableSentencesCapitalization) {
|
||||
return OFF
|
||||
}
|
||||
|
||||
val twoLastSymbols = newText?.takeLast(2)
|
||||
return when {
|
||||
shouldCapitalizeSentence(previousChar = twoLastSymbols?.getOrNull(0), currentChar = twoLastSymbols?.getOrNull(1)) -> {
|
||||
ON_ONE_CHAR
|
||||
}
|
||||
else -> {
|
||||
OFF
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getCapitalizationOnDelete(context: Context, text: CharSequence?): ShiftState {
|
||||
if (!context.config.enableSentencesCapitalization) {
|
||||
return OFF
|
||||
}
|
||||
|
||||
return if (text.isNullOrEmpty() || shouldCapitalizeSentence(currentChar = text.last(), previousChar = text.getOrNull(text.lastIndex - 1))) {
|
||||
ON_ONE_CHAR
|
||||
} else {
|
||||
OFF
|
||||
}
|
||||
}
|
||||
|
||||
private fun shouldCapitalizeSentence(previousChar: Char?, currentChar: Char?): Boolean {
|
||||
if (previousChar == null || currentChar == null) {
|
||||
return false
|
||||
}
|
||||
|
||||
return currentChar.code == KEYCODE_SPACE && endOfSentenceChars.contains(previousChar)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// limit the count of alternative characters that show up at long pressing a key
|
||||
const val MAX_KEYS_PER_MINI_ROW = 9
|
||||
|
@ -15,6 +64,7 @@ const val MAX_KEYS_PER_MINI_ROW = 9
|
|||
const val VIBRATE_ON_KEYPRESS = "vibrate_on_keypress"
|
||||
const val SHOW_POPUP_ON_KEYPRESS = "show_popup_on_keypress"
|
||||
const val SHOW_KEY_BORDERS = "show_key_borders"
|
||||
const val SENTENCES_CAPITALIZATION = "sentences_capitalization"
|
||||
const val LAST_EXPORTED_CLIPS_FOLDER = "last_exported_clips_folder"
|
||||
const val KEYBOARD_LANGUAGE = "keyboard_language"
|
||||
const val HEIGHT_MULTIPLIER = "height_multiplier"
|
||||
|
|
|
@ -34,7 +34,7 @@ class MyKeyboard {
|
|||
var mKeyboardHeightMultiplier: Float = 1F
|
||||
|
||||
/** Is the keyboard in the shifted state */
|
||||
var mShiftState = SHIFT_OFF
|
||||
var mShiftState = ShiftState.OFF
|
||||
|
||||
/** Total height of the keyboard, including the padding and keys */
|
||||
var mHeight = 0
|
||||
|
@ -201,8 +201,14 @@ class MyKeyboard {
|
|||
|
||||
a.recycle()
|
||||
a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.MyKeyboard_Key)
|
||||
|
||||
label = a.getText(R.styleable.MyKeyboard_Key_keyLabel) ?: ""
|
||||
code = a.getInt(R.styleable.MyKeyboard_Key_code, 0)
|
||||
|
||||
if (label.isNotEmpty() && code == 0) {
|
||||
code = label[0].code
|
||||
}
|
||||
|
||||
popupCharacters = a.getText(R.styleable.MyKeyboard_Key_popupCharacters)
|
||||
popupResId = a.getResourceId(R.styleable.MyKeyboard_Key_popupKeyboard, 0)
|
||||
repeatable = a.getBoolean(R.styleable.MyKeyboard_Key_isRepeatable, false)
|
||||
|
@ -213,12 +219,9 @@ class MyKeyboard {
|
|||
secondaryIcon = a.getDrawable(R.styleable.MyKeyboard_Key_secondaryKeyIcon)
|
||||
secondaryIcon?.setBounds(0, 0, secondaryIcon!!.intrinsicWidth, secondaryIcon!!.intrinsicHeight)
|
||||
|
||||
label = a.getText(R.styleable.MyKeyboard_Key_keyLabel) ?: ""
|
||||
topSmallNumber = a.getString(R.styleable.MyKeyboard_Key_topSmallNumber) ?: ""
|
||||
|
||||
if (label.isNotEmpty() && code != KEYCODE_MODE_CHANGE && code != KEYCODE_SHIFT) {
|
||||
code = label[0].code
|
||||
}
|
||||
|
||||
a.recycle()
|
||||
}
|
||||
|
||||
|
@ -255,13 +258,14 @@ class MyKeyboard {
|
|||
* @param enterKeyType determines what icon should we show on Enter key
|
||||
*/
|
||||
@JvmOverloads
|
||||
constructor(context: Context, @XmlRes xmlLayoutResId: Int, enterKeyType: Int) {
|
||||
constructor(context: Context, @XmlRes xmlLayoutResId: Int, enterKeyType: Int, shiftState: ShiftState = ShiftState.OFF) {
|
||||
mDisplayWidth = context.resources.displayMetrics.widthPixels
|
||||
mDefaultHorizontalGap = 0
|
||||
mDefaultWidth = mDisplayWidth / 10
|
||||
mDefaultHeight = mDefaultWidth
|
||||
mKeyboardHeightMultiplier = getKeyboardHeightMultiplier(context.config.keyboardHeightMultiplier)
|
||||
mKeys = ArrayList()
|
||||
mShiftState = shiftState
|
||||
mEnterKeyType = enterKeyType
|
||||
loadKeyboard(context, context.resources.getXml(xmlLayoutResId))
|
||||
}
|
||||
|
@ -312,12 +316,11 @@ class MyKeyboard {
|
|||
mRows.add(row)
|
||||
}
|
||||
|
||||
fun setShifted(shiftState: Int): Boolean {
|
||||
fun setShifted(shiftState: ShiftState): Boolean {
|
||||
if (this.mShiftState != shiftState) {
|
||||
this.mShiftState = shiftState
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,8 @@ import com.simplemobiletools.keyboard.R
|
|||
import com.simplemobiletools.keyboard.extensions.config
|
||||
import com.simplemobiletools.keyboard.helpers.*
|
||||
import com.simplemobiletools.keyboard.views.MyKeyboardView
|
||||
import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.*
|
||||
import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.keyboard_holder
|
||||
import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.keyboard_view
|
||||
|
||||
// based on https://www.androidauthority.com/lets-build-custom-keyboard-android-832362/
|
||||
class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionListener, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
@ -41,7 +42,6 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
|
||||
override fun onInitializeInterface() {
|
||||
super.onInitializeInterface()
|
||||
keyboard = MyKeyboard(this, getKeyboardLayoutXML(), enterKeyType)
|
||||
getSharedPrefs().registerOnSharedPreferenceChangeListener(this)
|
||||
}
|
||||
|
||||
|
@ -65,8 +65,7 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
super.onStartInput(attribute, restarting)
|
||||
inputTypeClass = attribute!!.inputType and TYPE_MASK_CLASS
|
||||
enterKeyType = attribute.imeOptions and (IME_MASK_ACTION or IME_FLAG_NO_ENTER_ACTION)
|
||||
|
||||
keyboard = getKeyBoard()
|
||||
keyboard = createNewKeyboard()
|
||||
keyboardView?.setKeyboard(keyboard!!)
|
||||
keyboardView?.setEditorInfo(attribute)
|
||||
updateShiftKeyState()
|
||||
|
@ -75,9 +74,9 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
private fun updateShiftKeyState() {
|
||||
if (keyboardMode == KEYBOARD_LETTERS) {
|
||||
val editorInfo = currentInputEditorInfo
|
||||
if (editorInfo != null && editorInfo.inputType != InputType.TYPE_NULL && keyboard?.mShiftState != SHIFT_ON_PERMANENT) {
|
||||
if (editorInfo != null && editorInfo.inputType != InputType.TYPE_NULL && keyboard?.mShiftState != ShiftState.ON_PERMANENT) {
|
||||
if (currentInputConnection.getCursorCapsMode(editorInfo.inputType) != 0) {
|
||||
keyboard?.setShifted(SHIFT_ON_ONE_CHAR)
|
||||
keyboard?.setShifted(ShiftState.ON_ONE_CHAR)
|
||||
keyboardView?.invalidateAllKeys()
|
||||
}
|
||||
}
|
||||
|
@ -96,8 +95,10 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
|
||||
when (code) {
|
||||
MyKeyboard.KEYCODE_DELETE -> {
|
||||
if (keyboard!!.mShiftState == SHIFT_ON_ONE_CHAR) {
|
||||
keyboard!!.mShiftState = SHIFT_OFF
|
||||
|
||||
if (keyboard!!.mShiftState != ShiftState.ON_PERMANENT) {
|
||||
val extractedText = inputConnection.getTextBeforeCursor(3, 0)?.dropLast(1)
|
||||
keyboard!!.setShifted(ShiftState.getCapitalizationOnDelete(context = this, text = extractedText))
|
||||
}
|
||||
|
||||
val selectedText = inputConnection.getSelectedText(0)
|
||||
|
@ -109,13 +110,14 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
}
|
||||
keyboardView!!.invalidateAllKeys()
|
||||
}
|
||||
|
||||
MyKeyboard.KEYCODE_SHIFT -> {
|
||||
if (keyboardMode == KEYBOARD_LETTERS) {
|
||||
when {
|
||||
keyboard!!.mShiftState == SHIFT_ON_PERMANENT -> keyboard!!.mShiftState = SHIFT_OFF
|
||||
System.currentTimeMillis() - lastShiftPressTS < SHIFT_PERM_TOGGLE_SPEED -> keyboard!!.mShiftState = SHIFT_ON_PERMANENT
|
||||
keyboard!!.mShiftState == SHIFT_ON_ONE_CHAR -> keyboard!!.mShiftState = SHIFT_OFF
|
||||
keyboard!!.mShiftState == SHIFT_OFF -> keyboard!!.mShiftState = SHIFT_ON_ONE_CHAR
|
||||
keyboard!!.mShiftState == ShiftState.ON_PERMANENT -> keyboard!!.mShiftState = ShiftState.OFF
|
||||
System.currentTimeMillis() - lastShiftPressTS < SHIFT_PERM_TOGGLE_SPEED -> keyboard!!.mShiftState = ShiftState.ON_PERMANENT
|
||||
keyboard!!.mShiftState == ShiftState.ON_ONE_CHAR -> keyboard!!.mShiftState = ShiftState.OFF
|
||||
keyboard!!.mShiftState == ShiftState.OFF -> keyboard!!.mShiftState = ShiftState.ON_ONE_CHAR
|
||||
}
|
||||
|
||||
lastShiftPressTS = System.currentTimeMillis()
|
||||
|
@ -132,6 +134,7 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
}
|
||||
keyboardView!!.invalidateAllKeys()
|
||||
}
|
||||
|
||||
MyKeyboard.KEYCODE_ENTER -> {
|
||||
val imeOptionsActionId = getImeOptionsActionId()
|
||||
if (imeOptionsActionId != IME_ACTION_NONE) {
|
||||
|
@ -139,8 +142,14 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
} else {
|
||||
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER))
|
||||
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER))
|
||||
|
||||
if (config.enableSentencesCapitalization) {
|
||||
keyboard!!.setShifted(ShiftState.ON_ONE_CHAR)
|
||||
keyboardView!!.invalidateAllKeys()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MyKeyboard.KEYCODE_MODE_CHANGE -> {
|
||||
val keyboardXml = if (keyboardMode == KEYBOARD_LETTERS) {
|
||||
keyboardMode = KEYBOARD_SYMBOLS
|
||||
|
@ -152,12 +161,16 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
keyboard = MyKeyboard(this, keyboardXml, enterKeyType)
|
||||
keyboardView!!.setKeyboard(keyboard!!)
|
||||
}
|
||||
|
||||
MyKeyboard.KEYCODE_EMOJI -> {
|
||||
keyboardView?.openEmojiPalette()
|
||||
}
|
||||
|
||||
else -> {
|
||||
var codeChar = code.toChar()
|
||||
if (Character.isLetter(codeChar) && keyboard!!.mShiftState > SHIFT_OFF) {
|
||||
val originalText = inputConnection.getExtractedText(ExtractedTextRequest(), 0)?.text ?: return
|
||||
|
||||
if (Character.isLetter(codeChar) && keyboard!!.mShiftState > ShiftState.OFF) {
|
||||
codeChar = Character.toUpperCase(codeChar)
|
||||
}
|
||||
|
||||
|
@ -165,35 +178,41 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
// However, avoid doing that in cases when the EditText for example requires numbers as the input.
|
||||
// We can detect that by the text not changing on pressing Space.
|
||||
if (keyboardMode != KEYBOARD_LETTERS && code == MyKeyboard.KEYCODE_SPACE) {
|
||||
val originalText = inputConnection.getExtractedText(ExtractedTextRequest(), 0)?.text ?: return
|
||||
inputConnection.commitText(codeChar.toString(), 1)
|
||||
val newText = inputConnection.getExtractedText(ExtractedTextRequest(), 0)?.text
|
||||
switchToLetters = originalText != newText
|
||||
if (originalText != newText) {
|
||||
switchToLetters = true
|
||||
}
|
||||
} else {
|
||||
inputConnection.commitText(codeChar.toString(), 1)
|
||||
}
|
||||
|
||||
if (keyboard!!.mShiftState == SHIFT_ON_ONE_CHAR && keyboardMode == KEYBOARD_LETTERS) {
|
||||
keyboard!!.mShiftState = SHIFT_OFF
|
||||
if (keyboardMode == KEYBOARD_LETTERS && keyboard!!.mShiftState != ShiftState.ON_PERMANENT) {
|
||||
keyboard!!.setShifted(ShiftState.getShiftStateForText(this, newText = "$originalText$codeChar"))
|
||||
keyboardView!!.invalidateAllKeys()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (code != MyKeyboard.KEYCODE_SHIFT) {
|
||||
if (code != MyKeyboard.KEYCODE_SHIFT && config.enableSentencesCapitalization) {
|
||||
updateShiftKeyState()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onActionUp() {
|
||||
if (switchToLetters) {
|
||||
// TODO: Change keyboardMode to enum class
|
||||
keyboardMode = KEYBOARD_LETTERS
|
||||
keyboard = MyKeyboard(this, getKeyboardLayoutXML(), enterKeyType)
|
||||
val text = currentInputConnection?.getExtractedText(ExtractedTextRequest(), 0)?.text
|
||||
val newShiftState = ShiftState.getShiftStateForText(this, text?.toString().orEmpty())
|
||||
|
||||
keyboard = MyKeyboard(this, getKeyboardLayoutXML(), enterKeyType, shiftState = newShiftState)
|
||||
|
||||
val editorInfo = currentInputEditorInfo
|
||||
if (editorInfo != null && editorInfo.inputType != InputType.TYPE_NULL && keyboard?.mShiftState != SHIFT_ON_PERMANENT) {
|
||||
if (editorInfo != null && editorInfo.inputType != InputType.TYPE_NULL && keyboard?.mShiftState != ShiftState.ON_PERMANENT) {
|
||||
if (currentInputConnection.getCursorCapsMode(editorInfo.inputType) != 0) {
|
||||
keyboard?.setShifted(SHIFT_ON_ONE_CHAR)
|
||||
keyboard?.setShifted(ShiftState.ON_ONE_CHAR)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -215,32 +234,37 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||
}
|
||||
|
||||
override fun reloadKeyboard() {
|
||||
val keyboard = getKeyBoard()
|
||||
val keyboard = createNewKeyboard()
|
||||
this.keyboard = keyboard
|
||||
keyboardView?.setKeyboard(keyboard)
|
||||
}
|
||||
|
||||
private fun getKeyBoard(): MyKeyboard {
|
||||
private fun createNewKeyboard(): MyKeyboard {
|
||||
val keyboardXml = when (inputTypeClass) {
|
||||
TYPE_CLASS_NUMBER -> {
|
||||
keyboardMode = KEYBOARD_NUMBERS
|
||||
R.xml.keys_numbers
|
||||
}
|
||||
|
||||
TYPE_CLASS_PHONE -> {
|
||||
keyboardMode = KEYBOARD_PHONE
|
||||
R.xml.keys_phone
|
||||
}
|
||||
|
||||
TYPE_CLASS_DATETIME -> {
|
||||
keyboardMode = KEYBOARD_SYMBOLS
|
||||
R.xml.keys_symbols
|
||||
}
|
||||
|
||||
else -> {
|
||||
keyboardMode = KEYBOARD_LETTERS
|
||||
getKeyboardLayoutXML()
|
||||
}
|
||||
}
|
||||
|
||||
return MyKeyboard(this, keyboardXml, enterKeyType)
|
||||
return MyKeyboard(
|
||||
context = this, xmlLayoutResId = keyboardXml, enterKeyType = enterKeyType, shiftState = ShiftState.getDefaultShiftState(this)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onUpdateSelection(oldSelStart: Int, oldSelEnd: Int, newSelStart: Int, newSelEnd: Int, candidatesStart: Int, candidatesEnd: Int) {
|
||||
|
|
|
@ -455,7 +455,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||
* @param shifted whether or not to enable the state of the shift key
|
||||
* @return true if the shift key state changed, false if there was no change
|
||||
*/
|
||||
private fun setShifted(shiftState: Int) {
|
||||
private fun setShifted(shiftState: ShiftState) {
|
||||
if (mKeyboard?.setShifted(shiftState) == true) {
|
||||
invalidateAllKeys()
|
||||
}
|
||||
|
@ -466,7 +466,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||
* @return true if the shift is in a pressed state, false otherwise
|
||||
*/
|
||||
private fun isShifted(): Boolean {
|
||||
return (mKeyboard?.mShiftState ?: SHIFT_OFF) > SHIFT_OFF
|
||||
return (mKeyboard?.mShiftState ?: ShiftState.OFF) > ShiftState.OFF
|
||||
}
|
||||
|
||||
private fun setPopupOffset(x: Int, y: Int) {
|
||||
|
@ -479,7 +479,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||
|
||||
private fun adjustCase(label: CharSequence): CharSequence? {
|
||||
var newLabel: CharSequence? = label
|
||||
if (newLabel != null && newLabel.isNotEmpty() && mKeyboard!!.mShiftState > SHIFT_OFF && newLabel.length < 3 && Character.isLowerCase(newLabel[0])) {
|
||||
if (newLabel != null && newLabel.isNotEmpty() && mKeyboard!!.mShiftState != ShiftState.OFF && newLabel.length < 3 && Character.isLowerCase(newLabel[0])) {
|
||||
newLabel = newLabel.toString().uppercase(Locale.getDefault())
|
||||
}
|
||||
return newLabel
|
||||
|
@ -569,6 +569,8 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||
for (i in 0 until keyCount) {
|
||||
val key = keys[i]
|
||||
val code = key.code
|
||||
|
||||
// TODO: Space key background on a KEYBOARD_PHONE should not be applied
|
||||
setupKeyBackground(key, code, canvas)
|
||||
|
||||
// Switch the character to uppercase if shift is pressed
|
||||
|
@ -602,8 +604,8 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||
} else if (key.icon != null && mKeyboard != null) {
|
||||
if (code == KEYCODE_SHIFT) {
|
||||
val drawableId = when (mKeyboard!!.mShiftState) {
|
||||
SHIFT_OFF -> R.drawable.ic_caps_outline_vector
|
||||
SHIFT_ON_ONE_CHAR -> R.drawable.ic_caps_vector
|
||||
ShiftState.OFF -> R.drawable.ic_caps_outline_vector
|
||||
ShiftState.ON_ONE_CHAR -> R.drawable.ic_caps_vector
|
||||
else -> R.drawable.ic_caps_underlined_vector
|
||||
}
|
||||
key.icon = resources.getDrawable(drawableId)
|
||||
|
@ -674,9 +676,9 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||
}
|
||||
|
||||
private fun setupKeyBackground(key: MyKeyboard.Key, keyCode: Int, canvas: Canvas) {
|
||||
val keyBackground = when (keyCode) {
|
||||
KEYCODE_SPACE -> getSpaceKeyBackground()
|
||||
KEYCODE_ENTER -> getEnterKeyBackground()
|
||||
val keyBackground = when {
|
||||
keyCode == KEYCODE_SPACE && key.label.isBlank() -> getSpaceKeyBackground()
|
||||
keyCode == KEYCODE_ENTER -> getEnterKeyBackground()
|
||||
else -> mKeyBackground
|
||||
}
|
||||
|
||||
|
@ -1129,7 +1131,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
|||
mMiniKeyboardSelectedKeyIndex = selectedKeyIndex
|
||||
mMiniKeyboard!!.invalidateAllKeys()
|
||||
|
||||
val miniShiftStatus = if (isShifted()) SHIFT_ON_PERMANENT else SHIFT_OFF
|
||||
val miniShiftStatus = if (isShifted()) ShiftState.ON_PERMANENT else ShiftState.OFF
|
||||
mMiniKeyboard!!.setShifted(miniShiftStatus)
|
||||
mPopupKeyboard.contentView = mMiniKeyboardContainer
|
||||
mPopupKeyboard.width = mMiniKeyboardContainer!!.measuredWidth
|
||||
|
|
|
@ -41,13 +41,32 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyEditText
|
||||
android:id="@+id/text_edittext"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/change_keyboard_holder"
|
||||
android:layout_margin="@dimen/activity_margin" />
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyEditText
|
||||
android:id="@+id/text_edittext"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/activity_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:layout_marginEnd="@dimen/activity_margin"
|
||||
android:layout_marginBottom="@dimen/activity_margin" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyEditText
|
||||
android:id="@+id/text_editphone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/activity_margin"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:layout_marginEnd="@dimen/activity_margin"
|
||||
android:layout_marginBottom="@dimen/activity_margin"
|
||||
android:inputType="phone" />
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
|
@ -190,6 +190,7 @@
|
|||
android:text="@string/show_clipboard_content" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_numbers_row_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
|
@ -205,6 +206,21 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_start_sentences_capitalized_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_start_sentences_capitalized"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/start_sentences_capitalized" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_keyboard_language_holder"
|
||||
style="@style/SettingsHolderTextViewStyle"
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">ارتفاع لوحة المفاتيح</string>
|
||||
<string name="show_key_borders">إظهار حدود المفاتيح</string>
|
||||
<string name="show_numbers_row">إظهار الأرقام في صف منفصل</string>
|
||||
<string name="start_sentences_capitalized">بدء الجمل بحرف كبير</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">الرموز التعبيرية</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Вышыня клавіятуры</string>
|
||||
<string name="show_key_borders">Паказаць контуры клавіш</string>
|
||||
<string name="show_numbers_row">Паказаць лічбы ў асобным радку</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Эмодзі</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Височина на клавиатурата</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Емоджита</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Alçada del teclat</string>
|
||||
<string name="show_key_borders">Mostra les vores de les tecles</string>
|
||||
<string name="show_numbers_row">Mostra els números en una fila separada</string>
|
||||
<string name="start_sentences_capitalized">Comença les frases amb una lletra majúscula</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">قەبارەی تەختەکلیل</string>
|
||||
<string name="show_key_borders">لێواری دوگمەکان</string>
|
||||
<string name="show_numbers_row">پیشاندانی لیستی ژمارەکان بەجیا</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">خەندەکان</string>
|
||||
</resources>
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Výška klávesnice</string>
|
||||
<string name="show_key_borders">Zobrazit ohraničení kláves</string>
|
||||
<string name="show_numbers_row">Zobrazit čísla na samostatném řádku</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emotikony</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Höhe der Tastatur</string>
|
||||
<string name="show_key_borders">Tastenränder anzeigen</string>
|
||||
<string name="show_numbers_row">Zahlen in einer separaten Zeile anzeigen</string>
|
||||
<string name="start_sentences_capitalized">Sätze mit einem Großbuchstaben beginnen</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Ύψος πληκτρολογίου</string>
|
||||
<string name="show_key_borders">Εμφάνιση ορίων πλήκτρου</string>
|
||||
<string name="show_numbers_row">Εμφάνιση αριθμών σε ξεχωριστή γραμμή</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Altura del teclado</string>
|
||||
<string name="show_key_borders">Mostrar bordes de las teclas</string>
|
||||
<string name="show_numbers_row">Mostrar los números en una fila separada</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoticonos</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Klaviatuuri kõrgus</string>
|
||||
<string name="show_key_borders">Näita klahvide ääriseid</string>
|
||||
<string name="show_numbers_row">Näita numbreid eraldi real</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojid</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Näppäimistön korkeus</string>
|
||||
<string name="show_key_borders">Näytä näppäinten ääriviivat</string>
|
||||
<string name="show_numbers_row">Näytä erillinen numerorivi</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojit</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Hauteur du clavier</string>
|
||||
<string name="show_key_borders">Afficher les bordures des touches</string>
|
||||
<string name="show_numbers_row">Afficher les chiffres sur une ligne distincte</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Émojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Altura do teclado</string>
|
||||
<string name="show_key_borders">Mostralos bordes das teclas</string>
|
||||
<string name="show_numbers_row">Mostralos números nunha fila afastada</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoticona</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Visina tipkovnice</string>
|
||||
<string name="show_key_borders">Prikaži obrube ključeva</string>
|
||||
<string name="show_numbers_row">Pokaži brojeve u zasebnom retku</string>
|
||||
<string name="start_sentences_capitalized">Počni rečenice s velikim slovom</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoji</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Billentyűzet magassága</string>
|
||||
<string name="show_key_borders">Gombszélek megjelenítése</string>
|
||||
<string name="show_numbers_row">Számok megjelenítése külön sorban</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojik</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Tinggi papan tik</string>
|
||||
<string name="show_key_borders">Tampilkan garis luar tombol</string>
|
||||
<string name="show_numbers_row">Tampilkan nomor di baris terpisah</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoji</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Altezza della tastiera</string>
|
||||
<string name="show_key_borders">Mostra i bordi dei tasti</string>
|
||||
<string name="show_numbers_row">Mostra i numeri su una riga separata</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoji</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">キーボードの高さ</string>
|
||||
<string name="show_key_borders">キー枠を表示する</string>
|
||||
<string name="show_numbers_row">数字を別の行に表示する</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">絵文字</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">കീബോർഡ് ഉയരം</string>
|
||||
<string name="show_key_borders">പ്രധാന അതിരുകൾ കാണിക്കുക</string>
|
||||
<string name="show_numbers_row">ഒരു പ്രത്യേക വരിയിൽ സംഖ്യകൾ കാണിക്കുക</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">ഇമോജികൾ</string>
|
||||
</resources>
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Hoogte toetsenbord</string>
|
||||
<string name="show_key_borders">Toetsen omranden</string>
|
||||
<string name="show_numbers_row">Cijfers op een aparte rij</string>
|
||||
<string name="start_sentences_capitalized">Zinnen met een hoofdletter beginnen</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoji\'s</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">کیبورڈ دی اُچائی</string>
|
||||
<string name="show_key_borders">کنجیاں دے حد ویکھو</string>
|
||||
<string name="show_numbers_row">وکھری قطار وچ نمبر ویکھو</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">ایموجیاں</string>
|
||||
</resources>
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">ਕੀਬੋਰਡ ਦੀ ਉਚਾਈ</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">ਇਮੋਜੀਆਂ</string>
|
||||
</resources>
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Wysokość klawiatury</string>
|
||||
<string name="show_key_borders">Pokazuj obramowania klawiszy</string>
|
||||
<string name="show_numbers_row">Pokazuj cyfry w osobnym wierszu</string>
|
||||
<string name="start_sentences_capitalized">Zaczynaj zdania wielką literą</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoji</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Altura do teclado</string>
|
||||
<string name="show_key_borders">Mostrar contorno das teclas</string>
|
||||
<string name="show_numbers_row">Mostrar números em linha distinta</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Înălțime tastatură</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoticoane</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Высота клавиатуры</string>
|
||||
<string name="show_key_borders">Показывать границы кнопок</string>
|
||||
<string name="show_numbers_row">Показывать цифры отдельной строкой</string>
|
||||
<string name="start_sentences_capitalized">Начинать предложения с заглавной буквы</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Эмодзи</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Výška klávesnice</string>
|
||||
<string name="show_key_borders">Zobraziť hranice kláves</string>
|
||||
<string name="show_numbers_row">Zobraziť čísla na samostatnom riadku</string>
|
||||
<string name="start_sentences_capitalized">Začať vety veľkým písmenom</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoji</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Višina tipkovnice</string>
|
||||
<string name="show_key_borders">Prikaži meje ključa</string>
|
||||
<string name="show_numbers_row">Prikažite številke v ločeni vrstici</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emoji-ji</string>
|
||||
</resources>
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Висина тастатуре</string>
|
||||
<string name="show_key_borders">Прикажи ивице кључева</string>
|
||||
<string name="show_numbers_row">Прикажи бројеве у посебном реду</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Емоји</string>
|
||||
</resources>
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Tangentbordshöjd</string>
|
||||
<string name="show_key_borders">Visa ramar runt tangenterna</string>
|
||||
<string name="show_numbers_row">Visa siffror på en separat rad</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojier</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Klavye yüksekliği</string>
|
||||
<string name="show_key_borders">Tuş sınırlarını göster</string>
|
||||
<string name="show_numbers_row">Sayıları ayrı bir satırda göster</string>
|
||||
<string name="start_sentences_capitalized">Cümlelere büyük harfle başla</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojiler</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Висота клавіатури</string>
|
||||
<string name="show_key_borders">Показати рамки клавіш</string>
|
||||
<string name="show_numbers_row">Відображення чисел в окремому рядку</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Емодзі</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">键盘高度</string>
|
||||
<string name="show_key_borders">显示键符边界</string>
|
||||
<string name="show_numbers_row">在单独的行上显示数字</string>
|
||||
<string name="start_sentences_capitalized">句子开头使用大写字母</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">表情符号</string>
|
||||
<!--
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
<string name="keyboard_height">Keyboard height</string>
|
||||
<string name="show_key_borders">Show key borders</string>
|
||||
<string name="show_numbers_row">Show numbers on a separate row</string>
|
||||
<string name="start_sentences_capitalized">Start sentences with a capital letter</string>
|
||||
<!-- Emojis -->
|
||||
<string name="emojis">Emojis</string>
|
||||
<!--
|
||||
|
|
Loading…
Reference in New Issue