mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-08-17 19:01:28 +02:00
Compare commits
10 Commits
layout-row
...
insets-nav
Author | SHA1 | Date | |
---|---|---|---|
35bd1d038a | |||
0680dd055b | |||
4ed8594794 | |||
f36a7c8e9d | |||
004ed95dfd | |||
9d12981b34 | |||
c6da6d6ab5 | |||
2e0be0b32b | |||
42528ab211 | |||
71d2784026 |
@ -7,6 +7,7 @@ arab_pc_hindu: Layout includes some ASCII punctuation but not all, missing: !, '
|
||||
arab_pc_ir: Layout includes some ASCII punctuation but not all, missing: ", %, ', ,, /, ;, <, =, >, ?, [, \, ], `, {, |, }
|
||||
beng_national: Layout includes some ASCII punctuation but not all, missing: $
|
||||
beng_provat: Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >, [, \, ], `, {, |, }
|
||||
cyrl_lynyertdz_mk: Layout includes some ASCII punctuation but not all, missing: "
|
||||
cyrl_yaverti: Layout includes some ASCII punctuation but not all, missing: ~
|
||||
cyrl_yxukeng_os: Layout includes some ASCII punctuation but not all, missing: ", #, $, &, ', @, [, ], ~
|
||||
deva_alt: Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), *, +, ., /, :, <, =, >, [, \, ], ^, _, `, {, |, }, ~
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Jak bude klávesa pro přepnutí klávesnice reagovat</string>
|
||||
<string name="pref_vibrate_custom">Vlastní vibrace</string>
|
||||
<string name="pref_vibrate_duration_title">Síla vibrace</string>
|
||||
<string name="pref_pin_entry_enabled_title">Rozvržení zadávání PIN kódu</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Automaticky při psaní čísel, datumů a telefonních čísel</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Styl</string>
|
||||
<string name="pref_margin_bottom_title">Spodní odsazení</string>
|
||||
<string name="pref_keyboard_height_title">Výška klávesnice</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Verhalten der Tastaturumschalttaste</string>
|
||||
<string name="pref_vibrate_custom">Benutzerdefinierte Vibration</string>
|
||||
<string name="pref_vibrate_duration_title">Vibrationsstärke</string>
|
||||
<string name="pref_pin_entry_enabled_title">PIN-Eingabe-Layout</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Für die Nummern-, Datums- und Telefonnummern-Eingabe</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Design</string>
|
||||
<string name="pref_margin_bottom_title">Unterer Abstand</string>
|
||||
<string name="pref_keyboard_height_title">Höhe der Tastatur</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Comportamiento de la tecla para cambiar diseño</string>
|
||||
<string name="pref_vibrate_custom">Vibración personalizada</string>
|
||||
<string name="pref_vibrate_duration_title">Intensidad de vibración</string>
|
||||
<string name="pref_pin_entry_enabled_title">Diseño de introducción de PIN</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Para escribir cifras, fechas y números telefónicos</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Estilo</string>
|
||||
<string name="pref_margin_bottom_title">Margen inferior</string>
|
||||
<string name="pref_keyboard_height_title">Altura del teclado</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">رفتار کلید تغییردهنده صفحه کلید</string>
|
||||
<!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
|
||||
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">سبک</string>
|
||||
<string name="pref_margin_bottom_title">حاشیه پایین</string>
|
||||
<string name="pref_keyboard_height_title">ارتفاع صفحه کلید</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Comportement de la touche de changement de clavier</string>
|
||||
<string name="pref_vibrate_custom">Vibrations personnalisées</string>
|
||||
<string name="pref_vibrate_duration_title">Intensité des vibrations</string>
|
||||
<string name="pref_pin_entry_enabled_title">Clavier PIN</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Lors de la saisie de nombres, de dates et de numéros de téléphone</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Style</string>
|
||||
<string name="pref_margin_bottom_title">Marge du bas</string>
|
||||
<string name="pref_keyboard_height_title">Hauteur du clavier</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
||||
<!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
|
||||
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Stile</string>
|
||||
<string name="pref_margin_bottom_title">Margine inferiore</string>
|
||||
<string name="pref_keyboard_height_title">Altezza tastiera</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">キーボード切替キーの挙動</string>
|
||||
<string name="pref_vibrate_custom">キーボード独自の振動設定</string>
|
||||
<string name="pref_vibrate_duration_title">振動の時間</string>
|
||||
<string name="pref_pin_entry_enabled_title">PIN入力</string>
|
||||
<string name="pref_pin_entry_enabled_summary">数字・日付・電話番号入力時</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">表示</string>
|
||||
<string name="pref_margin_bottom_title">下の余白</string>
|
||||
<string name="pref_keyboard_height_title">キーボードの高さ</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">키보드 전환 키의 동작 방식입니다.</string>
|
||||
<string name="pref_vibrate_custom">사용자 정의 진동</string>
|
||||
<string name="pref_vibrate_duration_title">진동 강도</string>
|
||||
<string name="pref_pin_entry_enabled_title">Pin 입력 레이아웃</string>
|
||||
<string name="pref_pin_entry_enabled_summary">숫자를 입력할 때, 날짜와 전화번호를 입력할 때 해당 레이아웃이 사용됩니다.</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">스타일</string>
|
||||
<string name="pref_margin_bottom_title">아래 넓이</string>
|
||||
<string name="pref_keyboard_height_title">키보드 높이</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Tastatūras pārslēgšanas taustiņa uzvedība</string>
|
||||
<string name="pref_vibrate_custom">Pielāgota trīcēšana</string>
|
||||
<string name="pref_vibrate_duration_title">Trīcēšanas stiprums</string>
|
||||
<string name="pref_pin_entry_enabled_title">Piespraust ievadīšanas izkārtojumu</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Kad ievada skaitļus, datumus un tālruņa numurus</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Izskata pielāgojumi</string>
|
||||
<string name="pref_margin_bottom_title">Apakšējā apmale</string>
|
||||
<string name="pref_keyboard_height_title">Tastatūras augstums</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Działanie klawisza przełączającego klawiaturę</string>
|
||||
<string name="pref_vibrate_custom">Własna wibracja</string>
|
||||
<string name="pref_vibrate_duration_title">Intensywność wibracji</string>
|
||||
<string name="pref_pin_entry_enabled_title">Układ klawiatury PIN</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Podczas wpisywania liczb, dat i numerów telefonu</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Styl</string>
|
||||
<string name="pref_margin_bottom_title">Margines dolny</string>
|
||||
<string name="pref_keyboard_height_title">Wysokość klawiatury</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Comportamento da tecla de troca de teclado</string>
|
||||
<string name="pref_vibrate_custom">Vibração personalizada</string>
|
||||
<string name="pref_vibrate_duration_title">Intensidade da vibração</string>
|
||||
<string name="pref_pin_entry_enabled_title">Layout PIN</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Quando digitando números, datas ou números de telefone</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Estilo</string>
|
||||
<string name="pref_margin_bottom_title">Margem inferior</string>
|
||||
<string name="pref_keyboard_height_title">Altura do teclado</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Comportamentul tastei pentru schimbarea tastaturii</string>
|
||||
<!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
|
||||
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Stil</string>
|
||||
<string name="pref_margin_bottom_title">Marginea de jos</string>
|
||||
<string name="pref_keyboard_height_title">Înălțimea tastaturii</string>
|
||||
|
@ -5,9 +5,9 @@
|
||||
<string name="short_description">Легкая клавиатура для пользователей, заботящихся о конфиденциальности.</string>
|
||||
<string name="store_description">Главная особенность клавиатуры — это возможность легко напечатать любой ASCII-символ жестами в углы клавиш.\n\nПриложение изначально было разработано для использования с Termux.\nНа данный момент оно также удобно в повседневном использовании.\n\nПриложение не содержит рекламы, не осуществляет никаких запросов в сеть и имеет открытый исходный код.</string>
|
||||
<string name="pref_portrait">В портретном режиме</string>
|
||||
<!-- <string name="pref_portrait_unfolded">In portrait mode unfolded</string> -->
|
||||
<string name="pref_portrait_unfolded">В развернутом портретном режиме</string>
|
||||
<string name="pref_landscape">В ландшафтном режиме</string>
|
||||
<!-- <string name="pref_landscape_unfolded">In landscape mode unfolded</string> -->
|
||||
<string name="pref_landscape_unfolded">В развернутом ландшафтном режиме</string>
|
||||
<string name="pref_category_layout">Расположение</string>
|
||||
<string name="pref_label_brightness">Изменить яркость клавиатуры</string>
|
||||
<string name="pref_keyboard_opacity">Изменить прозрачность фона</string>
|
||||
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Поведение клавиши переключения клавиатуры</string>
|
||||
<string name="pref_vibrate_custom">Настройка вибрации</string>
|
||||
<string name="pref_vibrate_duration_title">Интенсивность вибрации</string>
|
||||
<string name="pref_pin_entry_enabled_title">Закрепить раскладку</string>
|
||||
<string name="pref_pin_entry_enabled_summary">При вводе чисел, дат и телефонных номеров</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Стиль</string>
|
||||
<string name="pref_margin_bottom_title">Нижняя граница поля</string>
|
||||
<string name="pref_keyboard_height_title">Высота клавиатуры</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Klavye değistirme tuşunun davranışını belirler</string>
|
||||
<string name="pref_vibrate_custom">Özel titreşim</string>
|
||||
<string name="pref_vibrate_duration_title">Titreşim yoğunluğu</string>
|
||||
<string name="pref_pin_entry_enabled_title">NumPad</string>
|
||||
<string name="pref_pin_entry_enabled_summary">Sayıları, tarihleri ve telefon numaralarını yazarken</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Tarz</string>
|
||||
<string name="pref_margin_bottom_title">Alt boşluk</string>
|
||||
<string name="pref_keyboard_height_title">Klavye yüksekliği</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Поведінка клавіші перемикання клавіатури</string>
|
||||
<string name="pref_vibrate_custom">Спеціальна вібрація</string>
|
||||
<string name="pref_vibrate_duration_title">Інтенсивність вібрації</string>
|
||||
<string name="pref_pin_entry_enabled_title">Макет введення PIN-коду</string>
|
||||
<string name="pref_pin_entry_enabled_summary">При наборі чисел, дат і номерів телефонів</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Стиль</string>
|
||||
<string name="pref_margin_bottom_title">Поле знизу</string>
|
||||
<string name="pref_keyboard_height_title">Висота клавіатури</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<!-- <string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string> -->
|
||||
<!-- <string name="pref_vibrate_custom">Custom vibration</string> -->
|
||||
<!-- <string name="pref_vibrate_duration_title">Vibration intensity</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_title">Pin entry layout</string> -->
|
||||
<!-- <string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">Kiểu cách</string>
|
||||
<string name="pref_margin_bottom_title">Căn lề dưới</string>
|
||||
<string name="pref_keyboard_height_title">Chiều cao bàn phím</string>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">切换键盘按钮的行为</string>
|
||||
<string name="pref_vibrate_custom">自定义振动</string>
|
||||
<string name="pref_vibrate_duration_title">振动强度</string>
|
||||
<string name="pref_pin_entry_enabled_title">数字输入布局</string>
|
||||
<string name="pref_pin_entry_enabled_summary">输入数字、日期与电话号码时</string>
|
||||
<!-- <string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_pin">PIN Entry</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_number">Number pane</string> -->
|
||||
<!-- <string name="pref_number_entry_layout_normal">Use the main layout</string> -->
|
||||
<string name="pref_category_style">样式</string>
|
||||
<string name="pref_margin_bottom_title">键盘下边距</string>
|
||||
<string name="pref_keyboard_height_title">键盘高度</string>
|
||||
|
@ -84,4 +84,14 @@
|
||||
<item>4</item>
|
||||
<item>12</item>
|
||||
</string-array>
|
||||
<string-array name="pref_number_entry_entries">
|
||||
<item>@string/pref_number_entry_layout_pin</item>
|
||||
<item>@string/pref_number_entry_layout_number</item>
|
||||
<item>@string/pref_number_entry_layout_normal</item>
|
||||
</string-array>
|
||||
<string-array name="pref_number_entry_values">
|
||||
<item>pin</item>
|
||||
<item>number</item>
|
||||
<item>normal</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
@ -20,6 +20,7 @@
|
||||
<item>cyrl_jcuken_kk</item>
|
||||
<item>cyrl_jcuken_ru</item>
|
||||
<item>cyrl_jcuken_uk</item>
|
||||
<item>cyrl_lynyertdz_mk</item>
|
||||
<item>cyrl_lynyertz_sr</item>
|
||||
<item>cyrl_ueishsht</item>
|
||||
<item>cyrl_yaverti</item>
|
||||
@ -105,6 +106,7 @@
|
||||
<item>ЙЦУКЕН (Қазақша)</item>
|
||||
<item>ЙЦУКЕН (Русский)</item>
|
||||
<item>ЙЦУКЕН (Українська)</item>
|
||||
<item>ЉЊЕРТЅ (Македонски)</item>
|
||||
<item>ЉЊЕРТЗ (Српски)</item>
|
||||
<item>УЕИШЩ (Български, БДС)</item>
|
||||
<item>ЯВЕРТЪ</item>
|
||||
@ -190,6 +192,7 @@
|
||||
<item>@xml/cyrl_jcuken_kk</item>
|
||||
<item>@xml/cyrl_jcuken_ru</item>
|
||||
<item>@xml/cyrl_jcuken_uk</item>
|
||||
<item>@xml/cyrl_lynyertdz_mk</item>
|
||||
<item>@xml/cyrl_lynyertz_sr</item>
|
||||
<item>@xml/cyrl_ueishsht</item>
|
||||
<item>@xml/cyrl_yaverti</item>
|
||||
|
@ -49,8 +49,10 @@
|
||||
<string name="pref_switch_input_immediate_summary">Behavior of the keyboard-switching key</string>
|
||||
<string name="pref_vibrate_custom">Custom vibration</string>
|
||||
<string name="pref_vibrate_duration_title">Vibration intensity</string>
|
||||
<string name="pref_pin_entry_enabled_title">Pin entry layout</string>
|
||||
<string name="pref_pin_entry_enabled_summary">When typing numbers, dates and phone numbers</string>
|
||||
<string name="pref_number_entry_title">Layout when typing numbers, dates and phone numbers</string>
|
||||
<string name="pref_number_entry_layout_pin">PIN Entry</string>
|
||||
<string name="pref_number_entry_layout_number">Number pane</string>
|
||||
<string name="pref_number_entry_layout_normal">Use the main layout</string>
|
||||
<string name="pref_category_style">Style</string>
|
||||
<string name="pref_margin_bottom_title">Margin bottom</string>
|
||||
<string name="pref_keyboard_height_title">Keyboard height</string>
|
||||
|
@ -6,9 +6,6 @@
|
||||
<dimen name="emoji_text_size">28dp</dimen>
|
||||
<dimen name="clipboard_view_height">300dp</dimen>
|
||||
<dimen name="pref_button_size">28dp</dimen>
|
||||
<!-- Margin needed to accomodate the gesture nav bar on Android 15. Found in
|
||||
[core/res/res/values/dimens.xml]. -->
|
||||
<dimen name="bottom_inset_min">48dp</dimen>
|
||||
<!-- Will be overwritten automatically by Gradle for the debug build variant -->
|
||||
<bool name="debug_logs">false</bool>
|
||||
</resources>
|
||||
|
@ -41,6 +41,7 @@
|
||||
<subtype android:label="%s" android:languageTag="ko" android:imeSubtypeLocale="ko_KR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=hangul,default_layout=latn_qwerty_us"/>
|
||||
<subtype android:label="%s" android:languageTag="lt" android:imeSubtypeLocale="lt_LT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lt,extra_keys=accent_ogonek:ą:ę:į:ų@s|accent_caron:č:š:ž@f|accent_dot_above:ė@s|accent_macron:ū@o|€"/>
|
||||
<subtype android:label="%s" android:languageTag="lv" android:imeSubtypeLocale="lv_LV" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_lv,extra_keys=accent_macron:ā:ē:ī:ū@o|accent_caron:č:š:ž@f|accent_ogonek:ķ:ļ:ņ@s|accent_cedille:ģ@c|€"/>
|
||||
<subtype android:label="%s" android:languageTag="mk" android:imeSubtypeLocale="mk" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_lynyertdz_mk,extra_keys=ѕ|ѓ|ќ|ѝ|ѐ|љ|њ|џ|„|“|€"/>
|
||||
<subtype android:label="%s" android:languageTag="mn" android:imeSubtypeLocale="mn_MN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=cyrillic,default_layout=cyrl_fcuzhen_mn,extra_keys=ү|ө"/>
|
||||
<subtype android:label="%s" android:languageTag="mr" android:imeSubtypeLocale="mr_IN" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=devanagari,default_layout=deva_inscript,extra_keys=₹"/>
|
||||
<subtype android:label="%s" android:languageTag="mt" android:imeSubtypeLocale="mt_MT" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_mt,extra_keys=accent_grave:à:è:ì:ò:ù|accent_dot_above:ċ:ż:ġ|ħ"/>
|
||||
|
@ -25,7 +25,7 @@
|
||||
<CheckBoxPreference android:key="switch_input_immediate" android:title="@string/pref_switch_input_immediate_title" android:summary="@string/pref_switch_input_immediate_summary" android:defaultValue="false"/>
|
||||
<CheckBoxPreference android:key="vibrate_custom" android:title="@string/pref_vibrate_custom" android:defaultValue="false"/>
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:dependency="vibrate_custom" android:key="vibrate_duration" android:title="@string/pref_vibrate_duration_title" android:summary="%sms" android:defaultValue="20" min="0" max="100"/>
|
||||
<CheckBoxPreference android:key="pin_entry_enabled" android:title="@string/pref_pin_entry_enabled_title" android:summary="@string/pref_pin_entry_enabled_summary" android:defaultValue="true"/>
|
||||
<ListPreference android:key="number_entry_layout" android:title="@string/pref_number_entry_title" android:summary="%s" android:defaultValue="pin" android:entries="@array/pref_number_entry_entries" android:entryValues="@array/pref_number_entry_values"/>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="@string/pref_category_style">
|
||||
<ListPreference android:key="theme" android:title="@string/pref_theme" android:summary="%s" android:defaultValue="system" android:entries="@array/pref_theme_entries" android:entryValues="@array/pref_theme_values"/>
|
||||
|
@ -58,7 +58,7 @@ public final class Config
|
||||
public int theme; // Values are R.style.*
|
||||
public boolean autocapitalisation;
|
||||
public boolean switch_input_immediate;
|
||||
public boolean pin_entry_enabled;
|
||||
public NumberLayout selected_number_layout;
|
||||
public boolean borderConfig;
|
||||
public int circle_sensitivity;
|
||||
public boolean clipboard_history_enabled;
|
||||
@ -81,7 +81,6 @@ public final class Config
|
||||
int current_layout_landscape;
|
||||
int current_layout_unfolded_portrait;
|
||||
int current_layout_unfolded_landscape;
|
||||
public int bottomInsetMin;
|
||||
|
||||
private Config(SharedPreferences prefs, Resources res, IKeyEventHandler h, Boolean foldableUnfolded)
|
||||
{
|
||||
@ -169,15 +168,13 @@ public final class Config
|
||||
switch_input_immediate = _prefs.getBoolean("switch_input_immediate", false);
|
||||
extra_keys_param = ExtraKeysPreference.get_extra_keys(_prefs);
|
||||
extra_keys_custom = CustomExtraKeysPreference.get(_prefs);
|
||||
pin_entry_enabled = _prefs.getBoolean("pin_entry_enabled", true);
|
||||
selected_number_layout = NumberLayout.valueOf(_prefs.getString("number_entry_layout", "pin").toUpperCase());
|
||||
current_layout_portrait = _prefs.getInt("current_layout_portrait", 0);
|
||||
current_layout_landscape = _prefs.getInt("current_layout_landscape", 0);
|
||||
current_layout_unfolded_portrait = _prefs.getInt("current_layout_unfolded_portrait", 0);
|
||||
current_layout_unfolded_landscape = _prefs.getInt("current_layout_unfolded_landscape", 0);
|
||||
circle_sensitivity = Integer.valueOf(_prefs.getString("circle_sensitivity", "2"));
|
||||
clipboard_history_enabled = _prefs.getBoolean("clipboard_history_enabled", false);
|
||||
bottomInsetMin = Utils.is_navigation_bar_gestural(res) ?
|
||||
(int)res.getDimension(R.dimen.bottom_inset_min) : 0;
|
||||
}
|
||||
|
||||
public int get_current_layout()
|
||||
@ -300,7 +297,7 @@ public final class Config
|
||||
|
||||
/** Config migrations. */
|
||||
|
||||
private static int CONFIG_VERSION = 2;
|
||||
private static int CONFIG_VERSION = 3;
|
||||
|
||||
public static void migrate(SharedPreferences prefs)
|
||||
{
|
||||
@ -332,6 +329,11 @@ public final class Config
|
||||
e.putString("number_row", add_number_row ? "no_symbols" : "no_number_row");
|
||||
// Fallthrough
|
||||
case 2:
|
||||
if (!prefs.contains("number_entry_layout")) {
|
||||
e.putString("number_entry_layout", prefs.getBoolean("pin_entry_enabled", true) ? "pin" : "number");
|
||||
}
|
||||
// Fallthrough
|
||||
case 3:
|
||||
default: break;
|
||||
}
|
||||
e.apply();
|
||||
|
@ -78,6 +78,11 @@ public final class KeyEventHandler
|
||||
case Compose_pending:
|
||||
_autocap.stop();
|
||||
break;
|
||||
case Slider:
|
||||
// Don't wait for the next key_up and move the cursor right away. This
|
||||
// is called after the trigger distance have been travelled.
|
||||
handle_slider(key.getSlider(), key.getSliderRepeat(), true);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
@ -99,7 +104,7 @@ public final class KeyEventHandler
|
||||
case Modifier: break;
|
||||
case Editing: handle_editing_key(key.getEditing()); break;
|
||||
case Compose_pending: _recv.set_compose_pending(true); break;
|
||||
case Slider: handle_slider(key.getSlider(), key.getSliderRepeat()); break;
|
||||
case Slider: handle_slider(key.getSlider(), key.getSliderRepeat(), false); break;
|
||||
case Macro: evaluate_macro(key.getMacro()); break;
|
||||
}
|
||||
update_meta_state(old_mods);
|
||||
@ -229,9 +234,9 @@ public final class KeyEventHandler
|
||||
{
|
||||
switch (ev)
|
||||
{
|
||||
case COPY: send_context_menu_action(android.R.id.copy); break;
|
||||
case COPY: if(is_selection_not_empty()) send_context_menu_action(android.R.id.copy); break;
|
||||
case PASTE: send_context_menu_action(android.R.id.paste); break;
|
||||
case CUT: send_context_menu_action(android.R.id.cut); break;
|
||||
case CUT: if(is_selection_not_empty()) send_context_menu_action(android.R.id.cut); break;
|
||||
case SELECT_ALL: send_context_menu_action(android.R.id.selectAll); break;
|
||||
case SHARE: send_context_menu_action(android.R.id.shareText); break;
|
||||
case PASTE_PLAIN: send_context_menu_action(android.R.id.pasteAsPlainText); break;
|
||||
@ -261,7 +266,7 @@ public final class KeyEventHandler
|
||||
}
|
||||
|
||||
/** [r] might be negative, in which case the direction is reversed. */
|
||||
void handle_slider(KeyValue.Slider s, int r)
|
||||
void handle_slider(KeyValue.Slider s, int r, boolean key_down)
|
||||
{
|
||||
switch (s)
|
||||
{
|
||||
@ -269,8 +274,8 @@ public final class KeyEventHandler
|
||||
case Cursor_right: move_cursor(r); break;
|
||||
case Cursor_up: move_cursor_vertical(-r); break;
|
||||
case Cursor_down: move_cursor_vertical(r); break;
|
||||
case Selection_cursor_left: move_cursor_sel(r, true); break;
|
||||
case Selection_cursor_right: move_cursor_sel(r, false); break;
|
||||
case Selection_cursor_left: move_cursor_sel(r, true, key_down); break;
|
||||
case Selection_cursor_right: move_cursor_sel(r, false, key_down); break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -310,7 +315,7 @@ public final class KeyEventHandler
|
||||
|
||||
/** Move one of the two side of a selection. If [sel_left] is true, the left
|
||||
position is moved, otherwise the right position is moved. */
|
||||
void move_cursor_sel(int d, boolean sel_left)
|
||||
void move_cursor_sel(int d, boolean sel_left, boolean key_down)
|
||||
{
|
||||
InputConnection conn = _recv.getCurrentInputConnection();
|
||||
if (conn == null)
|
||||
@ -320,10 +325,23 @@ public final class KeyEventHandler
|
||||
{
|
||||
int sel_start = et.selectionStart;
|
||||
int sel_end = et.selectionEnd;
|
||||
if (sel_left == (sel_start <= sel_end))
|
||||
sel_start += d;
|
||||
else
|
||||
sel_end += d;
|
||||
// Reorder the selection when the slider has just been pressed. The
|
||||
// selection might have been reversed if one end crossed the other end
|
||||
// with a previous slider.
|
||||
if (key_down && sel_start > sel_end)
|
||||
{
|
||||
sel_start = et.selectionEnd;
|
||||
sel_end = et.selectionStart;
|
||||
}
|
||||
do
|
||||
{
|
||||
if (sel_left)
|
||||
sel_start += d;
|
||||
else
|
||||
sel_end += d;
|
||||
// Move the cursor twice if moving it once would make the selection
|
||||
// empty and stop selection mode.
|
||||
} while (sel_start == sel_end);
|
||||
if (conn.setSelection(sel_start, sel_end))
|
||||
return; // Fallback to sending key events if [setSelection] failed
|
||||
}
|
||||
@ -448,6 +466,13 @@ public final class KeyEventHandler
|
||||
_recv.selection_state_changed(false);
|
||||
}
|
||||
|
||||
boolean is_selection_not_empty()
|
||||
{
|
||||
InputConnection conn = _recv.getCurrentInputConnection();
|
||||
if (conn == null) return false;
|
||||
return (conn.getSelectedText(0) != null);
|
||||
}
|
||||
|
||||
public static interface IReceiver
|
||||
{
|
||||
public void handle_event_key(KeyValue.Event ev);
|
||||
|
@ -265,9 +265,9 @@ public class Keyboard2 extends InputMethodService
|
||||
case InputType.TYPE_CLASS_NUMBER:
|
||||
case InputType.TYPE_CLASS_PHONE:
|
||||
case InputType.TYPE_CLASS_DATETIME:
|
||||
if (_config.pin_entry_enabled)
|
||||
if (_config.selected_number_layout == NumberLayout.PIN)
|
||||
return loadPinentry(R.xml.pin);
|
||||
else
|
||||
else if (_config.selected_number_layout == NumberLayout.NUMBER)
|
||||
return loadNumpad(R.xml.numeric);
|
||||
default:
|
||||
break;
|
||||
@ -315,6 +315,7 @@ public class Keyboard2 extends InputMethodService
|
||||
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||
// Allow to draw behind system bars
|
||||
wattrs.setFitInsetsTypes(0);
|
||||
window.setDecorFitsSystemWindows(false);
|
||||
}
|
||||
updateLayoutHeightOf(window, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
final View inputArea = window.findViewById(android.R.id.inputArea);
|
||||
|
@ -47,6 +47,9 @@ public class Keyboard2View extends View
|
||||
private float _marginRight;
|
||||
private float _marginLeft;
|
||||
private float _marginBottom;
|
||||
private int _insets_left = 0;
|
||||
private int _insets_right = 0;
|
||||
private int _insets_bottom = 0;
|
||||
|
||||
private Theme _theme;
|
||||
private Theme.Computed _tc;
|
||||
@ -264,50 +267,11 @@ public class Keyboard2View extends View
|
||||
public void onMeasure(int wSpec, int hSpec)
|
||||
{
|
||||
int width;
|
||||
int insets_left = 0;
|
||||
int insets_right = 0;
|
||||
int insets_bottom = 0;
|
||||
// LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS is set in [Keyboard2#updateSoftInputWindowLayoutParams].
|
||||
// and keyboard is allowed do draw behind status/navigation bars
|
||||
if (VERSION.SDK_INT >= 35)
|
||||
{
|
||||
WindowMetrics metrics =
|
||||
((WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE))
|
||||
.getCurrentWindowMetrics();
|
||||
width = metrics.getBounds().width();
|
||||
WindowInsets wi = metrics.getWindowInsets();
|
||||
int insets_types =
|
||||
WindowInsets.Type.statusBars()
|
||||
| WindowInsets.Type.displayCutout()
|
||||
| WindowInsets.Type.mandatorySystemGestures()
|
||||
| WindowInsets.Type.navigationBars();
|
||||
Insets insets = wi.getInsets(insets_types);
|
||||
insets_left = insets.left;
|
||||
insets_right = insets.right;
|
||||
// On API 35, the keyboard is allowed to draw under the
|
||||
// button-navigation bar but on lower APIs, it must be discounted from
|
||||
// the width.
|
||||
if (VERSION.SDK_INT < 35)
|
||||
{
|
||||
Insets nav_insets = wi.getInsets(WindowInsets.Type.navigationBars());
|
||||
width -= nav_insets.left + nav_insets.right;
|
||||
insets_left -= nav_insets.left;
|
||||
insets_right -= nav_insets.right;
|
||||
}
|
||||
// [insets.bottom] doesn't take into account the buttons that appear in
|
||||
// the gesture navigation bar when the IME is showing so ensure a minimum
|
||||
// of margin is added.
|
||||
if (VERSION.SDK_INT >= 35)
|
||||
insets_bottom = Math.max(insets.bottom, _config.bottomInsetMin);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisplayMetrics dm = getContext().getResources().getDisplayMetrics();
|
||||
width = dm.widthPixels;
|
||||
}
|
||||
_marginLeft = Math.max(_config.horizontal_margin, insets_left);
|
||||
_marginRight = Math.max(_config.horizontal_margin, insets_right);
|
||||
_marginBottom = _config.margin_bottom + insets_bottom;
|
||||
DisplayMetrics dm = getContext().getResources().getDisplayMetrics();
|
||||
width = dm.widthPixels;
|
||||
_marginLeft = Math.max(_config.horizontal_margin, _insets_left);
|
||||
_marginRight = Math.max(_config.horizontal_margin, _insets_right);
|
||||
_marginBottom = _config.margin_bottom + _insets_bottom;
|
||||
_keyWidth = (width - _marginLeft - _marginRight) / _keyboard.keysWidth;
|
||||
_tc = new Theme.Computed(_theme, _config, _keyWidth, _keyboard);
|
||||
// Compute the size of labels based on the width or the height of keys. The
|
||||
@ -343,6 +307,22 @@ public class Keyboard2View extends View
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindowInsets onApplyWindowInsets(WindowInsets wi)
|
||||
{
|
||||
// LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS is set in [Keyboard2#updateSoftInputWindowLayoutParams] for SDK_INT >= 35.
|
||||
if (VERSION.SDK_INT < 35)
|
||||
return wi;
|
||||
int insets_types =
|
||||
WindowInsets.Type.systemBars()
|
||||
| WindowInsets.Type.displayCutout();
|
||||
Insets insets = wi.getInsets(insets_types);
|
||||
_insets_left = insets.left;
|
||||
_insets_right = insets.right;
|
||||
_insets_bottom = insets.bottom;
|
||||
return WindowInsets.CONSUMED;
|
||||
}
|
||||
|
||||
/** Horizontal and vertical position of the 9 indexes. */
|
||||
static final Paint.Align[] LABEL_POSITION_H = new Paint.Align[]{
|
||||
Paint.Align.CENTER, Paint.Align.LEFT, Paint.Align.RIGHT, Paint.Align.LEFT,
|
||||
|
7
srcs/juloo.keyboard2/NumberLayout.java
Normal file
7
srcs/juloo.keyboard2/NumberLayout.java
Normal file
@ -0,0 +1,7 @@
|
||||
package juloo.keyboard2;
|
||||
|
||||
public enum NumberLayout {
|
||||
PIN,
|
||||
NUMBER,
|
||||
NORMAL
|
||||
}
|
@ -108,7 +108,10 @@ public final class Pointers implements Handler.Callback
|
||||
{
|
||||
// No existing pointer, latch the key.
|
||||
if (latched)
|
||||
{
|
||||
add_fake_pointer(key, kv, lock);
|
||||
_handler.onPointerFlagsChanged(false);
|
||||
}
|
||||
}
|
||||
else if ((ptr.flags & FLAG_P_FAKE) == 0)
|
||||
{} // Key already latched but not by a fake ptr, do nothing.
|
||||
@ -118,6 +121,7 @@ public final class Pointers implements Handler.Callback
|
||||
removePtr(ptr);
|
||||
if (latched)
|
||||
add_fake_pointer(key, kv, lock);
|
||||
_handler.onPointerFlagsChanged(false);
|
||||
}
|
||||
else if ((ptr.flags & FLAG_P_LOCKED) != 0)
|
||||
{} // Existing ptr is locked but [lock] is false, do not continue.
|
||||
@ -306,7 +310,6 @@ public final class Pointers implements Handler.Callback
|
||||
// Start sliding mode
|
||||
if (new_value.getKind() == KeyValue.Kind.Slider)
|
||||
startSliding(ptr, x, y, dx, dy, new_value);
|
||||
_handler.onPointerDown(new_value, true);
|
||||
}
|
||||
|
||||
}
|
||||
@ -469,7 +472,7 @@ public final class Pointers implements Handler.Callback
|
||||
stopLongPress(ptr);
|
||||
ptr.flags |= FLAG_P_SLIDING;
|
||||
ptr.sliding = new Sliding(x, y, dirx, diry, kv.getSlider());
|
||||
_handler.onPointerHold(kv, ptr.modifiers);
|
||||
_handler.onPointerDown(kv, true);
|
||||
}
|
||||
|
||||
/** Return the [FLAG_P_*] flags that correspond to pressing [kv]. */
|
||||
|
@ -49,14 +49,4 @@ public final class Utils
|
||||
out.append(buff, 0, l);
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
/** Whether the thin gesture-navigation bar is used.
|
||||
https://stackoverflow.com/questions/36514167/how-to-really-get-the-navigation-bar-height-in-android
|
||||
*/
|
||||
public static boolean is_navigation_bar_gestural(Resources res)
|
||||
{
|
||||
// core/java/android/view/WindowManagerPolicyConstants.java
|
||||
int res_id = res.getIdentifier("config_navBarInteractionMode", "integer", "android");
|
||||
return (res_id > 0 && res.getInteger(res_id) == 2);
|
||||
}
|
||||
}
|
||||
|
43
srcs/layouts/cyrl_lynyertdz_mk.xml
Normal file
43
srcs/layouts/cyrl_lynyertdz_mk.xml
Normal file
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<keyboard name="ЉЊЕРТЅ (Македонски)" script="cyrillic">
|
||||
<row scale="11">
|
||||
<key key0="љ" key2="1" key4="esc"/>
|
||||
<key key0="њ" key1="~" key2="2" key3="\@"/>
|
||||
<key key0="е" key1="!" key2="3" key3="\#" key4="ѐ"/>
|
||||
<key key0="р" key2="4" key3="$"/>
|
||||
<key key0="т" key2="5" key3="%"/>
|
||||
<key key0="ѕ" key2="6" key3="^"/>
|
||||
<key key0="у" key2="7" key3="&"/>
|
||||
<key key0="и" key2="8" key3="*" key4="ѝ"/>
|
||||
<key key0="о" key2="9" key3="(" key4=")"/>
|
||||
<key key0="п" key2="0" key3="[" key4="]"/>
|
||||
<key key0="ш" key2="€" key3="{" key4="}"/>
|
||||
</row>
|
||||
<row scale="11">
|
||||
<key key0="а" key1="tab"/>
|
||||
<key key0="с"/>
|
||||
<key key0="д"/>
|
||||
<key key0="ф"/>
|
||||
<key key0="г"/>
|
||||
<key key0="х"/>
|
||||
<key key0="ј"/>
|
||||
<key key0="к"/>
|
||||
<key key0="л" key2="|" key3="\\"/>
|
||||
<key key0="ч" key2="-" key3="_"/>
|
||||
<key key0="ќ" key2="=" key3="+"/>
|
||||
</row>
|
||||
<row scale="11">
|
||||
<key width="1.5" key0="shift" key2="loc capslock"/>
|
||||
<key key0="з"/>
|
||||
<key key0="џ"/>
|
||||
<key key0="ц"/>
|
||||
<key key0="в" key2="<" key3="."/>
|
||||
<key key0="б" key2=">" key3=","/>
|
||||
<key key0="н" key2="\?" key3="/"/>
|
||||
<key key0="м" key2=":" key3=";"/>
|
||||
<key key0="ѓ" key2="`" key3="'"/>
|
||||
<key key0="ж" key2="“" key3="„"/>
|
||||
<key width="1.5" key0="backspace" key2="delete"/>
|
||||
</row>
|
||||
</keyboard>
|
||||
|
Reference in New Issue
Block a user