Сложные настройки - tim-ecoder/KeyoneKB Wiki

Описание сложных настроек и кастомизаций клавиатуры

Disclamer. Невнимательные и неосторожные действия могут привести неработоспособности клавиатуры и разобраться, что случилось, не залезая в код, будет весьма сложно.

Например какую-то скобку забыть поставить в json (поверьте, на подобные косяки люди тратили десятки часов)

(v2.3+) Поисковые плагины (основное)

Это мини-боты, которые, когда ты зайдя в приложение сразу начинаешь набирать на хардварной клаве, нажимают кнопку поиск (которая обычно сверху) за тебя. Офигенски удобно. Как я раньше жил без этого.

  • Список текущих поисковых плагинов, которые встроены в приложение, можно посмотреть зайдя в меню Расширенные настройки

  • Если вы не обнаружили в списке приложение, которое хотели бы "автоматизировать" в части клика на "лупу", то это достаточно легко можно сделать:

  • Зайдите в "свое" приложение;

  • Перейдите в расширенные настройки KeyoneKb;

  • Найдите среди трех кнопок ADD PLUGIN свое приложение и нажмите на него кнопка станет ADDED;

Кнопки ADD PLUGIN берут 3 последних приложения, в которые вы заходили до входа в расширенные настройки Keyonekb. Поэтому лучше сразу после входа в приложение зайти в расширенные настройки KeyoneKb (через "alt+tab" или "последние приложения").

  • Выскочит Toast. Сервис спец. возможностей отключится автоматически. Надо нажать на кнопку Активировать спец. возможности, чтобы включить сервис.

  • Зайдите в свое приложение и введите любую букву (желательно в кириллической раскладке), если открылся поиск и в нем оказалась введенная вами буква - Ура! ваше приложение попало в 80% простых случаев;

Если вводить символ в латинской раскладке, есть вероятность что приложение само обрабатывает ввод символов и открывает поиск, но только для латиницы. Нам это не совсем подходит. Поэтому тестируем поисковые плагины на кириллице.

Как посмотреть, что получилось (должно сразу по факту работать в приложении, но если хочется еще разок убедиться)

  • Заходим в расширенные настройки keyonekb2, пролистываем вниз, видим там наше приложение и после ResourceId: код поискового поля.

Либо после ResourceId вместо кода поискового поля мы видим текст на два абзаца, но при этом поисковый плагин в новом приложении все-таки работает. Пугаться не стоит. Это чуть более сложный случай, про него будет дальше.

ВАЖНО! Надо сохранить данные, иначе при перезапуске телефона придется заново добавлять плагины

  1. В любом из обоих случаев жмем SAVE PLUGIN DATA

  2. Идем в папку /storage/emulated/0/Android/data/com.sateda.keyonekb2/files/default

  3. Берем файл plugin_data.json и кладем его в /storage/emulated/0/Android/data/com.sateda.keyonekb2/files

  4. Из этой папки KeyoneKb2 будет подхватывать автоматически вместо аналогичного файла, зашитого в ресурсы приложения

Важный момент! Если снести приложение то все настроечные файлы удалятся вместе с папкой. Делайте бэкап.

Чтобы новый файл переподхватился надо перезапустить Accessibility Service (KeyoneKb2)

(v2.3+) Поисковые плагины (более сложные случаи)

Я пока не нашел случаев, когда приходилось бы лезть в программный код клавиатуры, чтобы добавить какие-то новое приложение в поисковый плагин. Но если вы попробовали все ниже перечисленное, то "велком в личку"

Описание будет чуть позже, пока перечислю что можно

  1. Добавлять свои "поисковые" слова в список универсальных поисковых слов

"default-search-words" : [ "Найти", "Поиск", "Search", "Искать" ]

  1. Делать паузу (Xms) после нажатия на Поиск, но перед вводом символа (для случаев, когда поиск "выезжает" или просто "тупит");

  2. Делать клик не на сам элемент с текстом Поиск, а на его "родителя" (для случаев, когда на сам элемент тычок не работает);

    "package-name" : "ru.yandex.yandexmaps",
    "custom-click-adapter-click-parent" : true,
    "search-field-id" : "ru.yandex.yandexmaps:id/search_line_search_text",
    "wait-before-send-char-ms" : 300
  3. Для т.н. динамических кнопок Поиск (которые не отдают свое имя для сохранения) оставлять только один поисковый метод, чтобы каждый раз не пробовать все 10 универсальных метода (как сделано для Telegram например);

    "package-name" : "org.telegram.messenger",
     "additional-event-type-type-window-content-changed" : true,
     "dynamic-search-method" : [ {
       "dynamic-search-method-function" : "FindAccessibilityNodeInfosByText",
       "contains-string" : "Search" } ]
  4. Убирать лишние типы евентов, если приложение подтормаживает;

  5. Максимальные настройки показаны для приложения org.example.dummy (полезно для копипаста)

    "package-name" : "org.example.dummy",
     "additional-event-type-type-window-content-changed" : true,
     "custom-click-adapter-click-parent" : true,
     "dynamic-search-method" : [ {
       "dynamic-search-method-function" : "FindFirstByTextRecursive",
       "contains-string" : "Найти"
     }, {
       "dynamic-search-method-function" : "FindAccessibilityNodeInfosByText",
       "contains-string" : "Поиск"
     } ],
     "wait-before-send-char-ms" : 200

