Skip to content

d3dat/keyboard-layout-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Анализатор раскладок клавиатуры

Keyboard Layout Analyzer - Анализатор раскладок клавиатуры, предназначен для глубокого анализа и генерации индивидуальных клавиатурных раскладок с целью повышения удобства использования и снижения нагрузки при наборе текста.

Назначение программы

Для целей расширенного анализа статистики в анализаторе используется ряд параметров, которые не используются в других анализаторах. Для таких параметров в программе вводится ряд специализированных терминов, не имеющих широкого употребления, но использование которых может существенно повысить глубину анализа и помочь сформировать индивидуально настроенную раскладку в соответствии с индивидуальными предпочтениями.

Программа поддерживает:

  • Загрузку и анализ существующих раскладок
  • Вычисление статистики по расширенному набору параметров
  • Визуализацию статистики, включая распределение биграмм по раскладке
  • Поиск оптимальных раскладок на основе заданных индивидуальных критериев
  • Ручную настройку найденных раскладок, включая инвертирование и перестановку букв
  • Сохранение и сортировка результатов
  • Подготовку языковой статистики на основе персональных текстовых файлов

Основным критерием оптимизации раскладок является общее усилие, необходимое для набора текста на раскладке.

Для этого поддерживаются настройки:

  • Карта усилий по каждой клавише в раскладке
  • Карта клавиш, участвующих в опримизации раскладки
  • Настройка максимально допустимого усилия по рядам раскладки
  • Настройка максимально допустимого усилия по каждому пальцу
  • Настройка максимально допустимого дисбаланса нагрузки между рук и по каждой паре пальцев на двух руках
  • Настройка индивидуальных коэффициентов для удобных и неудобных для нажатия сочетаний клавиш

Ограничения программы:

  • Отсутствует расчет параметра "скорости раскладки", присутствующий в некоторых существующих анализаторах
  • Отсутствует расчет параметра "пройденной дистанции" для пальцев при наборе на раскладке, присутствующий в некоторых существующих анализаторах
  • Отсутствует прямая поддержка раскладок стандарной клавиатуры
  • Отсусттвует прямая поддержка раскладок сплит-клавиатур с символами в тамб-кластере

При этом:

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

Параметры командной строки

Программа запускается в командной строке и поддерживает ряд аргументов:

kbda [параметры]

Параметры командной строки:

  --help, -h        - Показать справку по использованию программы
  --config FILE     - Указать имя файла с конфигурацией (по умолчанию config.txt)
  --layout FILE     - Указать имя файла с раскладками (по умолчанию layout.txt)
  --lang FILE       - Указать имя файла со статистикой букв в языке (по умолчанию language.json)
  --effort FILE     - Указать имя файла с матрицей усилий по пальцам (если не указано, используется из конфигурационного файла)
  --output FILE     - Указать имя файла для сохранения новых раскладок (если не указано, используется файл из --layout)
  --text FILE       - Указать имя текстового файла для генерации языковой статистики
  --alphabet STRING - Указать алфавит для генерации языкового файла (все символы из строки рассматриваются как часть алфавита)

Режим генерации языковой статистики

В этом режиме программа принимает на вход заданный текстовый файл и создает файл языковой статистики на основе заданного алфавита.

Пример вызова программы:

kbda --text file.txt --alphabet string --output language.json

Параметы:

  --text FILE       - входной файл для генерации языковой статистики
  --output FILE     - выходной файл для записи языковой статистики
  --alphabet STRING - строка алфавита для формирования языкового файла

Формат строки алфавита:

  • Все символы из переданной строки рассматриваются как часть алфавита, остальные символы в тексте рассматриваются как границы слов.
  • Символ нижнего подчеркивания означает пробел, который должен быть включен в алфавит.
  • Для включения символа нижнего подчеркивания в состав алфавита, его нужно указать в квадратных скобках.
  • Если в квадратных скобках указано несколько символов, то все они считаются как один символ, указанный первым в квадратных скобках.
  • Для включения в алфавит квадратных скобок они указываются в паре с обратной косой чертой.
  • Для включения в алфавит обратной косой черты нужно указать двойную обратную косую черту.

Примеры:

абвгдеёжзийклмнопрстуфхцчшщъыьэюя - полный алфавит русского языка.
абвгд[её]жзийклмнопрстуфхцчшщъыьэюя - алфавит русского языка, в котором статистика по буквам "е" и "ё" считается как "е".
абвгдеёжзийклмнопрстуфхцчшщъыьэюя_ - полный алфавит русского языка с пробелом.
абвгдеёжзийклмнопрстуфхцчшщъыьэюя_[_] - полный алфавит русского языка с пробелом и нижним подчеркиванием.
абвгдеёжзийклмнопрстуфхцчшщъыьэюя\[\] - полный алфавит русского языка с квадратными скобками.
абвгдеёжзийклмнопрстуфхцчшщъыьэюя\\ - полный алфавит русского языка с обратной косой чертой.

ВАЖНО: если в строку алфавита включаются обратная, двойные кавычки и другие специальные символы, которые самостоятельно обрабатываются оболочкой командной строки, то в зависимости от операционной системы может потребоваться их экранирование, например, вместо строки \\\[\]"абв может потребоваться вводить строку '\\\[\]"абв'.

Интерактивный режим

