-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Вопросы к автору:
For the files with -t in their name, only digrams and trigrams are accounted for that are in the interior of words and that do not contain hyphenation points.
opt deutsch.txt deutsch-t.txt deutsch-t.txt gemischt.txt
uses the frequency files for German that are shipping with the optimiser to create new frequency files in which digrams and trigrams at word boundaries or containing hyphenation points are only accounted with one third of their weight.
Прежде чем вы сможете использовать программу, вы должны скомпилировать ее. Компиляция преобразует код, читаемый человеком, в формат, который непосредственно исполняется компьютером. Для компиляции вам нужен компилятор C++
, например бесплатный компилятор GNU C++
(версия 4.8.1 или новее). Пример команды компиляции со стандартной конфигурацией:
g++ -std=c++11 -O2 -DNDEBUG -DTASTENZAHL=35 -DENGLISH -static-libgcc -static-libstdc++ opt.cc -o opt
Также можно использовать другой компилятор, например компилятор LLVM C++
(версия 3.3 или новее):
clang++ -stdlib=libstdc++ -std=c++11 -O2 -DNDEBUG -DENGLISH opt.cc -o opt
При компиляции можно задавать специальные флаги, например:
g++ -std=c++11 -O2 -DNDEBUG -DTASTENZAHL=32 -DENGLISH opt.cc -o opt
создает исполняемый файл для клавиатуры на 32 клавиши. По умолчанию используется 35 клавиш, в том числе две клавиши Shift. Если вы измените количество клавиш по умолчанию, вам также придется изменить файл конфигурации, см. Раздел 6
.
Чтобы достичь максимально возможной скорости, попробуйте поэкспериментировать с опциями компилятора. Например, попробуйте:
g++ -std=c++11 -Wall -Ofast -DENGLISH -DNDEBUG -DOHNE2SHIFT \-DMIT_THREADS -pthread opt.cc -o opt
В примере выше, опция -DOHNE2SHIFT
приводит к игнорированию букв верхнего регистра, которые появляются как второй символ в последовательности из двух символов. Заглавные буквы обычно встречаются только в начале слов (то есть в качестве первого символа). Следовательно, это упрощение обычно мало влияет на результат рассчетов.
Если вы хотите, чтобы программа поддерживала многопоточность (то есть одновременное использование многопроцессорных ядер), вы должны указать компилятору опцию -DMIT_THREADS
. Во многих системах требуются дополнительные опции. Например, в моей системе мне нужна опция -pthread
. По умолчанию программа использует кодировку UTF-8. Спомощью флага -DAUSGABE_8BIT
, вы можете переключить кодировку на ISO-8859-1
.
Чтобы использовать компьютер для разработки хорошей раскладки, необходимо указать, что именно планируется печатать. Раскладка генериуется на основе вашего текста, который вы самостоятельно предоставите программе как исходные данные. Таким образом, корпус - это коллекция текстов с репрезентативной выборкой того, что вы будете печатать.
Программа разбивает входной текст на блоки: буквенные частоты, частоты диграмм (последовательность из двух букв) и триграмм (последовательность из трех букв). Эти частоты хранятся в файлах с одинаковыми именами и имеют расширения 1, 2 и 3 соответственно. Диграммы и триграммы частично совпадают. Например, слово «bike» содержит диграммы «bi», «ik» и «ke», а также триграммы «bik» и «ike».
В архиве программы в качестве примера содержатся сгенерированные файлы с частотной выборкой немецкого и английского текста. For the files with -t in their name, only digrams and trigrams are accounted for that are in the interior of words and that do not contain hyphenation points.
Чтобы использовать собственную коллекцию текстов, выполните следующие действия:
- Сохраните весь ваш текст в одном файле с кодировкой UTF-8 и расширением txt, например: meinkorpus.txt.
- Убедитесь, что файл имеет кодировку UTF-8.
- Используйте команду opt для генерации частотных файлов: Например:
opt meinkorpus.txt
создает файлы с частотной выборкой meinkorpus.txt.1 (одиночные буквы и символы), meinkorpus.txt.2 (биграммы) и meinkorpus.txt.3 (триграммы) на основе текста из файла meinkorpus.txt, а также частотный список всех используемых слов meinkorpus.txt.wl. Данные файлы создаются в той же директории, что и исходный файл meinkorpus.txt.
Если вы вызываете оператор opt с двумя аргументами, программа предполагает, что первый аргумент обозначает файл, содержащий шаблоны переноса TEX в кодировке UTF-8 (* .pat.txt), а второй аргумент - файл с коллекцией текста. В этом случае программа создает файлы с частотной выборкой, в которых подсчитаны диграммы и триграммы без учета переносов. Например:
opt hyph-de-1996.pat.txt meinkorpus.txt
opt также может составлять выборку из нескольких текстовых файлов. Для этого вызовите более двух аргументов. Например:
opt deutsch.txt deutsch-t.txt deutsch-t.txt gemischt.txt
uses the frequency files for German that are shipping with the optimiser to create new frequency files in which digrams and trigrams at word boundaries or containing hyphenation points are only accounted with one third of their weight. Another possibility for combining and weightingfrequency files is option -G
, as described below.
Программе можно задать дополнительные опции обработки текста. Используйте опцию -2
чтобы программы сгенерировала раскладку с учетом только частотности употребления отдельных символов и диграмм. Используйте опцию -3
чтобы дополнительно учитывались частоты триграмм. Например:
opt -2 deutsch.txt
составит раскладку с использованием частотных выборок на основе файла deutsch.txt
без учета триграмм.
В случае, если файла с частотной выборкой для отдельных символов (в примере выше, deutsch.txt.1) не существует, программа пытается открыть файл с именем заданного аргумента (то есть deutsch.txt). Если это удается, этот файл рассматривается как корпус. Это позволяет пропустить промежуточный этап использования частотных файлов, однако чтение корпуса занимает больше времени. При запуске программы Вы можете указать префиксы -2
или -3
несколько раз. По умолчанию все файлы частотной выборки имеют одинаковый вес независимо от размера корпуса, использованного для их создания. Используя опцию -G
(по умолчанию значение 1), вы можете изменить вес частотных файлов. Например:
opt -2 deutsch.txt -G 3 -2 englisch.txt
при вводе этой команды удельный вес частотной выборки из english.txt в три раза превысит таковую из deutch.txt при составлении раскладки. Задание различных или даже разноязычных частотных файлов отдельно с помощью применения специальных опций требует несколько больших вычислительных усилий, чем использование одного суммированного корпуса. С другой стороны, преимущество этого подхода заключается в том, что оптимальная компоновка, определенная таким образом (при условии, что она вообще найдена), является оптимальной по Парето по отношению к отдельным корпусам. То есть дальше невозможно улучшить раскладку для любого из корпусов, не ухудшая ее для другого. Использование для анализа одного суммированного корпуса не даст данного преимущества.
Если при создании раскладки вместо использования подготовленных частотных файлов, вы читаете основной корпус-файл напрямую, (смотрите ключ -r
в Параграфе 5) то первоначальная раскладка формируется из первых символов файла.
Для расчета частот символов программа предполагает биномиальное распределение, а среднее и дисперсия распределения оцениваются по относительным частотам символов, найденных в корпусе. Для вычисления стандартного отклонения, триграммы и отсутствующие символы не учитываются.
Различия efforts одного стандартного отклонения или ниже, незначительны, то есть они могут быть легко вызваны только случайным выбором в тексте. Различия в три стандартных отклонения или больше можно считать реальными. Чтобы уменьшить стандартное отклонение, необходимо увеличить размер корпуса. Стандартное отклонение обратно пропорционально квадратному корню из размера корпуса. Например, чтобы уменьшить стандартное отклонение вдвое, вам нужен корпус в четыре раза больше. Статистическая погрешность-это не единственная неопределенность, связанная с корпусом.
Чтобы уменьшить стандартное отклонение, необходимо увеличить размер корпуса. Стандартное отклонение обратно пропорционально квадратному корню из корпуса. Например, чтобы уменьшить стандартное отклонение вдвое, вам нужен корпус в четыре раза больше. Статистическая ошибка - не единственная неопределенность, которая связана с корпусом. Например, тип текстов (тексты с длинными или короткими предложениями, со многими или с несколькими иностранными словами) вводится асистематически, что не видно в стандартном отклонении.
Если вы хотите вводить один символ, вводя последовательность из одного или нескольких других символов, вы можете осуществить это с помощью эрзаца, (см. Параграф 6.1). Нет необходимости изменять корпус или файлы с частотной выборкой. Однако, если вы хотите объединить несколько последовательностей символов в один массив, то эта простая процедура больше не работает, так как информация, сохраненная в частотном файле, недостаточна для поддержки суммарных замен. В этом случае необходимо заменить последовательность символов для генерации раскладки. Из этого измененного корпуса затем создаются новые частотные файлы.
Используя опцию -T
, из корпуса и файла с шаблонами переносов TEX, вы можете создать третий файл,, в котором все возможные точки переносов отмечены мягким дефисом: (-): UTF-8:(U+00AD).
Например:
opt -T hyph-en-gb.pat.txt input.txt result.txt
Чтобы составить раскладку клавиатуры, мы учитываем последовательность нажатий клавиш, необходимых, чтобы ввести корпус (тестовый набор?) с этой раскладкой. Также как в корпусе, мы ограничиваем нашу оценку парой критериев. Каждый из этих критериев дает вклад в effort. Сумма этих вкладов это общий effort (см Уравнение 2).
Таблица 1: Разложение диграмм на ключевые ди-_и_триграммы.
|диграммы|----|клавиши|-----|сочетания_ди_и_триграмм||| kx - это клавиша x; sx - это Shift; ky и sy аналогично.
|xy|----------------------|kxky|---|kxky|-------------------------||| sxkx и syky считаются отдельными клавишами,
|Xy|--------------|sxkxky|---------|sxkxky, kxky, sxkx|------------||| так как они соответствуют заглавным буквам.
|xY|--------------|kxsyky|---------|kxsyky, syky, kxsy|------------||| kxky и kxsy - это обычные биграммы.
|XY|-------------|sxkxsyky|--------|sxkxsy, kxsyky, sxkx, kxsy, syky||| sxkxky и sxkxsy - это биграммы с зажатым Shift.
----------------------------------------------------------------||| kxsyky триграмма.
*** 3.1 Механические критерии.
Односимвольные клавишные efforts. У каждой клавиши свой effort. Этот индивидуальный effort умножается на частоту, с которой нажимается клавиша, то есть на частоту буквы, которая соответствует клавише. Сумма этих произведений представляет собой позиционный effort, (см. Уравнение (3)).
Efforts биграмм. Каждая последовательность двух клавиш имеет собственный effort, effort биграммы. Здесь мы называем последовательность из двух комбинаций клавиш, имея в виду пару символов. Чтобы избежать двусмысленности, мы иногда будем использовать термин "клавишная диграмма". Разница показана в таблице 1 путем разложения диграммы " xy " со всеми комбинациями символов верхнего и нижнего регистра. Это приводит к клавишным диграммам типа shift + символьная клавиша, частоты которых взяты из буквенных частот, efforts которых является частью позиционного effort. Кроме того, образуются обычные клавишные диграммы, состоящие из двух символьных клавиш, Shift_диграммы, и триграммы. Так что рассчет становится довольно сложным, (см. уравнение (6)).
Shift_биграммы состоят из клавиши Shift, связанной символьной клавиши и следующей клавиши. Для рассчета их efforts, efforts диграммы для клавиши shift и последней клавиши умножается на коэффициент, (см.уравнение (6)).
Efforts триграмм. Последовательность из трех нажатий клавиш дает effort триграммы. Только при использовании опции -3
учитываются все клавишные триграммы. В противном случае учитываются только клавишные триграммы, частота которых задана частотами диграмм, (см. таблицу 2 и уравнение (7)).
Загрузка пальца (или Finger load). Для каждого пальца указывается целевая частота, которая обозначает долю от общего числа нажатий клавиш, которые должен ввести палец. Если фактическая частота превышает целевую частоту, избыток возводят в квадрат и умножают на весовой коэффициент, чтобы добавить effort, (см. Уравнение (8)).
Фиксированные пальцы являются исключением: пальцы, ключевые стоксы которых не зависят от компоновки, но полностью определяются конфигурацией и корпусом. Фиксированные пальцы являются исключением: пальцы, нажатия клавиш которых не зависят от компоновки, но полностью определяются конфигурацией и корпусом.
Оценка, описанная до сих пор, сосредоточена на механике печати. Вероятно, частота, с которой происходит путаница одинаковых букв, зависит от взаимного расположения клавиш, к которым эти буквы относятся.
Таблица 2: разложение триграмм на клавишные триграммы.
kx - это клавиша x; sx - это shift; ky, sy, kz и sz аналогично. Только для частот kxkykz и kxkysz нам нужны частоты триграмм. Для других ключевых триграмм и сдвиговых диграмм частоты диграмм достаточны.
|триграммы|----|клавиши|------------------|клавишные триграммы|||
|триграммы|----|клавиши|------------------|клавишные триграммы||| kx - это клавиша x; sx - это shift; ky, sy, kz и sz аналогично.
|xyz|--------------|kxkykz|--------------------|kxkykz|---------------------||| Только для частот kxkykz и kxkysz нам нужны частоты триграмм.
|Xyz|--------------|sxkxkykz|------------------|sxkxky, kxkykz|--------------||| Для других ключевых триграмм и сдвиговых диграмм
|xYz|--------------|kxsykykz|------------------|kxsyky, sykykz|-------------||| частоты диграмм достаточны.
|XYz|--------------|sxkxsykykz|----------------|sxkxsy, kxsyky, sykykz|-------|||
|xyZ|--------------|kxkyszkz|------------------|kxkysz, kyszkz|--------------|||
|XyZ|--------------|sxkxkyszkz|----------------|sxkxky, kxkysz, kyszkz|-------|||
|xYZ|--------------|kxsykyszkz|----------------|kxsyky, sykysz, kyszkz|-------|||
|XYZ|--------------|sxkxsykyszkz|--------------|sxkxsy, kxsyky, sykysz, kyszkz|||
В конфигурационном файле можно числом задать степень похожести символов. Это число умножается на "степень перепутываемости", чтобы получить effort(см. уравнение (9)). Степень перепутываемости зависит от двух клавиш, на которые назначены символы, и может быть задана в конфигурационном файле. По умолчанию все буквы считаются несходными.
Некоторые пользователи хотят, чтобы определенные символы находились в определенных местах раскладки клавиатуры. Предпочтения для сопоставления символов с клавишами могут быть определены в файле конфигурации, с числом, которое количественно определяет важность этого предпочтения. Каждое обозначенное в файле конфигурации предпочтение уменьшает effort на это число, (см. уравнение (9)).
Манипулирование файлами корпуса и частот открывает дополнительные возможности для воздействия на рассчет раскладки. Например, при публикации в списке рассылки Neo (раскладка) было заявлено, что процесс написания более важен в слоге, чем через границы слога. Если для оптимизации используются файлы с частотной выборкой, в которых подсчитываются только ди- и триграммы, которые не содержат переносов (см. Раздел 2), то их можно рассчитать приближенным образом (приблизительные, ассиметричные границы и переносы не совсем одно и то же). Для сравнения раскладок, поддерживающих разные наборы символов, есть возможность указать effort для символов, которые нельзя ввести с этой раскладкой. (Судя из контекста, речь о типографских символах, например, в раскладке может не быть знака переноса).
Используя опцию -A
, вы можете распечатать все ненулевые усилия, степень перепутываемости и предпочтения.
Программа использует простой алгоритм, который начинается со случайной раскладки. Раскладка постепенно улучшается путем многократной перестановки символов. Если перестановки больше не ведут к улучшению показателей раскладки, алгоритм завершается.
Результатом этой процедуры является локально оптимальная раскладка клавиатуры. Локально оптимальная раскладка клавиатуры может быть далека от оптимальной из-за заданных опций рассчета. По этой причине описанная выше процедура повторяется снова и снова с использованием случайных раскладок в качестве отправной точки. Количество повторений можно указать с помощью опции -i
. Без этой опции оптимизатор продолжает работать, пока вы не прекратите его. Сколько повторений необходимо задавать, зависит от схемы рассчета и, возможно, от величины и состава корпуса. Согласно моим наблюдениям (автора), при использовании настроек по умолчанию 10000 является разумным значением, при условии, что вы используете опцию -2
. При использовани опции -3
требуется больше повторений для удовлетворительного результата.
По умолчанию каждаяследующая более оптимальная раскладка заменяет предыдущую менее оптимальную. Если вы используете опцию -m
для определения порога, будут напечатаны все локально оптимальные раскладки клавиатуры с общим усилием ниже этого порога.
Используя опцию -s
, вы можете указать положительное целое число, которое служит начальным числом для генератора случайных чисел. Это может быть полезно для получения воспроизводимых прогонов. По умолчанию это случайное число.
Количество используемых потоков можно указать с помощью опции -t
. По умолчанию используется один поток. Количество повторений, указанных с помощью -i
, понимается для каждого потока. То есть, если вы используете несколько потоков, вы можете уменьшить это число пропорционально.
Введем следующие термины: Чередование рук
(Hand alternations
) - это биграммы, клавиши которых набираются разными руками. Двойной удар
(Double strokes
) это биграмма, в которой одна и та же клавиша нажимается дважды. Однопальцевые сочетания
(Same finger repetitions
) - это биграммы, в которых разные клавиши нажимаются одним и тем же пальцем. Удары соседних пальцев
(Adjacent finger strokes') - это биграммы, для которых клавиши набираются смежными пальцами одной и той же руки.
Внутренние смещения (
Inward motions) это такие биграммы, у которых первая клавиша нажимается пальцем, расположенным дальше наружу на той же руке, что и палец, нажимающий вторую клавишу (самый внешний палец это мизинец, а самый внутренний это большой). Для
Внешних смещений (
outward motions`) порядок противоположен. Префикс «Shift-» обозначает специальные диаграммы, для которых первая клавиша - клавиша shift, а вторая клавиша - символьная клавиша.
Вот результат для раскладки «Aus der Neo-Welt», рассчитанной со смешанным немецко-английским корпусом:
Aus der Neo-Welt 382.859 total effort 187.075 positional effort left right
-------------------1.029 same finger rp 6.976 shift same finger top 5.7 11.8
kuü.ä vgcljf------71.404 hand alternat. 24.118 shift hand alter. mid 36.4 32.1
hieao dtrnsß--------1.796 inward/outward 25.117 inward or outward bot 5.2 8.9
xyö,q bpwmz---------9.262 adjacent22.116 shift adjacent sum 47.2 52.8
--------------------8.4 11.2 14.0 13.7 --.- --.- 17.6 10.8 14.3 10.1 Sh 2.9 1.2
Слева вверху напечатано название раскладки или ее порядковый номер. Далее общий effort и позиционный effort. Слева отображена раскладка. Далее указаны частоты клавишных биграмм в процентном соотношении: Однопальцевые сочетания
, Чередование рук
или Удары соседних пальцев
, и соотношение Внутренних смещений
и Внешних смещений
. В колонне правее отображены частоты в процентном соотношении для shift-биграмм с Однопальцевыми сочетаниями
, Чередованием рук
или Ударами соседних пальцев
. В крайней правой колонке распределение нажатий клавиш подробно описано для верхнего, среднего и нижнего ряда и двух рук. Линия внизу показывает, как нажатия клавиш распределяются между пальцами (начиная с левого мизинца до правого мизинца) и клавишами shift. --.-
пишется, когда пробел на большом пальце, но не ясно каком (как на стандартных клавиатурах). По этой причине невозможно указать частоты отдельно для каждого большого пальца. Нажатия клавиш для неопределенного большого пальца учитываются в общем и позиционном effort, но игнорируются для остальной части вывода.
При использовании опции -3
выводятся две дополнительные строки:
4.765 no hand altern. 44.851 two hand altern.
3.582 seesaw-----------6.403 indir same finger
Первая выдает частоты триграмм, набираемых одной рукой и с чередованием рук. Вторая выдает частоты триграмм, которые состоят из одного внутреннего и одного внешнего смещения (независимо от их порядка), и частота триграмм с двумя чередованиями рук, для которых первая и последняя клавиши разные, но набраны одним и тем же пальцем (косвенное повторение одного и того же пальца).
Используя опцию -b
, за которой следует число от нуля до 100, вы можете получить более подробное описание наиболее часто встречающихся биграмм без чередования рук. Кроме того, частота повторений одного и того же пальца и ударов соседних пальцев будет детализирована для каждого пальца и для каждой пары пальцев. Кроме того, частота Однопальцевых сочетаний
и Ударов соседних пальцев
будет детализирована для каждого пальца и для каждой пары пальцев соответственно. При использовании опции -b
во второй раз (за которой следует число) дополнительно выводятся shift-биграммы, при использовании ее в третий раз дополнительно добавляются триграммы.
Использование опции -k
уменьшает вывод до одной строки для раскладки клавиатуры. Опция '-m` указывает общий effort, ниже которого печатаются все локально оптимальные раскладки. Без этой опции будет отображаться только лучшая на данный момент раскладка.
Рисунок 1.
Используя опцию -w
, вы можете указать файл, содержащий список слов. Файл должен быть с кодировкой UTF-8 и каждая строка должна содержать частоту слова, за которой следует слово, отделенное пробелом. Для данной раскладки слова разбиваются на последовательности букв, которые набираются одной рукой. Частоты этих одноручных последовательностей собираются и суммируются по всем словам, а затем выводятся в соответствии с их частотой. По умолчанию отображается столько одноручных последовательностей, что их совокупная частота составляет 95% от всех одноручных последовательностей. Вы можете изменить это ограничение, используя опцию -H
.
Используя опцию -r
, вы можете указать файл, содержащий раскладки клавиатуры, которые будут оцениваться и отображаться без выполнения оптимизации. Кроме того, используя опцию -V
, вы можете изменять эти раскладки. Для каждой раскладки в файле, генерируются все раскладки, которые отличаются от заданной не более чем на количество клавиш, заданных опцией -V
. Если раскладка клавиатуры в файле указывает символ заглавной буквы, то положение этой буквы не будет изменяться. Рекомендуется использовать опцию -m
для уменьшения вывода до лучших из сгенерированных вариантов, так как в противном случае количество сгенерированных макетов быстро станет неуправляемым.
С помощью опции ' - g` можно указать имя файла PostScript, в который записываются графики для всех макетов, которые также выводятся в виде текста. Например, с помощью
opt -2 deutsch.txt -r bsptast.txt -g bsptast.ps
создает файл bsptast.ps
с графикой, для всех раскладок, хранящихся в файле inbsptast.txt
, которые рассчитываются для текстов из deutsch.txt
. На рисунке 1 показан пример.
Графика состоит из двух слоев. Спереди буквы показаны на клавишных позициях. Насыщенность букв соответствует их частотности. Частотность напечатана как число под буквой (10000 соответствует 10 %). Ниже букв миниатюрная клавиатура показывает распространение последующих клавишенажатий. Цвет отличается в зависимости от типа биграммы, интенсивность цвета и цифры на миниатюрных клавишах показывают частотность биграмм. На рисунке 2а
пример. Как видно, r
и R
занимают 6,7 % всех клавишенажатий. После r
и R
, клавиша, которую жмут чаще всего — это клавиша в стартовой позиции левого среднего пальца. В нашем примере, e
расположена на этой клавиша, и 1,2 % всех биграмм — это r-e
.
Рисунок 2
: Детали графического представления.
Задний фон визуализирует биграммы дугами. Толщина дуги соответствует частоте биграммы, цвет различается в зависимости от типа биграммы. Порядок, в котором клавиши биграммы нажаты, показан искривлением дуги и затемнением интенсивности цвета. Для правой руки, движения идут против часовой стрелки, для левой по часовой. Ради точности, редкие биграммы и чередования рук пресекаются (?). Рисунок 2b
показывает толстые, фиолетовые дуги, соединяющие I
и E
. В нашем примере, I
и E
вводятся левой рукой, поэтому верхняя дуга соответствует i-e
, а нижняя e-i
.
Серые стержни (?) под клавиатурой показывают частотности клавишенажатий на палец. Рамка вокруг стержня (?) соответствует 25 % всех клавишенажатий, число внутри неё — относительная частота с учётом введённых символов. Например, серая коробка справа рисунка 2c показывает, что левый указательный палец набирает примерно 14,3 % всех символов. Это значение больше, чем в текстовом выводе, потому что там число относится к количеству клавишенажатий, а здесь к числу символов.
В самом низу вы видите маленькие прямоугольники с суммированными частотами биграмм. Биграммы показаны ниже поля для пальца, который печатает первую клавишу биграммы. Те же самые повторения пальца показаны красным, где три оттенка интенсивности цвета детализируют расстояние, которое палец должен прыгнуть в одном и том же повторении пальца. Соседние движения пальца, разделенные на движения внутрь и наружу, показаны желто-оранжевым, с интенсивностью, указывающей на скачки строк 0, 1 или 2. Размер маленьких квадратиков соответствует 2% от общего числа биграмм, в прилагаемом числе - относительная частота по отношению к общему количеству символов. Например, на рисунке 2c
в нижнем левом углу вы видите, что из всех пальцев левой руки у мизинца больше всего одинаковых повторений пальцев, а именно около 0,24 на 100 символов.
Каждый ряд клавиатуры для каждой руки образует группу. Серые полосы слева и справа от клавиатуры показывают совокупную частоту нажатия клавиш на группу. Рамки вокруг столбцов соответствуют 40% всех нажатий клавиш, приложенные цифры относятся к общему количеству символов. Как вы видите в средней серой рамке на рисунке 2d
, около 37,9% всех символов вводятся в среднем ряду левой руки.
Небольшие прямоугольники по бокам показывают частоты биграмм без чередования рук, разделенные в соответствии с группой, в которую входит первое нажатие клавиши. Для каждой группы график дополнительно различается в зависимости от группы, в которую входит второе нажатие клавиши. Размер поля соответствует 20% от общего количества биграмм, число в поле - это относительная частота по отношению к общему количеству символов. Например, число в зеленом поле в нижнем центре рисунка 2d
означает, что для 100 символов около 6,7 биграмм содержат оба клавишенажатия в среднем ряду левой половины клавиатуры.
При создании графики рекомендуется использовать опцию -i
для ограничения количества итераций. Если вы прервете вычисления (с помощью Ctrl+C), графика все-равно сгенерируется. Файл PostScript, созданный программой, удобочитаем и может быть отредактирован. В начале вы найдете несколько переключателей для настройки визуализации. В конце вы найдете список раскладок клавиатуры для отображения.
Используя опцию-M
, вы можете указать имя текстового файла в кодировке UTF-8, для которого для каждого из вариантов в файле макета, указанного опцией` - r', будет проиллюстрировано, как вводится текст:какая рука используется, находится ли символ в положении покоя, является ли он соседним штрихом пальца или же повторением пальца относительно предыдущего символа. Результат записывается в HTML-файл, имя которого формируется путем добавления.html к имени текстового файла. В начале этого файла находятся определения, позволяющие настроить стиль презентации.
Используя опцию-M', вы можете указать имя текстового файла в кодировке UTF-8, для которого для каждого из вариантов в файле вывода раскладок, указанном опцией
-r`, будет проиллюстрировано, как вводится текст: какая рука используется, находится ли символ в положении покоя, является ли это соседним движением пальца или же повторением пальца относительно предыдущего символа. Результат записывается в HTML-файл, имя которого формируется путем добавления .html к имени текстового файла. В начале этого файла находятся определения, позволяющие настроить стиль презентации.
По умолчанию программа получает свои настройки из standard.cfg
, файла конфигурации, который поставляется вместе с оптимизатором. Используя опцию -K
, вы можете указать другой файл конфигурации. Эта опция может быть дана несколько раз. В результате файлы конфигурации, указанные таким образом, будут объединены.
Обычно, в целях оптимизации, требуется учитывать только наиболее важные символы тех языков, для которых делается раскладка. Символы обычно указываются парами. Первый символ на основном уровне, а второй на shift-слое той же клавиши. Если указать более двух символов, дополнительные считаются синонимами второго. (Aragaer: _Насколько я понимаю, это если у тебя есть буква зю
сама по себе, с точечкой, кружочком, двойным пунктиром и волнистой линией, но допускается в тексте ограничиться только просто зю
или зю
с точкой. Тогда вешаешь на клавишу символ зю
, а с шифтом - зю
с точкой. Также можно указать только один символ, в этом случае он получит собственную клавишу.
Например:
Zeichen ’aA’
Zeichen ’ ’
означает, что строчные и прописные буквы А
совместно используют клавишу, а символ пробела получает клавишу целиком. Также возможно назначить символы определенной клавише.
Например, используя
FixesZeichen AD11 ’ß’
поместит «ß» на ключ с именем AD11
(подробнее об определении ключей и их наименовании см. раздел 6.2). Положение «ß» в этом случае не подлежит оптимизации. Однако его присутствие в раскладке на AD11
может повлиять на то, на каких клавишах будут отображаться другие символы.
Число Zeichen
и FixesZeichenin
файла конфигурации должно соответствовать количеству клавиш минус две (Shift-слой), см. -DTASTENZAHL
в Разделе 1
. Один и тот же символ не должен встречаться в нескольких спецификациях Zeichen
или FixesZeichen
.
Используя Zeichen
и FixesZeichen
, опционально можно указать имя глифа PostScript, которое обозначает символ, который должен использоваться для представления символа в графике. Например:
FixesZeichen SPCE ’ ’ underscore
указывает, что пробелы в графике будут представлены подчеркиванием. Спецификация имен глифов может быть необходима для символов вне ISO-8859-1
. Для их отображения, кроме того, используемый шрифт должен поддерживать эти символы. Шрифт можно выбрать, указав имена шрифтов PostScript с помощью Zeichenfont
и Beschreibungsfont
, отдельно для символов, содержащихся в раскладке, и для описания (чисел), например:
`ZeichenfontFiraMono-Medium
Beschreibungsfont FiraSans-Book`
Иногда вы можете захотеть оставить место на базовом слое под символ из дополнительного слоя пустым. Это можно осуществить путём объявления этого места на базовом слое плейсхолдером. Например, с помощью
Platzhalter ’¦’
Zeichen ’¦ß’
«ß» находится в shift-слое клавиши, базовый слой которой не занят. Вы можете определить только один плейсхолдер, и это необходимо сделать перед всеми остальными назначениями символов. При рассчетах плейсхолдер будет обрабатываться так, как будто он не фигурирует в корпусе.
Также возможно заменить отдельные символы последовательностью других символов. Например, если вы предпочитаете вводить «ss» вместо «ß», вы можете указать это в файле конфигурации с помощью
Ersatz ’ßss
Первый символ в строке Ersatz
- это символ, подлежащий замене, а остальная часть - замена. Замена будет использоваться только в том случае, если заменяемый символ не является одним из тех, которые даны с помощью Zeichen
или FixesZeichen
. Замена может содержать символы, для которых замена была определена в предыдущей спецификации строки Ersatz
. Ersatz
представляет особый интерес, когда вы хотите учесть последовательности dead_keys
при оптимизации.
Количество клавиш, определенное в файле конфигурации, должно соответствовать тому, что было указано при компиляции, см. -DTASTENZAHL
в Разделе 1. Пример определения клавиши:
Taste AD03 4 1 3.25 1 -3 - 4 -
Здесь AD03
- это наименование клавиши. Наименования клавиш в приведенном примере и в авторсом файле конфигурации взяты из xkeyboard-config и основаны на ISO 9995-1
. При желании вы можете заменить их более запоминающимися именами, например, AD01byQ
. Имена клавиш не должны повторяться.
После имени клавиши указываются столбец и строка (𝜉
и 𝜌
) клавиши, в примере это 4
и 1
. Это целые числа, строки в диапазоне от 0 до 4 (где 0 сверху) и столбцы в диапазоне от 0 до 15 (0 слева). За ними следуют горизонтальные и вертикальные координаты (𝑥
и 𝑦
) клавиши, в примере 3.25
и 1
. Это произвольные числа, но обычно они будут близки к значениям столбца и строки соответственно.
Далее идет число, которое указывает на палец ( 𝑓 ), который ударяет по клавише. Отрицательные числа слева, положительные числа справа."-5" и " 5 "- это мизинцы, " -4 " и " 4 "- безымянные пальцы, " -3 " и " 3 "- средние пальцы, " -2 " и " 2 "- указательные пальцы, " -1 " и " 1 " - большие пальцы. "0" - это неопределенный большой палец.
После этого идет флаг. Если это`+', то клавиша - это положение покоя соответствующего пальца. Следующее число дает индивидуальный effort клавиши ( 𝛼 ).
Наконец, можно указать необязательный флаг, который равен +
или -
, если для выбора слоя используется клавиша LShift или RShift. Если флаг отсутствует, то для клавиш на левой руке предполагается правая клавиша shift, и наоборот.
Чтобы определить левую и правую клавиши shift, определите их ключевыми словами ShiftL
и ShiftR
в файле конфигурации. Специальные ключевые слова используются, чтобы убедиться, что обе клавиши shift действительно указаны в файле конфигурации.
Одиночные клавиши
Effort отдельных клавиш определяются в комплексе со всеми остальными, (см. Раздел 6.2
). Целевая частотность указывается с помощью Zielhäufigkeit
. Zielhäufigkeit
имеет десять аргументов (̃𝜁 − 5 ... ̃𝜁 − 1, ̃𝜁1 ... ̃𝜁5)
, ненормированные целевые частоты пальцев, начиная с левого мизинца, проходя через левый и правый большой палец и заканчивая правым мизинцем. Используя Fingerbelastung
, задаются соответствующие десять весовых коэффициентов (̃𝜙 − 5 ... ̃𝜙 − 1, ̃𝜙1 ... ̃𝜙5)
. Если целевая частотность превышена, они будут использоваться для расчета effort от превышения.
Диграммы из клавиш
Существует огромное количество параметров для биграмм. Самым главным является Bigramm
, который ожидает два ключевых имени и effort (ex ex𝑡 𝑡')
, как число. Этот effort добавляется к вычисленному из других параметров. (Конкретизация отдельных диграмм быстро становится неудобной. В файле gencfg.awk
демонстрируется, как помочь себе с помощью простого скрипта).
Например:
Bigramm AD03 AB03 -2.5
При необходимости можно уточнить тип параметра `Bigramm' опцией в конце строки с этим параметром. Биграммы с одной и той же опцией принадлежат к одному и тому же типу биграмм, и их суммарные частоты отображаются в текстовом выводе.
Например:
Bigramm AC04 AC07 0 ’Symmetrical’
Одна и та же биграмма может отображаться в нескольких строках с параметром "Bigramm" и, следовательно, может принадлежать нескольким самоопределяющимся типам биграмм.
Другие параметры выражают effort с точки зрения терминологии, введенной в Параграфах 3 и 5. Различные классы биграмм не являются непересекающимися. Например, каждое Внешнее смещение
также является повторением руки. Efforts, приходящиеся на разные классы, складываются.
Handwechsel
, Handwiederholung
и Auswärts
ожидают число, которое указывает на effort для Чередования рук
(𝜔1)
, Повторения на одной руке
(𝜔0)
и Внешние смещения
(𝜔⇹)
, соответственно. Биграмма с большим пальцем никогда не считается Внешним смещением
.
При использовании параметра DoppeltRabatt
, effort для Двойных ударов
вычисляется путем умножения аргумента (𝜚0)
на разницу effort отдельной клавиши когда палец находится в расслабленном состоянии на домашней позиции (на хоумроу) и effort и effort отдельной клавиши. Обычно разница отрицательна и, следовательно, DoppeltRabatt
обычно приводит к уменьшению effort. ZeilenwiederholungRabatt
придерживается аналогичной идеи. Это ключевое слово ожидает пять чисел (𝜚1 ... 𝜚5)
. Когда оба нажатия клавиш выполняются разными пальцами (исключая большие пальцы) одной и той же руки; оба нажатия клавиш находятся на одной и той же строке, но не в средней строке (2); первая клавиша биграммы не находится на нижней строке и не набирается затем мизинцем как вторая клавиша биграммы; то вычисляется разница, как описано выше, умножается на один из аргументов ZeilenwiederholungRabatt
, и результат принимается за effort. Аргумент выбирается в соответствии с разницей в столбцах клавиш: разница 1 означает первый аргумент, разница 2 - второй аргумент и т. д.
Например:
ZeilenwiederholungRabatt 0.5 0.25 0.16666667 0.125 0.1
означает, что уменьшение усилия для повторения строк обратно пропорционально разности столбцов.
Использование KollisionKonstant " и "KollisionDistanz" позволяет определить effort для
Однопальцевых сочетаний. Оба ключевых слова ожидают пять аргументов ('𝜅1...𝜅5и𝜘1...𝜘5', соответственно), по одному для каждого пальца, начиная с большого пальца и выходя наружу. Effort
Однопальцевого сочетания-это значение из "KollisionKonstant" плюс произведение значения из "KollisionDistanz" и расстояния, которое палец должен прыгнуть в
Однопальцевом сочетании. Расстояние вычисляется по координатам (
𝑥 ,𝑦') , см. (раздел 6.2
).
Например:
KollisionKonstant 10 10 10 10 10
KollisionDistanz 10 10 10 10 10
определяет, среди прочего, что effort Однопальцевых сочетаний
независим от пальца.
Используя "Nachbar", определяются efforts для Ударов соседних пальцев
. Есть четыре аргумента (𝜈3/2,𝜈5/2,𝜈7/2,𝜈9/2
), для пар большой / указательный палец, указательный / средний палец, средний / безымянный палец и безымянный палец/мизинец, соответственно.
Например:
Nachbar 0 1.3333333 2 4
Считается, что Удары соседних пальцев
требуют большего effort, чем дальше наружу (к мизинцу) находятся пальцы.
И, наконец, для повторений на одной руке без использования больших пальцев учитываются effort биграм искривленных рук в виде биграмм, которые указываются с помощью SchrägZS
и SchrägYX
. Оба ключевых слова ожидают двух чисел (𝜃 − 1, 𝜃1 и 𝜗1, 𝜗1
, соответственно), которые применяются к левой и правой руке соответственно. Чтобы получить effort, значение из SchrägZS
умножается на отношение разности строк и разности столбцов, а значение из SchrägYX
- с отношением вертикального и горизонтального расстояния между двумя клавишами.
SchrägZS 0 1
SchrägYX 1 0
SchrägNenner0 0.1 0.1
заставляет искривленные левосторонние биграммы рассчитываться в соответствии с координатами, а правосторонние искривленные биграммы - в соответствии со столбцом и строкой клавиш. Кроме того, мы использовали SchrägNenner0
, чтобы указать два числа (𝛥 − 1 и 𝛥1
, соответственно, для левой и правой руки), которые будут добавлены к разности столбцов и горизонтальному расстоянию в этом вычислении.
Shift-биграммы
Effort Shift-биграммы получается из effort клавшной биграммы, из которой она состоит, умножением на один из двух аргументов (𝜍+
и 𝜍−
) Shiftbigramm
. Первый - использовать, если effort клавишной биграммы положительное, второй-если отрицательное.
Триграммы
Наиболее общее определение effort триграммы возможно с использованием Trigramm
. Рассчет производится как для 'Bigramm', однако, с тремя вместо двух клавиш. Для триграмм, первая и третья клавиши которых управляются одной рукой, учитываются дополнительные efforts. Во-первых, определяется effort для клавишной биграммы, составленной первой и третьей клавишей. Этот effort умножается на одно из двух значений (𝜏+
и 𝜏−
), указанных с помощью Indirekt
: первое, если effort положительный, и второе, если отрицательный. Если средняя клавиша триграммы набрана другой рукой, произведение берется как дополнительный effort, и, кроме того, добавляется значение (𝜔11
), заданное с помощью Doppelwechsel
. Если все три клавиши набраны одной рукой, то произведение сравнивается с суммой effort биграммы для первой/второй и второй/третьей клавиши. Если произведение больше, дополнительный effort - это произведение минус сумма плюс значение (𝜔00
), заданное с помощью "Doppelwiederholung". В противном случае effort - это значение, указанное с помощью "Doppelwiederholung". Наконец, для триграмм, состоящих из внешнего
и внутреннего смещения
пальцев, к effort добавляется значение (𝜔 ⇄
), указанное с помощью "Wippe".
Сходство и путаница
Рассчет путаницы
, или неочевидных запутанных сочетаний производится с помощью параметра - "Verwechslungspotenzial". Он работает как Bigramm
. Кроме того, вы можете указать вклады в путаницу
для клавиш, набранных одним и тем же (VPKollision
,𝜂
) или смежными пальцами (VPNachbar
, 𝜐
). Используя VPSymmetrisch
, вы можете указать вклады ( 𝛴
) для клавиш, набранных одним и тем же пальцем разных рук, а используя VPSymmetrischGleicheZeile
, вы можете указать вклады ( 𝛴 = ' ) для клавиш, которые к тому же находятся на одной строке.
VPHandwechsel " (" 𝜛 ") применяется к клавишам, которые набираются разными руками.
Используя Ähnlich
, определяется сходство (𝜀
) двух или более символов. Например:
Ähnlich ’bp’ 0.1
Ähnlich ’sz’ 0.05
означает, что b
и p
в два раза более похожи, чем s
и z
.
Персональные настройки
Используя Vorliebe
, можно определить предпочтения для назначения символов на клавиши. Ключевое слово ожидает строку символов с предпочтитаемым набором символов для назначения на клавиши, число (𝜆), которое тем больше, чем сильнее предпочтение, и список предпочитаемых клавиш, заданный в виде списка кодов клавиш. Например, чтобы выразить, что вы хотели бы видеть x
, c
и v
на четырех клавишах в левом нижнем углу, вы можете использовать:
Vorliebe ’xcv’ 0.1 AB01 AB02 AB03 AB04
Недостающие символы
С помощью Fehlt
можно указать усилие (𝛷
) для ввода символов, которые не являются частью раскладки.
Например:
Fehlt 100
означает, что для каждого символа, который появляется в корпусе, но не является частью раскладки, учитывается effort 100 единиц.