(v2.3+) Поисковые плагины (известные затруднения)

Когда добавляешь новое приложение в плагины и первый раз заходишь в приложение, ВАЖНО, чтобы приложение не было в этот момент в режиме активированного поиска, иначе могут запомниться не те идентификаторы поисковых полей и работать не будет

Лечение: внизу кнопка "Clear plugin data"

  • Удаляет идентификаторы Поисковых полей приложений;

  • Но по факту ничего не удаляет из приложений, которые уже прописаны в файлах plugin_data.json, в них все восстановится после перезагрузки спец. сервиса;

  • Зато для свеже-добавленных приложений, если там неправильно все определилось - это спасение;

  • Главное, когда уже все правильно получилось, не забыть сохраниться в файл и подложить его куда следует (выше писал)

(v2.3+) Кастомизация раскладок клавиатуры

Важный момент! Если снести приложение то все кастомные раскладки удалятся вместе с папкой. Делайте бэкап.

  1. Зайти в пункт меню "РАСШИРЕННЫЕ НАСТРОЙКИ"

  2. Нажать "SAVE KEYBOARD DATA"

  3. Данные о раскладках сохранятся в папке /storage/emulated/0/Android/data/com.sateda.keyonekb2/files/default

(!) Если повторно нажать на кнопку "SAVE KEYBOARD DATA" то файлы в папке /default перезапишутся

  1. В папке появятся файлы *.json

    • Сами раскладки для букв в файлах типа russian_hw.json или pocket_english.json

    • Символьные раскладки в файлах типа alt_hw.json или pocket_alt_hw.json

Содержимое файлов описывать не имеет смысла там все понятно.

  1. Изменить файл с буквенной или символьной раскладкой

  2. Записать его в папку /storage/emulated/0/Android/data/com.sateda.keyonekb2/files

    • Базово все раскладки зашиты в ресурсы приложения

    • Но, если клава при включении видит файл с таким же названием в "своей" папке на диске она предпочтительно берет его

Если вы не поменяли файл то смысла его держать на диске нет, с диска чуть дольше загружается

Важный момент! Если снести приложение то все кастомные раскладки удалятся вместе с папкой. Делайте бэкап.

  1. Hint Если вы хотите кастомный символ из символьной раскладки, который будет специфичен для раскладки. То из символьной раскладки можно добавить поля в буквенную и они подхватятся и будут браться по умолчанию. Например, в русской раскладке на доллар повесить знак рубля.

russian_hw.json
  "keyboard-name" : "Русский",
  "alt-mode-layout" : "alt_hw",
  "sym-mode-layout" : "symbol",
  "key-mapping" : [ {
    "key-code" : 11,
    "single-press" : "б",
    "single-press-shift-mode" : "Б",
    "double-press" : "ю",
    "double-press-shift-mode" : "Ю",
    "single-press-alt-mode" : "₽",
    "single-press-alt-shift-mode" : "$",
    "alt-more-variants" : "€₽$€",
    "alt-shift-more-variants" : "€₽$"

"sym-mode-layout" : "symbol" - это наэкранная символьная панель, динамически заполняется символами из alt-раскладки. Трогать это пока нельзя.

keyboard_layouts.json

Файл содержит общий список раскладок

  • В нем перечисляются все раскладки и некоторые опции для них

  • Из него берутся раскладки и динамически прорисовываются в настройках с переключателем вкл-выкл который

  • Этот файл тоже может быть изменен и будет подхватываться с диска по умолчанию

Например, в нем можно например убрать ненужные раскладки, если их наличие они бесит в меню. Или название в меню поменять.

  • Иконки менять нельзя, они зашиты в ресурсы. Но если вооружиться редактором ресурсов то можно (главное продублировать их в две папки mipmap и drawable).

  • Раскладки для других устройств и языков можно добавлять, но важно не забыть для них сделать свои файлы маппинга букв и символов (описано выше)

  • Ссылка на символьную раскладку делается из буквенной раскладки. Чтобы не дублировать одно и тоже 500 раз.

Например, для всех языков-раскладок (а их четыре) Blackberry Key1-2 одна и та же символьная раскладка alt_hw

russian_hw.json
    "keyboard-name" : "Русский",
    "alt-mode-layout" : "alt_hw"
  • Пример. Фрагмент символьной раскладки alt_hw.json .russian_hw.json

  "key-code" : 11,
  "single-press-alt-shift-mode" : "€",
  "single-press-alt-mode" : "$",
  "alt-more-variants" : "₽₴₩£₪¥$€",
  "alt-shift-more-variants" : "₽₴₩£₪¥$€"
⚠️ **GitHub.com Fallback** ⚠️