Merge pull request #188 from Merkost/talkback_improvements

Talkback improvements
This commit is contained in:
Tibor Kaputa 2023-06-10 09:17:40 +02:00 committed by GitHub
commit a9a9035c4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 195 additions and 102 deletions

View File

@ -0,0 +1,69 @@
package com.simplemobiletools.keyboard.helpers
import android.graphics.Rect
import android.os.Bundle
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
import androidx.customview.widget.ExploreByTouchHelper
import com.simplemobiletools.keyboard.views.MyKeyboardView
class AccessHelper(
private val keyboardView: MyKeyboardView,
private val keys: List<MyKeyboard.Key>
) : ExploreByTouchHelper(keyboardView) {
/**
* We need to populate the list with the IDs of all of the visible virtual views (the intervals in the chart).
* In our case, all keys are always visible, so well return a list of all IDs.
*/
override fun getVisibleVirtualViews(virtualViewIds: MutableList<Int>) {
val keysSize = keys.size
for (i in 0 until keysSize) {
virtualViewIds.add(i)
}
}
/**
* For this function, we need to return the ID of the virtual view thats under the x, y position,
* or ExploreByTouchHelper.HOST_ID if theres no item at those coordinates.
*/
override fun getVirtualViewAt(x: Float, y: Float): Int {
val rects = keys.map {
Rect(it.x, it.y, it.x + it.width, it.y + it.height)
}
return rects.firstOrNull { it.contains(x.toInt(), y.toInt()) }?.let { exactRect ->
rects.indexOf(exactRect)
} ?: HOST_ID
}
/**
* This is where we provide all the metadata for our virtual view.
* We need to set the content description (or text, if its presented visually) and set the bounds in parent.
*/
override fun onPopulateNodeForVirtualView(virtualViewId: Int, node: AccessibilityNodeInfoCompat) {
node.className = keyboardView::class.simpleName
val key = keys.getOrNull(virtualViewId)
node.contentDescription = key?.getContentDescription(keyboardView.context) ?: ""
val bounds = updateBoundsForInterval(virtualViewId)
node.setBoundsInParent(bounds)
}
/**
* We need to set the content description (or text, if its presented visually) and set the bounds in parent.
* The bounds in the parent should match the logic in the onDraw() function.
*/
private fun updateBoundsForInterval(index: Int): Rect {
val keys = keys
val key = keys.getOrNull(index) ?: return Rect()
return Rect().apply {
left = key.x
top = key.y
right = key.x + key.width
bottom = key.y + key.height
}
}
override fun onPerformActionForVirtualView(virtualViewId: Int, action: Int, arguments: Bundle?): Boolean {
return false
}
}

View File

@ -43,7 +43,7 @@ class MyKeyboard {
var mMinWidth = 0
/** List of keys in this keyboard */
var mKeys: MutableList<Key?>? = null
var mKeys: MutableList<Key>? = null
/** Width of the screen available to fit the keyboard */
private var mDisplayWidth = 0
@ -225,6 +225,21 @@ class MyKeyboard {
a.recycle()
}
/**
* Content description for talkback functional
*/
fun getContentDescription(context: Context): CharSequence {
return when (code) {
KEYCODE_SHIFT -> context.getString(R.string.keycode_shift)
KEYCODE_MODE_CHANGE -> context.getString(R.string.keycode_mode_change)
KEYCODE_ENTER -> context.getString(R.string.keycode_enter)
KEYCODE_DELETE -> context.getString(R.string.keycode_delete)
KEYCODE_SPACE -> context.getString(R.string.keycode_space)
KEYCODE_EMOJI -> context.getString(R.string.emojis)
else -> label
}
}
/** Create an empty key with no attributes. */
init {
height = parent.defaultHeight

View File

@ -0,0 +1,41 @@
package com.simplemobiletools.keyboard.interfaces
interface OnKeyboardActionListener {
/**
* Called when the user presses a key. This is sent before the [.onKey] is called. For keys that repeat, this is only called once.
* @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key, the value will be zero.
*/
fun onPress(primaryCode: Int)
/**
* Send a key press to the listener.
* @param code this is the key that was pressed
*/
fun onKey(code: Int)
/**
* Called when the finger has been lifted after pressing a key
*/
fun onActionUp()
/**
* Called when the user long presses Space and moves to the left
*/
fun moveCursorLeft()
/**
* Called when the user long presses Space and moves to the right
*/
fun moveCursorRight()
/**
* Sends a sequence of characters to the listener.
* @param text the string to be displayed.
*/
fun onText(text: String)
/**
* Called to force the KeyboardView to reload the keyboard
*/
fun reloadKeyboard()
}

View File

@ -15,11 +15,12 @@ import com.simplemobiletools.commons.extensions.getSharedPrefs
import com.simplemobiletools.keyboard.R
import com.simplemobiletools.keyboard.extensions.config
import com.simplemobiletools.keyboard.helpers.*
import com.simplemobiletools.keyboard.interfaces.OnKeyboardActionListener
import com.simplemobiletools.keyboard.views.MyKeyboardView
import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.*
// based on https://www.androidauthority.com/lets-build-custom-keyboard-android-832362/
class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionListener, SharedPreferences.OnSharedPreferenceChangeListener {
class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, SharedPreferences.OnSharedPreferenceChangeListener {
private var SHIFT_PERM_TOGGLE_SPEED = 500 // how quickly do we have to doubletap shift to enable permanent caps lock
private val KEYBOARD_LETTERS = 0
private val KEYBOARD_SYMBOLS = 1

View File

@ -16,14 +16,13 @@ import android.os.Message
import android.util.AttributeSet
import android.util.TypedValue
import android.view.*
import android.view.accessibility.AccessibilityEvent
import android.view.accessibility.AccessibilityManager
import android.view.animation.AccelerateInterpolator
import android.view.inputmethod.EditorInfo
import android.widget.PopupWindow
import android.widget.TextView
import androidx.core.animation.doOnEnd
import androidx.core.animation.doOnStart
import androidx.core.view.ViewCompat
import androidx.emoji2.text.EmojiCompat
import androidx.emoji2.text.EmojiCompat.EMOJI_SUPPORTED
import com.simplemobiletools.commons.extensions.*
@ -43,6 +42,7 @@ import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_ENTER
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_MODE_CHANGE
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SHIFT
import com.simplemobiletools.keyboard.helpers.MyKeyboard.Companion.KEYCODE_SPACE
import com.simplemobiletools.keyboard.interfaces.OnKeyboardActionListener
import com.simplemobiletools.keyboard.interfaces.RefreshClipsListener
import com.simplemobiletools.keyboard.models.Clip
import com.simplemobiletools.keyboard.models.ClipsSectionLabel
@ -52,49 +52,18 @@ import kotlinx.android.synthetic.main.keyboard_view_keyboard.view.*
import java.util.*
@SuppressLint("UseCompatLoadingForDrawables", "ClickableViewAccessibility")
class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: AttributeSet?, defStyleRes: Int = 0) :
View(context, attrs, defStyleRes) {
class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: AttributeSet?, defStyleRes: Int = 0) : View(context, attrs, defStyleRes) {
interface OnKeyboardActionListener {
/**
* Called when the user presses a key. This is sent before the [.onKey] is called. For keys that repeat, this is only called once.
* @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key, the value will be zero.
*/
fun onPress(primaryCode: Int)
/**
* Send a key press to the listener.
* @param code this is the key that was pressed
*/
fun onKey(code: Int)
/**
* Called when the finger has been lifted after pressing a key
*/
fun onActionUp()
/**
* Called when the user long presses Space and moves to the left
*/
fun moveCursorLeft()
/**
* Called when the user long presses Space and moves to the right
*/
fun moveCursorRight()
/**
* Sends a sequence of characters to the listener.
* @param text the string to be displayed.
*/
fun onText(text: String)
/**
* Called to force the KeyboardView to reload the keyboard
*/
fun reloadKeyboard()
override fun dispatchHoverEvent(event: MotionEvent): Boolean {
return if (accessHelper?.dispatchHoverEvent(event) == true) {
true
} else {
super.dispatchHoverEvent(event)
}
}
private var accessHelper: AccessHelper? = null
private var mKeyboard: MyKeyboard? = null
private var mCurrentKeyIndex: Int = NOT_A_KEY
@ -184,9 +153,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
/** The canvas for the above mutable keyboard bitmap */
private var mCanvas: Canvas? = null
/** The accessibility manager for accessibility support */
private val mAccessibilityManager: AccessibilityManager
private var mHandler: Handler? = null
companion object {
@ -245,7 +211,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
mPaint.textAlign = Align.CENTER
mPaint.alpha = 255
mMiniKeyboardCache = HashMap()
mAccessibilityManager = (context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager)
mPopupMaxMoveDistance = resources.getDimension(R.dimen.popup_max_move_distance)
mTopSmallNumberSize = resources.getDimension(R.dimen.small_text_size)
mTopSmallNumberMarginWidth = resources.getDimension(R.dimen.top_small_number_margin_width)
@ -301,6 +266,10 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
invalidateAllKeys()
computeProximityThreshold(keyboard)
mMiniKeyboardCache.clear()
accessHelper = AccessHelper(this, mKeyboard?.mKeys.orEmpty())
ViewCompat.setAccessibilityDelegate(this, accessHelper)
// Not really necessary to do every time, but will free up views
// Switching to a different keyboard should abort any pending keys so that the key up
// doesn't get delivered to the old or new keyboard
@ -479,7 +448,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 != ShiftState.OFF && newLabel.length < 3 && Character.isLowerCase(newLabel[0])) {
if (!newLabel.isNullOrEmpty() && mKeyboard!!.mShiftState != ShiftState.OFF && newLabel.length < 3 && Character.isLowerCase(newLabel[0])) {
newLabel = newLabel.toString().uppercase(Locale.getDefault())
}
return newLabel
@ -644,10 +613,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
val secondaryIconBottom = secondaryIconTop + secondaryIconHeight
secondaryIcon.setBounds(
secondaryIconLeft,
secondaryIconTop,
secondaryIconRight,
secondaryIconBottom
secondaryIconLeft, secondaryIconTop, secondaryIconRight, secondaryIconBottom
)
secondaryIcon.draw(canvas)
@ -833,29 +799,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
val oldKeyIndex = mCurrentKeyIndex
val previewPopup = mPreviewPopup
mCurrentKeyIndex = keyIndex
// Release the old key and press the new key
val keys = mKeys
if (oldKeyIndex != mCurrentKeyIndex) {
if (oldKeyIndex != NOT_A_KEY && keys.size > oldKeyIndex) {
val oldKey = keys[oldKeyIndex]
oldKey.pressed = false
invalidateKey(oldKeyIndex)
val keyCode = oldKey.code
sendAccessibilityEventForUnicodeCharacter(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED, keyCode)
}
if (mCurrentKeyIndex != NOT_A_KEY && keys.size > mCurrentKeyIndex) {
val newKey = keys[mCurrentKeyIndex]
val code = newKey.code
if (context.config.showKeyBorders || (code == KEYCODE_SHIFT || code == KEYCODE_MODE_CHANGE || code == KEYCODE_DELETE || code == KEYCODE_ENTER || code == KEYCODE_SPACE)) {
newKey.pressed = true
}
invalidateKey(mCurrentKeyIndex)
sendAccessibilityEventForUnicodeCharacter(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED, code)
}
}
if (!context.config.showPopupOnKeypress) {
return
@ -866,8 +809,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
if (previewPopup.isShowing) {
if (keyIndex == NOT_A_KEY) {
mHandler!!.sendMessageDelayed(
mHandler!!.obtainMessage(MSG_REMOVE_PREVIEW),
DELAY_AFTER_PREVIEW.toLong()
mHandler!!.obtainMessage(MSG_REMOVE_PREVIEW), DELAY_AFTER_PREVIEW.toLong()
)
}
}
@ -960,22 +902,6 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
}
}
private fun sendAccessibilityEventForUnicodeCharacter(eventType: Int, code: Int) {
if (mAccessibilityManager.isEnabled) {
val event = AccessibilityEvent.obtain(eventType)
onInitializeAccessibilityEvent(event)
val text: String = when (code) {
KEYCODE_DELETE -> context.getString(R.string.keycode_delete)
KEYCODE_ENTER -> context.getString(R.string.keycode_enter)
KEYCODE_MODE_CHANGE -> context.getString(R.string.keycode_mode_change)
KEYCODE_SHIFT -> context.getString(R.string.keycode_shift)
else -> code.toChar().toString()
}
event.text.add(text)
mAccessibilityManager.sendAccessibilityEvent(event)
}
}
/**
* Requests a redraw of the entire keyboard. Calling [.invalidate] is not sufficient because the keyboard renders the keys to an off-screen buffer and
* an invalidate() only draws the cached buffer.
@ -1090,8 +1016,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
mMiniKeyboard!!.setKeyboard(keyboard)
mPopupParent = this
mMiniKeyboardContainer!!.measure(
MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST),
MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)
MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST)
)
mMiniKeyboardCache[popupKey] = mMiniKeyboardContainer
} else {

View File

@ -63,7 +63,7 @@
android:layout_height="@dimen/toolbar_icon_height"
android:layout_marginEnd="@dimen/medium_margin"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/settings"
android:contentDescription="@string/clipboard_pinned"
android:padding="@dimen/small_margin"
android:src="@drawable/ic_clipboard_vector"
app:layout_constraintBottom_toBottomOf="parent"

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">تغيير نوع لوحة المفاتيح</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">إظهار محتوى الحافظة إذا كان متوفرا</string>
<string name="show_popup">إظهار نافذة منبثقة عند الضغط على المفاتيح</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Змяніць тып клавіятуры</string>
<string name="keycode_shift">Зрух</string>
<string name="keycode_enter">Увайдзіце</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Паказаць змесціва буфера абмену, калі яно даступна</string>
<string name="show_popup">Паказваць усплывальнае акно пры націску клавішы</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Промяна на типа клавиатура</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Показване на клипборд съдържанието, ако е налично</string>
<string name="show_popup">Показване на изскачащ прозорец при натискане на клавиш</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Canvia el tipus de teclat</string>
<string name="keycode_shift">Majúscules</string>
<string name="keycode_enter">Retorn</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Mostra el contingut del porta-retalls si està disponible</string>
<string name="show_popup">Mostra una finestra emergent en prémer les tecles</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">گۆڕینی شێواز</string>
<string name="keycode_shift">شێفت</string>
<string name="keycode_enter">ئینتەر</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">پیشاندانی دوایین لەبەرگیراوە</string>
<string name="show_popup">بچووککراوەی پیت</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Změnit typ klávesnice</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Zobrazit obsah schránky, pokud je k dispozici</string>
<string name="show_popup">Zobrazit vyskakovací okno při stisknutí klávesy</string>
@ -41,4 +42,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Skift tastaturtype</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Vis indhold i udklipsholder, hvis det er tilgængeligt</string>
<string name="show_popup">Vis en popup ved tastetryk</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Tastaturtyp ändern</string>
<string name="keycode_shift">Umschalttaste</string>
<string name="keycode_enter">Eingabe</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Inhalt der Zwischenablage anzeigen, falls vorhanden</string>
<string name="show_popup">Bei Tastendruck ein Popup anzeigen</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Αλλαγή τύπου πληκτρολογίου</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Εμφάνιση περιεχομένου πρόχειρου εάν είναι διαθέσιμο</string>
<string name="show_popup">Εμφάνιση ανάδυσης στο πάτημα πλήκτρων</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Change keyboard type</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Show clipboard content if available</string>
<string name="show_popup">Show a popup on keypress</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Cambiar el tipo de teclado</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Mostrar el contenido del portapapeles si está disponible</string>
<string name="show_popup">Mostrar una ventana emergente al pulsar una tecla</string>
@ -41,4 +42,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Muuda klaviatuuri tüüpi</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Sisenema</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Näita lõikelaua kirjeid</string>
<string name="show_popup">Klahvivajutusel näita hüpikakent</string>
@ -41,4 +42,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Vaihda näppäimistön tyyppi</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Näytä leikepöydän sisältö, jos saatavilla</string>
<string name="show_popup">Näytä ponnahdus näppäinten painalluksesta</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Changer de type de clavier</string>
<string name="keycode_shift">Majuscule</string>
<string name="keycode_enter">Entrée</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Afficher le contenu du presse-papiers si disponible</string>
<string name="show_popup">Afficher une fenêtre contextuelle en cas de pression sur une touche</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Cambialo tipo do teclado</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Mostralo contido do portapapeis se atopase dispoñible</string>
<string name="show_popup">Mostra unha ventá emerxente ao premer nunha tecla</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Promijeni vrstu tipkovnice</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Prikaži sadržaj međuspremnika ako postoji</string>
<string name="show_popup">Prikaži skočni prozor prilikom pritiskanja tipke</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Billentyűzet típusának módosítása</string>
<string name="keycode_shift">Váltás</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Vágólap tartalmának megjelenítése, ha rendelkezésre áll</string>
<string name="show_popup">Felugró ablak megjelenítése billentyűleütéskor</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Ubah tipe keyboard</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Tampilkan konten papan klip jika tersedia</string>
<string name="show_popup">Tampilkan sebuah popup pada penekanan tombol</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Cambia il tipo di tastiera</string>
<string name="keycode_shift">Maiusc</string>
<string name="keycode_enter">Invio</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Mostra il contenuto degli appunti se disponibile</string>
<string name="show_popup">Mostra un popup alla pressione di un tasto</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">שנה את סוג המקלדת</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">הצג תוכן של לוח אם זמין</string>
<string name="show_popup">הצג חלון קופץ בלחיצת מקש</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">キーボードの種類を変更する</string>
<string name="keycode_shift">シフト</string>
<string name="keycode_enter">エンター</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">クリップボードの内容がある場合、それを表示する</string>
<string name="show_popup">キー入力時にポップアップを表示する</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Keisti klaviatūros tipą</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Jei prieinama, rodyti iškarpinės turinį</string>
<string name="show_popup">Show a popup on keypress</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">കീബോർഡ് തരം മാറ്റുക</string>
<string name="keycode_shift">ഷിഫ്റ്റ്</string>
<string name="keycode_enter">നൽകുക</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">ക്ലിപ്പ്ബോർഡ് ഉള്ളടക്കം ലഭ്യമാണെങ്കിൽ കാണിക്കുക</string>
<string name="show_popup">കീപ്രസ്സിൽ ഒരു പോപ്പ്അപ്പ് കാണിക്കുക</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Change keyboard type</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Show clipboard content if available</string>
<string name="show_popup">Show a popup on keypress</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Type toetsenbord veranderen</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Klembordinhoud tonen indien beschikbaar</string>
<string name="show_popup">Pop-up tonen bij toetsaanslagen</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">کیبورڈ دی قسم بدلو</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">جے اُپلبدھ ہووے تاں کاپی کیتی لکھت ویکھو</string>
<string name="show_popup">جدوں کنجی دباؤݨ کنجی تے وڈا اکھر ویکھو</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Change keyboard type</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Show clipboard content if available</string>
<string name="show_popup">Show a popup on keypress</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Zmień typ klawiatury</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Pokazuj zawartość schowka, jeśli jest dostępna</string>
<string name="show_popup">Pokazuj wyskakujące okienko przy naciśnięciu klawisza</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Mudar tipo de teclado</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Mostrar conteúdo da área de transferência se houver</string>
<string name="show_popup">Mostrar pop-up ao digitar</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Alterar tipo de teclado</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Mostrar conteúdo da área de transferência, se disponível</string>
<string name="show_popup">Mostrar pop-up ao premir as teclas</string>
@ -41,4 +42,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Schimbați tipul de tastatură</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Afișează conținutul clipboard-ului, dacă este disponibil</string>
<string name="show_popup">Afișați o fereastră pop-up la apăsarea unei taste</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Изменить тип клавиатуры</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Пробел</string>
<!-- Settings -->
<string name="show_clipboard_content">Показывать содержимое буфера обмена при наличии</string>
<string name="show_popup">Показывать ввод по нажатию</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Zmeniť typ klávesnice</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Medzerník</string>
<!-- Settings -->
<string name="show_clipboard_content">Zobraziť obsah schránky, ak je dostupná</string>
<string name="show_popup">Zobraziť detail znaku pri stlačení</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Spremeni vrsto tipkovnice</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Prikaži vsebino odložišča, če je na voljo</string>
<string name="show_popup">Prikaži pojavno okno ob pritisku tipke</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Промените тип тастатуре</string>
<string name="keycode_shift">Смена</string>
<string name="keycode_enter">Унеси</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Прикажи садржај међуспремника ако је доступан</string>
<string name="show_popup">Прикажи искачући прозор при притиску на тастер</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Ändra tangentbordstyp</string>
<string name="keycode_shift">Skift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Visa urklippets innehåll om tillgängligt</string>
<string name="show_popup">Visa en popupp vid knapptryck</string>
@ -41,4 +42,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Change keyboard type</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Show clipboard content if available</string>
<string name="show_popup">Show a popup on keypress</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Klavye türünü değiştir</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Varsa pano içeriğini göster</string>
<string name="show_popup">Tuşa basıldığında bir açılır menü göster</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Змінити тип клавіатури</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Показувати вміст буфера обміну, якщо він є</string>
<string name="show_popup">Показувати popup при натисканні</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">更改键盘类型</string>
<string name="keycode_shift">上档</string>
<string name="keycode_enter">输入</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">如可用显示剪贴板内容</string>
<string name="show_popup">按键时显示弹框</string>

View File

@ -27,6 +27,7 @@
<string name="keycode_mode_change">變更鍵盤類型</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">可以的話顯示剪貼簿內容</string>
<string name="show_popup">按下按鍵時顯示彈出效果</string>

View File

@ -26,6 +26,7 @@
<string name="keycode_mode_change">Change keyboard type</string>
<string name="keycode_shift">Shift</string>
<string name="keycode_enter">Enter</string>
<string name="keycode_space">Spacebar</string>
<!-- Settings -->
<string name="show_clipboard_content">Show clipboard content if available</string>
<string name="show_popup">Show a popup on keypress</string>