mirror of
https://github.com/SimpleMobileTools/Simple-Keyboard.git
synced 2025-03-26 08:20:19 +01:00
Merge pull request #188 from Merkost/talkback_improvements
Talkback improvements
This commit is contained in:
commit
a9a9035c4e
@ -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 we’ll 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 that’s under the x, y position,
|
||||
* or ExploreByTouchHelper.HOST_ID if there’s 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 it’s 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 it’s 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
|
||||
}
|
||||
}
|
@ -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
|
||||
|
@ -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()
|
||||
}
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user