mirror of
https://github.com/FossifyOrg/Keyboard.git
synced 2026-06-12 07:34:47 -04:00
feat: add tools popup to comma (or whatever) key (#360)
* feat: add tools popup to comma (or whatever) key This change introduces a popup menu on the second left key in the bottom row (often the comma), providing quick access to emoji and settings. - A new `keyRole` attribute to identify special keys like the new "tools" key. The comma key on most letter layouts is now designated as the `tools` key. - A long press on the comma key reveals a popup with icons for emoji and settings. - When the dedicated emoji key is enabled in settings, the emoji icon is removed from the tools popup and its secondary icon hint. - Introduced new key codes (`KEYCODE_POPUP_EMOJI`, `KEYCODE_POPUP_SETTINGS`) to handle actions from the tools popup. - Refactored the secondary icon drawing logi for better reusability. Refs: https://github.com/FossifyOrg/Keyboard/issues/62 * refactor: extract space bar and emoji/language long press handlers * fix: use proper colors for popup icons * fix: avoid clearing popup when numbers row is enabled * style: simplify condition
This commit is contained in:
@@ -67,6 +67,11 @@ class MyKeyboard {
|
||||
const val KEYCODE_DELETE = -5
|
||||
const val KEYCODE_SPACE = 32
|
||||
const val KEYCODE_EMOJI_OR_LANGUAGE = -6
|
||||
const val KEYCODE_POPUP_EMOJI = -7
|
||||
const val KEYCODE_POPUP_SETTINGS = -8
|
||||
|
||||
// Key roles for special keys
|
||||
const val KEY_ROLE_TOOLS = "tools"
|
||||
|
||||
fun getDimensionOrFraction(a: TypedArray, index: Int, base: Int, defValue: Int): Int {
|
||||
val value = a.peekValue(index) ?: return defValue
|
||||
@@ -169,6 +174,9 @@ class MyKeyboard {
|
||||
/** Popup characters showing after long pressing the key */
|
||||
var popupCharacters: CharSequence? = null
|
||||
|
||||
/** Role identifier for special keys (e.g., "tools" for the tools popup host key) */
|
||||
var role: String? = null
|
||||
|
||||
/**
|
||||
* Flags that specify the anchoring to edges of the keyboard for detecting touch events that are just out of the boundary of the key.
|
||||
* This is a bit mask of [MyKeyboard.EDGE_LEFT], [MyKeyboard.EDGE_RIGHT].
|
||||
@@ -221,7 +229,7 @@ class MyKeyboard {
|
||||
secondaryIcon?.setBounds(0, 0, secondaryIcon!!.intrinsicWidth, secondaryIcon!!.intrinsicHeight)
|
||||
|
||||
topSmallNumber = a.getString(R.styleable.MyKeyboard_Key_topSmallNumber) ?: ""
|
||||
|
||||
role = a.getString(R.styleable.MyKeyboard_Key_keyRole)
|
||||
|
||||
a.recycle()
|
||||
}
|
||||
@@ -271,7 +279,6 @@ class MyKeyboard {
|
||||
* @param xmlLayoutResId the resource file that contains the keyboard layout and keys.
|
||||
* @param enterKeyType determines what icon should we show on Enter key
|
||||
*/
|
||||
@JvmOverloads
|
||||
constructor(context: Context, @XmlRes xmlLayoutResId: Int, enterKeyType: Int) {
|
||||
mDisplayWidth = context.resources.displayMetrics.widthPixels
|
||||
mDefaultHorizontalGap = 0
|
||||
@@ -378,8 +385,9 @@ class MyKeyboard {
|
||||
if (context.config.showNumbersRow) {
|
||||
// Removes numbers (i.e 0-9) from the popupCharacters if numbers row is enabled
|
||||
key.apply {
|
||||
val hadPopupCharacters = popupCharacters != null
|
||||
popupCharacters = popupCharacters?.replace(Regex("\\d+"), "")
|
||||
if (popupCharacters.isNullOrEmpty()) {
|
||||
if (hadPopupCharacters && popupCharacters.isNullOrEmpty()) {
|
||||
popupResId = 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.fossify.keyboard.services
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.drawable.Icon
|
||||
@@ -37,6 +38,7 @@ import androidx.core.view.updatePadding
|
||||
import org.fossify.commons.extensions.*
|
||||
import org.fossify.commons.helpers.*
|
||||
import org.fossify.keyboard.R
|
||||
import org.fossify.keyboard.activities.SettingsActivity
|
||||
import org.fossify.keyboard.databinding.KeyboardViewKeyboardBinding
|
||||
import org.fossify.keyboard.extensions.config
|
||||
import org.fossify.keyboard.extensions.getKeyboardBackgroundColor
|
||||
@@ -268,6 +270,13 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared
|
||||
}
|
||||
}
|
||||
|
||||
MyKeyboard.KEYCODE_POPUP_EMOJI -> keyboardView?.openEmojiPalette()
|
||||
MyKeyboard.KEYCODE_POPUP_SETTINGS -> Intent(this, SettingsActivity::class.java)
|
||||
.apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
startActivity(this)
|
||||
}
|
||||
|
||||
else -> {
|
||||
var codeChar = code.toChar()
|
||||
val originalText = inputConnection.getExtractedText(ExtractedTextRequest(), 0)?.text
|
||||
@@ -634,6 +643,16 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// When emoji key is enabled, show settings-only popup with no hint on tools key
|
||||
if (config.showEmojiKey) {
|
||||
val currentKeys = keyboard.mKeys ?: return keyboard
|
||||
val toolsKey = currentKeys.firstOrNull { it.role == MyKeyboard.KEY_ROLE_TOOLS }
|
||||
if (toolsKey != null) {
|
||||
toolsKey.popupResId = R.xml.popup_tools
|
||||
toolsKey.secondaryIcon = null
|
||||
}
|
||||
}
|
||||
}
|
||||
return keyboard
|
||||
}
|
||||
|
||||
@@ -99,6 +99,8 @@ import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_DELETE
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_EMOJI_OR_LANGUAGE
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_ENTER
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_MODE_CHANGE
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_POPUP_EMOJI
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_POPUP_SETTINGS
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SHIFT
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SPACE
|
||||
import org.fossify.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SYMBOLS_MODE_CHANGE
|
||||
@@ -722,9 +724,9 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
canvas.drawText(row, key.width / 2f, startY + textSize * index, paint)
|
||||
}
|
||||
|
||||
if (key.topSmallNumber.isNotEmpty() && !(context.config.showNumbersRow && Regex("\\d").matches(
|
||||
key.topSmallNumber
|
||||
))
|
||||
if (
|
||||
key.topSmallNumber.isNotEmpty()
|
||||
&& !(context.config.showNumbersRow && Regex("\\d").matches(key.topSmallNumber))
|
||||
) {
|
||||
val bounds = Rect().also {
|
||||
smallLetterPaint.getTextBounds(
|
||||
@@ -749,6 +751,9 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
)
|
||||
}
|
||||
|
||||
// Draw secondary icons for label-based keys
|
||||
drawSecondaryIcon(key, canvas, textColor)
|
||||
|
||||
// Turn off drop shadow
|
||||
paint.setShadowLayer(0f, 0f, 0f, 0)
|
||||
} else if (key.icon != null && mKeyboard != null) {
|
||||
@@ -765,7 +770,15 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
val contrastColor = mPrimaryColor.getContrastColor()
|
||||
key.icon!!.applyColorFilter(contrastColor)
|
||||
key.secondaryIcon?.applyColorFilter(contrastColor.adjustAlpha(0.6f))
|
||||
} else if (code == KEYCODE_DELETE || code == KEYCODE_SHIFT || code == KEYCODE_EMOJI_OR_LANGUAGE) {
|
||||
} else if (
|
||||
code in arrayOf(
|
||||
KEYCODE_DELETE,
|
||||
KEYCODE_SHIFT,
|
||||
KEYCODE_EMOJI_OR_LANGUAGE,
|
||||
KEYCODE_POPUP_EMOJI,
|
||||
KEYCODE_POPUP_SETTINGS
|
||||
)
|
||||
) {
|
||||
key.icon!!.applyColorFilter(textColor)
|
||||
key.secondaryIcon?.applyColorFilter(
|
||||
if (key.pressed) {
|
||||
@@ -779,10 +792,9 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
val keyIcon = key.icon!!
|
||||
val secondaryIcon = key.secondaryIcon
|
||||
if (secondaryIcon != null) {
|
||||
// When secondary icon exists, shrink main icon to 90%
|
||||
val keyIconWidth = (keyIcon.intrinsicWidth * 0.9f).toInt()
|
||||
val keyIconHeight = (keyIcon.intrinsicHeight * 0.9f).toInt()
|
||||
val secondaryIconWidth = (secondaryIcon.intrinsicWidth * 0.5f).toInt()
|
||||
val secondaryIconHeight = (secondaryIcon.intrinsicHeight * 0.5f).toInt()
|
||||
|
||||
val centerX = key.width / 2
|
||||
val centerY = key.height / 2
|
||||
@@ -798,20 +810,7 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
)
|
||||
keyIcon.draw(canvas)
|
||||
|
||||
val secondaryIconPaddingRight = 10
|
||||
val secondaryIconLeft =
|
||||
key.width - secondaryIconPaddingRight - secondaryIconWidth
|
||||
val secondaryIconRight = secondaryIconLeft + secondaryIconWidth
|
||||
|
||||
val secondaryIconTop = 14 // This will act as a topPadding
|
||||
val secondaryIconBottom = secondaryIconTop + secondaryIconHeight
|
||||
|
||||
secondaryIcon.setBounds(
|
||||
secondaryIconLeft, secondaryIconTop, secondaryIconRight, secondaryIconBottom
|
||||
)
|
||||
secondaryIcon.draw(canvas)
|
||||
|
||||
secondaryIcon.draw(canvas)
|
||||
drawSecondaryIcon(key, canvas, textColor)
|
||||
} else {
|
||||
val drawableX = (key.width - keyIcon.intrinsicWidth) / 2
|
||||
val drawableY = (key.height - keyIcon.intrinsicHeight) / 2
|
||||
@@ -897,6 +896,25 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
return resources.getDrawable(drawableId, context.theme)
|
||||
}
|
||||
|
||||
private fun drawSecondaryIcon(key: MyKeyboard.Key, canvas: Canvas, textColor: Int) {
|
||||
val secondaryIcon = key.secondaryIcon ?: return
|
||||
secondaryIcon.applyColorFilter(
|
||||
if (key.pressed) textColor else mTextColor.adjustAlpha(0.6f)
|
||||
)
|
||||
val secondaryIconWidth = (secondaryIcon.intrinsicWidth * 0.5f).toInt()
|
||||
val secondaryIconHeight = (secondaryIcon.intrinsicHeight * 0.5f).toInt()
|
||||
val secondaryIconPaddingRight = 10
|
||||
val secondaryIconLeft = key.width - secondaryIconPaddingRight - secondaryIconWidth
|
||||
val secondaryIconRight = secondaryIconLeft + secondaryIconWidth
|
||||
val secondaryIconTop = 14
|
||||
val secondaryIconBottom = secondaryIconTop + secondaryIconHeight
|
||||
|
||||
secondaryIcon.setBounds(
|
||||
secondaryIconLeft, secondaryIconTop, secondaryIconRight, secondaryIconBottom
|
||||
)
|
||||
secondaryIcon.draw(canvas)
|
||||
}
|
||||
|
||||
private fun handleClipboard() {
|
||||
if (mToolbarHolder != null && mPopupParent.id != R.id.mini_keyboard_view && context.config.showClipboardContent) {
|
||||
val clipboardContent = context.getCurrentClip()
|
||||
@@ -1178,26 +1196,9 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
*/
|
||||
private fun onLongPress(popupKey: MyKeyboard.Key, me: MotionEvent): Boolean {
|
||||
if (popupKey.code == KEYCODE_SPACE) {
|
||||
return if (!mCursorControlActive) {
|
||||
setCurrentKeyPressed(false)
|
||||
mRepeatKeyIndex = NOT_A_KEY
|
||||
mHandler?.removeMessages(MSG_REPEAT)
|
||||
vibrateIfNeeded()
|
||||
SwitchLanguageDialog(this) {
|
||||
mOnKeyboardActionListener?.reloadKeyboard()
|
||||
}
|
||||
true
|
||||
} else false
|
||||
return onSpaceBarLongPressed()
|
||||
} else if (popupKey.code == KEYCODE_EMOJI_OR_LANGUAGE) {
|
||||
setCurrentKeyPressed(false)
|
||||
if (context.config.showEmojiKey) {
|
||||
openEmojiPalette()
|
||||
} else {
|
||||
SwitchLanguageDialog(this) {
|
||||
mOnKeyboardActionListener?.reloadKeyboard()
|
||||
}
|
||||
}
|
||||
return true
|
||||
return onEmojiOrLanguageLongPressed()
|
||||
} else {
|
||||
val popupKeyboardId = popupKey.popupResId
|
||||
if (popupKeyboardId != 0) {
|
||||
@@ -1205,9 +1206,11 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
|
||||
// For 'number' and 'phone' keyboards the count of popup keys might be bigger than count of keys in the main keyboard.
|
||||
// And therefore the width of the key might be smaller than width declared in MyKeyboard.Key.width for the main keyboard.
|
||||
val popupKeyWidth = popupKey.calcKeyWidth(
|
||||
containerWidth = mMiniKeyboardContainer?.measuredWidth ?: width
|
||||
)
|
||||
val popupKeyWidth = if (popupKey.popupCharacters != null) {
|
||||
popupKey.calcKeyWidth(containerWidth = mMiniKeyboardContainer?.measuredWidth ?: width)
|
||||
} else {
|
||||
popupKey.width
|
||||
}
|
||||
|
||||
if (mMiniKeyboardContainer == null) {
|
||||
val inflater =
|
||||
@@ -1243,8 +1246,9 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
mPopupX = popupKey.x
|
||||
mPopupY = popupKey.y
|
||||
|
||||
val widthToUse =
|
||||
mMiniKeyboardContainer!!.measuredWidth - (popupKey.popupCharacters!!.length / 2) * popupKeyWidth
|
||||
// Use popupCharacters length if available, otherwise use actual key count from the loaded keyboard
|
||||
val popupKeyCount = popupKey.popupCharacters?.length ?: mMiniKeyboard!!.mKeys.size
|
||||
val widthToUse = mMiniKeyboardContainer!!.measuredWidth - (popupKeyCount / 2) * popupKeyWidth
|
||||
mPopupX = mPopupX + popupKeyWidth - widthToUse
|
||||
mPopupY -= mMiniKeyboardContainer!!.measuredHeight
|
||||
val x = mPopupX + mCoordinates[0]
|
||||
@@ -1606,6 +1610,32 @@ class MyKeyboardView @JvmOverloads constructor(
|
||||
setupStoredClips()
|
||||
}
|
||||
|
||||
private fun onSpaceBarLongPressed(): Boolean {
|
||||
return if (!mCursorControlActive) {
|
||||
setCurrentKeyPressed(false)
|
||||
mRepeatKeyIndex = NOT_A_KEY
|
||||
mHandler?.removeMessages(MSG_REPEAT)
|
||||
vibrateIfNeeded()
|
||||
SwitchLanguageDialog(this) {
|
||||
mOnKeyboardActionListener?.reloadKeyboard()
|
||||
}
|
||||
true
|
||||
} else false
|
||||
}
|
||||
|
||||
private fun onEmojiOrLanguageLongPressed(): Boolean {
|
||||
setCurrentKeyPressed(false)
|
||||
if (context.config.showEmojiKey) {
|
||||
openEmojiPalette()
|
||||
} else {
|
||||
SwitchLanguageDialog(this) {
|
||||
mOnKeyboardActionListener?.reloadKeyboard()
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
private fun setupStoredClips() {
|
||||
ensureBackgroundThread {
|
||||
val clips = ArrayList<ListItem>()
|
||||
|
||||
@@ -38,5 +38,7 @@
|
||||
<attr name="secondaryKeyIcon" format="reference" />
|
||||
<!-- Top small number shown above letters of the first row. -->
|
||||
<attr name="topSmallNumber" format="string" />
|
||||
<!-- Role identifier for special keys (e.g., "tools" for the tools popup host key). -->
|
||||
<attr name="keyRole" format="string" />
|
||||
</declare-styleable>
|
||||
</resources>
|
||||
|
||||
@@ -132,17 +132,17 @@
|
||||
app:keyWidth="8%p" />
|
||||
<Key
|
||||
app:keyLabel="і"
|
||||
app:keyWidth="8%p"
|
||||
app:popupCharacters="иї"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="8%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:keyLabel="т"
|
||||
app:keyWidth="8%p" />
|
||||
<Key
|
||||
app:keyLabel="ь"
|
||||
app:keyWidth="8%p"
|
||||
app:popupCharacters="ъ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="8%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:keyLabel="б"
|
||||
app:keyWidth="8%p" />
|
||||
@@ -164,7 +164,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -148,7 +148,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -191,22 +191,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -152,22 +152,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -170,7 +170,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -103,14 +103,14 @@
|
||||
app:keyLabel="d"
|
||||
app:popupCharacters="ď"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="f" />
|
||||
<Key app:keyLabel="f" />
|
||||
<Key app:keyLabel="g" />
|
||||
<Key app:keyLabel="h" />
|
||||
<Key app:keyLabel="j" />
|
||||
<Key app:keyLabel="k" />
|
||||
<Key
|
||||
app:keyEdgeFlags="right"
|
||||
app:keyLabel="l" />
|
||||
app:keyLabel="l" />
|
||||
</Row>
|
||||
<Row>
|
||||
<Key
|
||||
@@ -149,22 +149,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -103,14 +103,14 @@
|
||||
app:keyLabel="d"
|
||||
app:popupCharacters="ď"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="f" />
|
||||
<Key app:keyLabel="f" />
|
||||
<Key app:keyLabel="g" />
|
||||
<Key app:keyLabel="h" />
|
||||
<Key app:keyLabel="j" />
|
||||
<Key app:keyLabel="k" />
|
||||
<Key
|
||||
app:keyEdgeFlags="right"
|
||||
app:keyLabel="l" />
|
||||
app:keyLabel="l" />
|
||||
</Row>
|
||||
<Row>
|
||||
<Key
|
||||
@@ -149,22 +149,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -188,7 +188,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -91,25 +91,18 @@
|
||||
<Key
|
||||
app:horizontalGap="5%"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyLabel="a"/>
|
||||
app:keyLabel="a" />
|
||||
<Key
|
||||
app:keyLabel="s"
|
||||
app:popupCharacters="ß"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:keyLabel="d" />
|
||||
<Key
|
||||
app:keyLabel="f" />
|
||||
<Key
|
||||
app:keyLabel="g" />
|
||||
<Key
|
||||
app:keyLabel="h" />
|
||||
<Key
|
||||
app:keyLabel="j" />
|
||||
<Key
|
||||
app:keyLabel="k" />
|
||||
<Key
|
||||
app:keyLabel="l" />
|
||||
<Key app:keyLabel="d" />
|
||||
<Key app:keyLabel="f" />
|
||||
<Key app:keyLabel="g" />
|
||||
<Key app:keyLabel="h" />
|
||||
<Key app:keyLabel="j" />
|
||||
<Key app:keyLabel="k" />
|
||||
<Key app:keyLabel="l" />
|
||||
</Row>
|
||||
<Row>
|
||||
<Key
|
||||
@@ -117,15 +110,12 @@
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_caps_outline_vector"
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel="z" />
|
||||
<Key app:keyLabel="z" />
|
||||
<Key app:keyLabel="x" />
|
||||
<Key
|
||||
app:keyLabel="c" />
|
||||
<Key app:keyLabel="c" />
|
||||
<Key app:keyLabel="v" />
|
||||
<Key app:keyLabel="b" />
|
||||
<Key
|
||||
app:keyLabel="n" />
|
||||
<Key app:keyLabel="n" />
|
||||
<Key app:keyLabel="m" />
|
||||
<Key
|
||||
app:code="-5"
|
||||
@@ -142,7 +132,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -163,7 +163,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -163,7 +163,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -163,7 +163,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -155,7 +155,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel="q"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -160,7 +160,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -154,7 +154,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -154,22 +154,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -163,7 +163,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -163,7 +163,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -161,7 +161,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -135,22 +135,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -131,9 +131,9 @@
|
||||
app:keyIcon="@drawable/ic_caps_outline_vector" />
|
||||
<Key app:keyLabel="y" />
|
||||
<Key app:keyLabel="x" />
|
||||
<Key app:keyLabel="k" />
|
||||
<Key
|
||||
app:keyLabel="k"/>
|
||||
<Key app:keyLabel="-"
|
||||
app:keyLabel="-"
|
||||
app:popupCharacters="—_"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="q" />
|
||||
@@ -154,22 +154,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -185,7 +185,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -154,22 +154,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
<Key
|
||||
app:keyLabel="η"
|
||||
app:popupCharacters="ή"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"/>
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="ξ" />
|
||||
<Key
|
||||
app:keyLabel="κ"
|
||||
@@ -144,7 +144,7 @@
|
||||
<Key
|
||||
app:keyLabel="ω"
|
||||
app:popupCharacters="ώ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"/>
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="β" />
|
||||
<Key
|
||||
app:keyLabel="ν"
|
||||
@@ -166,22 +166,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -147,7 +147,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -141,8 +141,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:popupCharacters="€"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
@@ -156,7 +158,7 @@
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupCharacters="€,?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
|
||||
@@ -92,19 +92,23 @@
|
||||
<Key
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyLabel="q" />
|
||||
<Key app:keyLabel="s"
|
||||
app:popupCharacters="ṣ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"/>
|
||||
<Key app:keyLabel="d"
|
||||
app:popupCharacters="ḍ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"/>
|
||||
<Key
|
||||
app:keyLabel="s"
|
||||
app:popupCharacters="ṣ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:keyLabel="d"
|
||||
app:popupCharacters="ḍ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="f" />
|
||||
<Key app:keyLabel="g"
|
||||
app:popupCharacters="ǧ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"/>
|
||||
<Key app:keyLabel="h"
|
||||
app:popupCharacters="ḥ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"/>
|
||||
<Key
|
||||
app:keyLabel="g"
|
||||
app:popupCharacters="ǧ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:keyLabel="h"
|
||||
app:popupCharacters="ḥ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="j" />
|
||||
<Key app:keyLabel="k" />
|
||||
<Key app:keyLabel="l" />
|
||||
@@ -125,9 +129,10 @@
|
||||
app:popupCharacters="čçćč"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="v" />
|
||||
<Key app:keyLabel="b"
|
||||
app:popupCharacters="p"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"/>
|
||||
<Key
|
||||
app:keyLabel="b"
|
||||
app:popupCharacters="p"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="n" />
|
||||
<Key app:keyLabel="-" />
|
||||
<Key
|
||||
@@ -145,22 +150,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -151,15 +151,15 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters="‚„“‘"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
app:keyWidth="10%p" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
@@ -167,7 +167,7 @@
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupCharacters="‚„”’,?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
|
||||
@@ -192,9 +192,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters="‚„“‘"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
@@ -208,7 +209,7 @@
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupCharacters="‚„”’,?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
|
||||
@@ -188,7 +188,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -148,7 +148,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -141,9 +141,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters="€"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
@@ -157,7 +158,7 @@
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupCharacters="€,?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
|
||||
@@ -148,7 +148,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel="y"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -143,7 +143,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -188,22 +188,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -144,22 +144,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -152,22 +152,25 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined"
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:secondaryKeyIcon="@drawable/ic_language_outlined" />
|
||||
<Key
|
||||
app:code="32"
|
||||
app:isRepeatable="true"
|
||||
app:keyWidth="40%p" />
|
||||
<Key
|
||||
app:keyLabel="."
|
||||
app:keyWidth="10%p"
|
||||
app:popupCharacters=",?!;:'…"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template"
|
||||
app:keyWidth="10%p" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key
|
||||
app:code="-4"
|
||||
app:keyEdgeFlags="right"
|
||||
|
||||
@@ -187,7 +187,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -99,13 +99,12 @@
|
||||
app:keyLabel="s"
|
||||
app:popupCharacters="ş"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="d" />
|
||||
<Key app:keyLabel="f" />
|
||||
<Key
|
||||
app:keyLabel="d" />
|
||||
<Key
|
||||
app:keyLabel="f" />
|
||||
<Key app:keyLabel="g"
|
||||
app:keyLabel="g"
|
||||
app:popupCharacters="ğ"
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="h" />
|
||||
<Key app:keyLabel="j" />
|
||||
<Key app:keyLabel="k" />
|
||||
@@ -119,8 +118,7 @@
|
||||
app:keyEdgeFlags="left"
|
||||
app:keyIcon="@drawable/ic_caps_outline_vector"
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel="z" />
|
||||
<Key app:keyLabel="z" />
|
||||
<Key app:keyLabel="x" />
|
||||
<Key
|
||||
app:keyLabel="c"
|
||||
@@ -128,8 +126,7 @@
|
||||
app:popupKeyboard="@xml/keyboard_popup_template" />
|
||||
<Key app:keyLabel="v" />
|
||||
<Key app:keyLabel="b" />
|
||||
<Key
|
||||
app:keyLabel="n" />
|
||||
<Key app:keyLabel="n" />
|
||||
<Key app:keyLabel="m" />
|
||||
<Key
|
||||
app:code="-5"
|
||||
@@ -146,7 +143,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -162,7 +162,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -161,7 +161,10 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyWidth="10%p"
|
||||
app:keyRole="tools"
|
||||
app:popupKeyboard="@xml/popup_tools_with_emoji_key"
|
||||
app:secondaryKeyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-6"
|
||||
app:keyEdgeFlags="left"
|
||||
|
||||
@@ -69,7 +69,9 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupKeyboard="@xml/popup_tools" />
|
||||
<Key
|
||||
app:code="-3"
|
||||
app:keyLabel="12\n34"
|
||||
|
||||
@@ -77,7 +77,9 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupKeyboard="@xml/popup_tools" />
|
||||
<Key
|
||||
app:code="-3"
|
||||
app:keyLabel="!?#&"
|
||||
|
||||
@@ -66,7 +66,9 @@
|
||||
app:keyWidth="15%p" />
|
||||
<Key
|
||||
app:keyLabel=","
|
||||
app:keyWidth="10%p" />
|
||||
app:keyRole="tools"
|
||||
app:keyWidth="10%p"
|
||||
app:popupKeyboard="@xml/popup_tools" />
|
||||
<Key
|
||||
app:code="-3"
|
||||
app:keyLabel="12\n34"
|
||||
|
||||
8
app/src/main/res/xml/popup_tools.xml
Normal file
8
app/src/main/res/xml/popup_tools.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Keyboard xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<Row>
|
||||
<Key
|
||||
app:code="-8"
|
||||
app:keyIcon="@drawable/ic_settings_cog_vector" />
|
||||
</Row>
|
||||
</Keyboard>
|
||||
11
app/src/main/res/xml/popup_tools_with_emoji_key.xml
Normal file
11
app/src/main/res/xml/popup_tools_with_emoji_key.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Keyboard xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<Row>
|
||||
<Key
|
||||
app:code="-7"
|
||||
app:keyIcon="@drawable/ic_emoji_emotions_outline_vector" />
|
||||
<Key
|
||||
app:code="-8"
|
||||
app:keyIcon="@drawable/ic_settings_cog_vector" />
|
||||
</Row>
|
||||
</Keyboard>
|
||||
Reference in New Issue
Block a user