> For the complete documentation index, see [llms.txt](https://k12kb.gitbook.io/doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://k12kb.gitbook.io/doc/ru/readme.md).

# Manual

## О K12KB

### Описание

Клавиатура от фанатов ввода на аппаратной клавиатуре и для фанатов ввода на аппаратной клавиатуре. K12KB претендует на то, чтобы быть **удобнее**, чем **Blackberry Keyboard**, более **настраиваемой** и **кастомизируемой**, чем **ruKeyboard**. Цель -- сделать удобство работы с текстом таким, чтобы не приходилось убирать руки с клавиатуры и касаться экрана. Для этого широко применяются разного рода перемещения по тексту и жесты по клавиатуре. Уделено немалое внимание работе одной рукой, что, например, затруднено в родной клавиатуре и ruKeyboard из-за смены языка двумя кнопками. По архитектуре программного кода клавиатура сделана весьма расширяемо и настраиваемо и может быть адаптирована для других раскладок, устройств и языков. Кроме того, поведение клавиатуры полностью кастомизируется через JSON-файлы настроек, т.е. пользователь может добавлять, удалять и менять горячие клавиши и многое другое.

### Поддерживаемые устройства

| Устройство            | Примечание                                                                    |
| --------------------- | ----------------------------------------------------------------------------- |
| Blackberry Key1       | Полная поддержка                                                              |
| Blackberry Key2       | Полная поддержка                                                              |
| Unihertz Titan        | Полная поддержка                                                              |
| Unihertz Titan Pocket | Без жестов по клавиатуре в режиме ввода текста                                |
| Unihertz Titan Slim   | Без жестов по клавиатуре в режиме ввода текста                                |
| Другие                | Адаптируется без перекомпиляции под любое устройство с аппаратной клавиатурой |

### Ключевые особенности

* Иконка с языком в статус-баре, иконка с языком в нижней свайп-панели.
* Переключение языка одной кнопкой (`KEY_0`); только для Blackberry Key1/Key2.
* `Ctrl`+`A`/`C`/`X`/`V`/`Z` (и даже `Ctrl`+`Shift`+`Z`); работает в т.ч. для НЕ\_РСТ Blackberry Key2 и Unihertz Titan (см. таблицу ниже).
* Жесты по клавиатуре для листания и перемещения курсора по тексту (включая вертикальные жесты и выделение с `Shift`).
* Навигационные кнопки (стрелки, `Page Up`/`Page Down`, `Home`, `End`, `Tab`, `Esc`); видимый NAV-pad.
* SYM-pad для отображения символов из ALT2-раскладки (которая не гравируется на клавиатуре).
* Много полезных сочетаний клавиш (`Alt`+`Del`, `Shift`+`Enter`, `Shift`+`Del` и пр.).
* Поисковые плагины, которые автоматически активируют поиск при наборе текста, с возможностью добавлять свои.
* Тотальная кастомизация всех функций через правку JSON-файлов.
* Возможность менять и добавлять раскладки через правку JSON-файлов.
* Режим Указателя для тех, кто помнит трекбол классических BlackBerry.

***

## Руководство пользователя

### Важно для понимания

На разных устройствах кнопка `Ctrl` соответствует разным физическим клавишам:

| Устройство                 | Физическая клавиша вместо `Ctrl` | Примечание                                                                                                           |
| -------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Blackberry Key1            | `RIGHT_SHIFT`                    | --                                                                                                                   |
| Blackberry Key2 (НЕ\_РСТ)  | `SPEED_KEY`                      | Функция вызова приложения через `SPEED_KEY` продолжает работать, кроме сочетаний с `A`, `C`, `X`, `V`, `Z` и `KEY_0` |
| Unihertz Titan             | `CTRL`                           | Физическая клавиша `Ctrl` на устройстве                                                                              |
| Unihertz Titan Pocket/Slim | `FN`                             | Кнопка `KEY_0` отсутствует                                                                                           |

> `Shift` везде означает `LEFT_SHIFT`.

> Чтобы работали наэкранные клавиатуры NAV-pad, SYM-pad и свайп-панель, настройка "показывать виртуальную клавиатуру" должна быть включена.

### А. Переключение языка ввода (раскладки)

1. `KEY_0` (однократное нажатие).
2. `Shift`+`Space` (пробел при зажатом `Shift`).

### Б. Ввод текста (особенности)

1. Реализованы сдвоенные символы. Двойное нажатие (double-click) удаляет первый символ и вводит второй (сдвоенный) символ.
2. `Shift`+`Backspace` = `Delete` (удаляет символ после курсора).
3. Двойной пробел (`2xSpace`) дает сочетание ". " (точка и пробел).
4. В режимах жестов по полям ввода, свайп-панели и NAV-режиме можно делать **выделение с зажатием `Shift`**.
5. `Shift`+`Enter` двигает курсор в начало абзаца (если уже в начале абзаца -- в начало предыдущего).
6. `Alt`+`Del` удаляет все до предыдущего начала (перевода) строки (абзац). `Alt`+`Shift`+`Del` удаляет абзац **вперед**.
7. `KEY_0`+`Del` удаляет слово. `KEY_0`+`Shift`+`Del` удаляет слово **вперед** (только Key1|2).
8. `Alt`+`Space` делает табуляцию (`\t`) в режиме редактирования.
9. `Enter` работает как кастомная кнопка (`SEARCH`, `GO`, `NEXT` и пр.) для тех случаев, когда такие опции предлагает хост-приложение (по аналогии с Blackberry Keyboard).

### В. Заглавные буквы

1. Автоматически становится заглавной первая буква в начале текстового поля, буква после точки и пробела, первая буква в начале новой строки.

> Если надо принудительно вернуть строчную букву, нажмите `Shift`.

2. Однократное нажатие `Shift` делает следующую букву заглавной, далее пойдут строчные.
3. `Shift`+буквы будут заглавными, пока зажат `Shift`.
4. `2xShift` -- включение постоянного режима заглавных (Caps Lock). Чтобы выключить -- однократно нажмите `Shift`.
5. Если Настройка 5 в состоянии ВЫКЛ, то при удержании буква станет заглавной. Если буква сдвоенная, то: быстрое нажатие, затем нажатие с удержанием.

### Г. Ввод ALT-символов

1. `Alt`+клавиша -- ввод символа/цифры ALT-раскладки (нанесенной на клавиатуру).
2. `Alt`, затем клавиша -- однократный ввод символа, далее ALT-режим отключается (переходит в буквенный режим). Если включена Настройка 3, то ALT-режим выключится только после нажатия `Space`.
3. `2xAlt` -- включение постоянного режима Alt-символов. Выключается нажатием `Alt`.
4. Удержание буквы вводит символ из Alt-раскладки. Работает, если включена Настройка 5 (если настройка не включена, вводится заглавная буква).

### Д. Символы SYM-раскладки и наэкранная SYM-клавиатура

#### Ввод символов из SYM-раскладки (ALT2 / Alt-Shift)

1. Во включенном ALT-режиме `Shift`+клавиша.
2. `Shift`+удержание.
3. В ALT-режиме (`2xAlt` или зажатый `Alt`) нажатие с удержанием.
4. В ALT-режиме быстрое нажатие, затем нажатие с удержанием -- дает первый символ из списка дополнительных символов (п. 8) (тире на минусе, рубль на долларе).
5. Быстрое нажатие, затем нажатие с удержанием (**для работы одной рукой**).

#### Наэкранная SYM-клавиатура

6. Нажатие `Sym` открывает/закрывает наэкранную SYM-клавиатуру в режиме ALT2 (SYM) раскладки.
7. Чтобы перевести наэкранную SYM-клавиатуру в ALT-режим (и обратно), нажмите `Alt` или `Shift`.
8. На некоторых наэкранных символах есть зажатие, тогда появится выбор дополнительных символов. Например, на символе минус "-" есть вариант "--" (тире).

### Е. Навигационная клавиатура (NAV-клавиатура) и NAV-режим

1. Позволяет использовать стрелки вверх/вниз/влево/вправо, `Home`, `End`, `Page Up`, `Page Down`, `Esc`, `Tab`, `Shift`+`Tab` и `Del`.
2. Можно использовать как в режиме ввода, так и в режиме просмотра для разного рода перемещений по экрану.
3. "Временный" режим (режим с удержанием/отпусканием). Зажатие `Sym`+клавиша. Отпускание `Sym` отключает режим.
4. "Постоянный" режим (в режиме ввода текста открывает NAV-панель; на нее можно нажимать, а можно посмотреть и запомнить буквы на клавиатуре для использования в режиме зажатия). Включение: `2xSym`. Отключение: однократное нажатие `Sym`.
5. Есть варианты NAV-клавиатуры под правый палец (`Q`/`Y`/`U`/`I`/`O` и `A`/`H`/`J`/`K`/`L`) для постоянного режима и под левый палец (`Q`/`W`/`E`/`R`/`T` и `A`/`S`/`D`/`F`/`G`) для удобства работы с удержанием `Sym`.
6. Хождение по словам: `Sym`+`Z`/`N` (предыдущее слово) и `Sym`+`X`/`M` (следующее слово). Пунктуация проезжается автоматически. Поддерживается выделение по словам с зажатием `Shift`.
7. Переключение активного ползунка выделения: нажмите `2xShift` (без отпускания второго нажатия) — тогда будет двигаться противоположный ползунок, в т.ч. по словам и всеми навигационными кнопками.

### Ж. Режимы жестов по клавиатуре (сенсор на клавиатуре)

#### Жесты по полю ввода (режим Курсора)

1. "Временный" режим. Зажатие `KEY_0` + жест по клавиатуре влево-вправо (если включен режим вертикальных жестов, то и вверх-вниз). Можно сначала зажать `KEY_0`, потом начать делать жест.
2. "Постоянный" режим жестов. Включение: `2xKEY_0`. Выключение: `1xKEY_0`. Жесты по клавиатуре влево-вправо будут работать до первого ввода текста.
3. Режим жестов вверх-вниз (для больших текстов). Включение: `3xKEY_0`. Отключение: `1xKEY_0`. Автоматически отключается после ввода первого символа.

> `3xKEY_0` включает режим вертикальных жестов; после этого режим будет работать и по `2xKEY_0`, пока не будет отключен явно через `1xKEY_0`.

> Для Unihertz **Titan Pocket/Slim** для активации режима жестов по тексту используется `2xFn` (механизм зашит в ОС).

> **Подсказка:** для прокрутки в Telegram используйте режим перелистывания в режиме редактирования (см. ниже). Также можно вывести курсор из поля ввода стрелкой вверх (`Sym`+`U`/`E`).

4. Двойной тап по клавиатуре активирует режим горизонтальных жестов. Работает как с отпусканием, так и без отпускания второго касания. Отпускание деактивирует режим жестов по текстовому полю.
5. Тройной тап по клавиатуре активирует режим горизонтальных и вертикальных жестов. Работает как с отпусканием, так и без отпускания третьего касания. Отпускание деактивирует режим жестов по текстовому полю.

> Тройной тап включает режим вертикальных жестов; после этого режим будет работать и по двойному тапу.

6. В режиме жестов (в т.ч. вертикальных) по полям ввода можно зажимать `Shift` и выделять текст.

#### Режим перелистывания в режиме редактирования

Находясь в диалоге мессенджера (например, в Telegram) можно по `2xCtrl` перейти в режим листания (scroll) истории жестами по клавиатуре. Ввод любого символа отключает этот режим.

Если для приложения включены жесты по режиму просмотра (Настройка 9 или `3xCtrl`), режим листания включается автоматически при входе в поле ввода, пока не начнешь нажимать кнопки. Чтобы это выключить, отключите сенсор для приложения через `3xCtrl`.

#### Жесты по режиму просмотра

1. Если включена соответствующая настройка (Настройка 9), жесты по просмотру будут работать во всех приложениях (за исключением полей ввода). Включение/отключение: `3xCtrl`.
2. Режим пролистывания (scroll) плавно листает страницы через жесты по клавиатуре.
3. Второй режим -- Указатель (Pointer) -- позволяет перемещать выделение по разным элементам интерфейса, кнопкам и пр. (как раньше было в классических BlackBerry без сенсорного экрана).

> Выделение элементов интерфейса также можно перемещать через NAV-режим.

4. Переключить режим (если он включен) можно через `2xCtrl`.
5. Выбранный через `2xCtrl` вариант режима жестов запоминается для каждого приложения.
6. Настройка 9 позволяет выбрать, какой режим жестов по режиму просмотра будет работать по умолчанию.
7. Настройка 9 не переопределяет уже сохраненные настройки режима жестов для приложений.

> Иногда непонятно, где находится выделенный элемент -- для этого надо подвигать указатель сенсором.

8. Для упрощения "нащупывания" удобной настройки (где работать указателем, а где нет) есть Настройка 13. Она дополнительно подсвечивает рамкой выделенный элемент и устанавливает фокус, если хост-приложение не поставило его само.
9. В режиме указателя можно кликнуть на выделенный элемент через `Enter` (стандартное поведение, определяемое хост-приложением) или нажать `Space` для имитации тапа пальцем. В разных приложениях может срабатывать по-разному.
10. `Alt`+`Space` делает долгое нажатие в режиме указателя.

### З. Операции с Ctrl

1. Текстовые операции: `Ctrl`+`C` (копировать), `Ctrl`+`V` (вставить), `Ctrl`+`X` (вырезать), `Ctrl`+`A` (выделить все).
2. `Ctrl`+`Z` (отменить действие); `Ctrl`+`Shift`+`Z` (повторить отмененное действие, если случайно нажали `Ctrl`+`Z`).
3. `Ctrl`+`Alt` — вставка буфера обмена по буквам. Полезно для обхода антивставочных скриптов на сайтах.

### И. Голосовой ввод

Активация голосового ввода — одновременное нажатие двух соседних кнопок (порядок не важен):

| Устройство        | Сочетание                     |
| ----------------- | ----------------------------- |
| Key1/Key2         | `Ctrl`+`Sym` или `Sym`+`Ctrl` |
| Titan Pocket/Slim | `Fn`+`Alt` или `Alt`+`Fn`     |

После выхода из голосового ввода курсор автоматически возвращается в текстовое поле.

### К. Прочее

#### Режим "прозрачности"

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

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

#### Свайп-панель

* По этой панели можно делать свайпы, чтобы перемещать курсор.
* Можно нажимать на стрелки слева и справа, чтобы перемещать курсор по одному символу.
* Удерживание на наэкранной NAV-панели или свайп-панели делает повтор действия.

1. Свайп-панель включается из меню настроек (Настройка 8). После переключения клавиатуру надо перезапустить через `Alt`+`Enter`.
2. `Shift`+`Ctrl` включает нижнюю свайп-панель с флажком.
3. Настройка 14 управляет показом NAV-pad при однократном нажатии (удержании) `Sym`.

#### Поисковые плагины

> Поисковый плагин -- это когда при входе в приложение начинаешь набирать на аппаратной клавиатуре и кнопка "Поиск" нажимается автоматически.

1. В приложениях **Blackberry Contacts и Phone (Dialer)** можно сразу после входа, не нажимая "лупу", начать набирать на кириллице -- будет поиск.
2. В **Telegram** если начать вводить текст в основном окне, будет поиск по чатам.
3. Можно добавлять поисковые плагины ([специальный раздел](/doc/ru/advanced.md)); например, уже добавлен плагин для ExDialer.
4. К встроенным плагинам добавлены: Yandex (Maps, Навигатор), Blackberry (Settings, HUB, Notes, Calendar).
5. Поисковый плагин активируется на `Ctrl`+`A`/`C`/`X`/`V`, а также на `Del` и `Space`. Например, вы скопировали адрес, заходите в Яндекс.Карты и, не нажимая поиск, нажимаете `Ctrl`+`V` -- поиск откроется сам и туда вставится адрес из буфера обмена.
6. **Кликер-плагины** работают аналогично поисковым плагинам, но кликают не в поиск, а в текстовое поле ввода. Например, при входе в диалог мессенджера и начале набора текста кликер-плагин автоматически фокусирует поле ввода сообщения. Встроенные кликер-плагины: 4PDA, Avito, Kate и другие.

#### ENSURE\_ENTERED\_TEXT

В режиме ввода текста, чтобы выйти из приложения (`Back`, `Home`), если введен какой-то текст, надо нажать дважды. Если текст не введен или курсор не находится в поле ввода, то достаточно одного нажатия. Это важно, так как иногда введенный текст теряется из-за случайного нажатия (особенно в браузерных полях ввода, где `Back` обнуляет форму). Для отключения этого режима используйте Настройку 12.

### Л. Работа со звонками

> Для работы функций звонков должна быть включена Настройка 6.

1. **Снятие трубки** -- полезно для Key1 (в Key2 есть аналогичная функция из коробки). При поступлении звонка, если курсор не в текстовом поле ввода, двойное нажатие `Space` поднимет трубку.
2. **Положить трубку** -- в режиме разговора или входящего звонка, если курсор не в поле ввода, двойное нажатие `Sym` положит трубку.

### Благодарности

* Основатель: Артем Твердохлеб aka l3n1n-ua (UA)
* Соавтор: krab-ubica (RUS)
* Соавтор: Henry2005 aka CapitanNemo (BY)