В основном сценарии использования после запуска из командной строки анализатор переходит в интерактивный режим, в котором выполняется внутренний набор команд. В интерактивном режиме поддерживается корректное редактирование строки и история команд.

Основные команды

В интерактивном режиме поддерживаются следующие команды:

- p [N,M,L-K]   - Вывести раскладки (все или указанные)
- l [N,M,L-K]   - Анализ раскладок (все или указанные)
- lb [N,M,L-K]  - Анализ биграмм (все или указанные)
- ll [N,M,L-K]  - Анализ раскладок и биграмм (все или указанные)
- h [N,M,L-K]   - Выделить раскладки N, M и диапазон от L до K желтым цветом, снять выделение с этих раскладок, или, без аргумента снять все выделения
- a N [n]       - Подробный анализ раскладки N, можно отдельно указать количество строк для вывода в таблицах со статистикой
- b N [string]  - Визуализация статистики по биграммам для раскладки N, можно указать строку символов для визуализации
- g [N]         - Поиск оптимальной раскладки, можно указать номер базовой раскладки для поиска
- gg [N] [file] - Непрерывный поиск оптимальной раскладки, можно указать номер базовой раскладки для поиска и имя файла для сохранения найденных раскладок
- n N имя       - Переименовать раскладку N в новое имя
- inv [N]       - Инвертирование активной или указанной раскладке
- sw [N] ab     - Перестановка двух букв в активной или указанной раскладке
- s [N] [name]  - Сохранить активную раскладку или указанной раскладки с текущим или указанным именем в файл
- d [N,M,L-K]   - Удалить раскладки (по номерам или диапазонам)
- sort          - Сортировать раскладки по возрастанию общей оценки и перезаписать файл
- c             - Вывести используемые коэффициенты из конфигурационного файла
- set N value   - Установить коэффициент N в значение value
- r             - Перезагрузить файл конфигурации и файл с раскладками
- t             - Вывести тестовую информацию
- help          - Справка по командам
- exit/quit/q   - Выход

Параметры статистики раскладок

Параметры статистики и критерии оптимизации раскладок задаются в конфигурационном файле. Назначение всех критериев и примеры их настроек приводятся в примере конфигурационного файла config.txt.

Ниже приводится список поддерживаемых параметров:

- SHB (Same Hand Bigram), процент биграмм, набираемых одной рукой, если данное значение вычесть из 100 %, то получится процент чередований.
- SFB (Same Finger Bigrams), процент биграмм, которые набираются одним пальцем.
- HVB (Half Vertical Bigrams), процент биграмм, которые набираются одним пальцем, при которых набираемые символы находятся в одной колонке в соседних рядах без учета внутренних колонок.
- FVB (Full Vertical Bigrams), процент биграмм, которые набираются одним пальцем, при которых набираемые символы находятся в одной колонке через ряд без учета внутренних колонок.
- HDB (Half Diagonal Bigrams), процент биграмм, набираемых одним пальцем в соседних колонках и соседних рядах.
- FDB (Full Diagonal Bigrams), процент биграмм, набираемых одним пальцем в соседних колонках через ряд.
- HFB (Horizontal Finger Bigrams), процент биграмм, набираемых одним пальцем на соседних клавишах по горизонтали, то есть в одном ряду в соседних колонках.
- HSB (Half Scissors Bigrams), процент биграмм, набираемых на одной руке, при которых разные пальцы находятся в соседних рядах без учета внутренних колонок.
- FSB (Full Scissors Bigrams), процент биграмм, набираемых на одной руке, при которых разные пальцы находятся в верхнем и нижнем рядах без учета внутренних колонок.
- LSB (Lateral Stretch Bigram), процент биграмм, которые набираются разными пальцами на одной руке, при которых указательные пальцы находятся во внутренних колонках.
- SRB (Same Row Bigrams), процент биграмм, набираемых на одной руке в одном ряду без учета внутренних колонок.
- AFI (Adjacent Fingers In), процент биграмм, при которых соседние клавиши в одном ряду нажимаются по направлению к центру без учета внутренних колонок.
- AFO (Adjacent Fingers Out), процент биграмм, при которых соседние клавиши в одном ряду нажимаются по направлению от центра без учета внутренних колонок.

Дополнительно поддерживаются флаги для включения строго учета биграмм:

- HSB - учитываются только биграммы, при которых на нижнем из двух рядов находятся средний или безымянный пальцы.
- FSB - при котором учитываются только биграммы, при которых на нижнем ряду находятся средний или безымянный пальцы.
- LSB - при котором учитываются только биграммы, набираемые через вертикальный ряд указательным и средним пальцем.

Оптимизация раскладок

В анализаторе реализованы две команды для однократного поиска оптимизированной раскладки и для непрерывного.

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

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

С учетом изложенного, был реализован режим непрерывного поиска наилучшего варианта. В ходе такого поиска раскладки, которые оказались на очередной итерации лучше всех предыдущих, могут записываться в заданный выходной файл. В результате такого поиска будет сформировано семейство раскладок по заданным критериям, которые рекомендуется дополнительно проанализировать вручную.

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

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

About

Keyboard Layout Analyzer - Анализатор раскладок клавиатуры, предназначен для глубокого анализа и генерации индивидуальных клавиатурных раскладок.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors