This repository contains layout data for any languages. For example, the Tuvan Cyrillic keyboard, designed for integration with Apple Keyboard, Unicode CLDR, and related input systems.
The keyboard layout dataset is based on the modern design used in iOS and macOS.
The layouts conform to a unified keyboard scheme and are compatible with layout generation tools for specific platforms.
You can use the approach I used in the example of "tyv – Тыва дыл" (Tuvan language), slightly modifying the layout rows to include all the characters used in the modern writing system of the selected language.
Its goal is to provide native users with a convenient, accurate, and inclusive typing experience.
At a minimum, you need to describe the files lang-3-rows.yaml and lang-longpress.yaml, where lang is the code of your language.
Most of you are familiar with the system keyboard for Russian. It's described here (click here).
We provide two zero-dependency standalone HTML artifacts in dist/ that compile the entire dataset:
- iOS Keyboard Viewer (
dist/ios-keyboards.html) — Solves our main task: visual preview and UI validation of native iOS touch keyboard layouts (currently featuring 47 layout profiles across 23 Indigenous and minority languages of Russia). - LDML 3.0 Touch Emulator (
dist/ldml-keyboards.html) — Solves our supplementary task: data preparation and interactive testing for CLDR Unicode Keyboard3 (LDML 3.0) touch profiles (formId="touch"). Features live longpress UX testing, bilingual UI (EN/RU toggle), and architectural placeholders for future PC/Mac hardware forms (us,iso).
ios-system-keyboard/
├── dist/
│ ├── ios-keyboards.html # iOS layout viewer
│ └── ldml-keyboards.html # LDML 3.0 touch emulator & XML generator
├── layout/tyv/
│ ├── tyv-3-rows.yaml
│ ├── tyv-4-rows.yaml
│ ├── tyv-longpress.yaml
│ ├── tyv-macos.yaml
│ └── tyv-3-rows.png
├── scripts/
│ ├── build.py # Generates ios-keyboards.html
│ └── build_ldml.py # Generates ldml-keyboards.html
└── README.md
iOS:
primary:
layers:
default: |
й ү у к е н ң г ш з х
ө ы в а п р о л д ж э
\s{shift} я ч с м и т ь б ю \s{backspace}
shift: |
Й Ү У К Е Н Ң Г Ш З Х
Ө Ы В А П Р О Л Д Ж Э
\s{shift} Я Ч С М И Т Ь Б Ю \s{backspace}
We pay special attention to system commands such as "Cancel," "Enter," "Route," and so on.
There's a special guide – keyNames.md. Be sure to check it out; there are illustrative examples with pictures.
- Translate system commands (or buttons) as described in keyNames.
- Define the longpress file – lang-longpress.yaml (for example, for Russian, these are the pairs Ь – Ъ, Е – Ё). You can also specify the longpress characters there, as on a Russian keyboard.
- Replace ABC (the button for switching from symbols to letters). You can leave it as is. But for some languages, different letters are used.
- Define the primary keyboard for iOS in lang-3-rows.yaml (for iPhone, there is one scheme, for iPad, there are two schemes).
- Define a secondary keyboard for iOS with 4 rows in lang-4-rows.yaml (for iPhone, there is one scheme, for iPad, there are two schemes). Optional.
- Detect the keyboard for macOS – required.
- Once you've completed all the steps, you can send your files to me or submit them as a PR on GitHub.
Author: Ali Kuzhuget
Project: Apple Keyboards for All
Этот репозиторий содержит данные для системной клавиатуры на iOS/macOS. Например, Тувинский (Тыва дыл).
Датасет подготовлен для использования в системах ввода (например, Apple Keyboard, Unicode CLDR и других).
Датасет для расскладки клавиатуры основана на современном дизайне, используемой в iOS и macOS.
Раскладки соответствуют унифицированной схеме клавиатуры, и совместимы с инструментами генерации раскладок для конкретных платформ.
Вы можете использовать подход как я сделал на примере tyv – Тыва дыл (Тувинский язык), слегка модифицируя ряды расскладки, включив все символы, используемые в современном письме выбранного языка.
Цель — предоставить корректную и удобную расклодку для носителей языка, включая поддержку автокоррекции, предсказаний и локализованных символов.
Минимально нужно описать файлы lang-3-rows.yaml и lang-longpress.yaml, где вместо lang – код вашего языка.
Большинство из вас хорошо знакомы с системной клавиатурой для Русского языка. Она описана тут (тык сюда).
Проект автоматически генерирует два автономных HTML-артефакта в папке dist/, которые решают наши ключевые задачи:
- Интерактивный просмотрщик iOS (
dist/ios-keyboards.html) — Решает главную задачу: наглядная визуализация и сверка экранных клавиатур iOS (на данный момент 47 профилей раскладок для 23 языков народов РФ). - Эмулятор и генератор LDML 3.0 (
dist/ldml-keyboards.html) — Решает дополнительную задачу: подготовка данных и верификация спецификации CLDR Unicode Keyboard3 (LDML 3.0) для сенсорных экранов (formId="touch"). Включает тестирование долгих нажатий (лонгпрессов), переключение интерфейса EN/RU и архитектурные плейсхолдеры для последующего подключения аппаратных десктопных раскладок (us,iso).
ios-system-keyboard/
├── dist/
│ ├── ios-keyboards.html # Просмотрщик iOS раскладок
│ └── ldml-keyboards.html # Эмулятор и генератор LDML 3.0 touch
├── layout/tyv/
│ ├── tyv-3-rows.yaml
│ ├── tyv-4-rows.yaml
│ ├── tyv-longpress.yaml
│ ├── tyv-macos.yaml
│ └── tyv-3-rows.png
├── scripts/
│ ├── build.py # Генератор ios-keyboards.html
│ └── build_ldml.py # Генератор ldml-keyboards.html
└── README.md
iOS:
primary:
layers:
default: |
й ү у к е н ң г ш з х
ө ы в а п р о л д ж э
\s{shift} я ч с м и т ь б ю \s{backspace}
shift: |
Й Ү У К Е Н Ң Г Ш З Х
Ө Ы В А П Р О Л Д Ж Э
\s{shift} Я Ч С М И Т Ь Б Ю \s{backspace}
Особое внимание уделяем системным командам типа "Отмена", "Ввод", "Маршрут" и т.д.
Есть особый гайд – keyNames.md. Изучите обязательно, есть наглядные примеры с картинками.
- Перевести системные команды (или кнопки) как описано в keyNames.
- Определить файл лонгпрессов –
lang-longpress.yaml(например, для Русского языка это пары Ь – Ъ, Е – Ё). Там же уточнить лонгпрессы символов, можно как на русской клавиатуре. - Замена АБВ (кнопка для смены с символов на буквы). Можете оставить так же. Но для ряда языков другие буквы.
- Определить главную клавиатуру для iOS в файле
lang-3-rows.yaml(для Айфона 1 схема, для Айпада 2 схемы). - Определить вторичную клавиатуру для iOS на 4 строки в файле
lang-4-rows.yaml(для Айфона 1 схема, для Айпада 2 схемы). Не обязательно. - Определить клавиатуру для macOS – обязательно.
- Когда все сделаете все этапы, можете отправить ваши файлы мне, либо оформить как PR в Гитхабе.
Автор: Али Кужугет (Али Күжүгет)
Проект: Apple системные кириллические клавиатуры для всех