Итак. То чего вы все так долго ждали. (Точнее не вы а в основном натовцы).
Скрипт для генерации произвольной раскладки. Никаких нарушений авторских прав и т.д.
Руководство по использованию.
- Скачайте архив Сылка на QIP
- Скачайте и установите на компьютер среду разработки webOS SDK (под Windows, Linux или MacOS);
- Распакуйте на жесткий диск содержимое архива keypatch.zip. На жестком диске появится папка с файлами "keypatch".
- Подключите HP TouchPad к компьютеру в режиме USB-накопителя
- Перенести папку ruskey в корневую папку USB-накопителя.
- Отключите USB-накопитель от компьютера.
- Подключите планшет к компьютеру, не переходя в режим USB-накопителя.
- Перейдите в директорию, в которую вы ранее установили webOS SDK, откройте подпапку bin и запустите приложение novaterm
- Подключитесь к планшету в режиме терминала, кликнув по кнопке "Connect"
- Наберите в командной строке cd /media/internal/keypatch
- Используя команды описанные чуть ниже установите нужную клавиатуру.
- После этого запустите приложение Regional Settings и добавьте клавиатуру любой страны с раскладкой AZERTY. Если нужна английская раскладка QWERTY, то её тоже нужно добавить.
Инструкция по использованию скрипта для пункта 11.
Возможные команды
- Код: Выделить всё
sh patch.sh version
- Проверяет установленную версию и сообщает о возможности установки патча.- sh patch.sh generate - Генерирует файлы <версия>.data и <версия>.template.json. Первый просто хранит информацию необходимую для патча. Второй содержит полный шаблон раскладок для редактирования.
- Код: Выделить всё
sh patch.sh check
- Проводит самодиагностику скрипта. А именно:
- Проверяет версию файла или его резервной копии
- Читает информацию из файла, если она отсутствует
- Генерирует шаблон, если отсутствует
- Парсит шаблон (ВНИМАНИЕ эта опреация может занимать от 5 до 10 минут при полном шаблоне)
- Копирует файл во временный и вносит в него изменения.
- Проверяет соответствует ли пропатченный файл исходному и сообщает о результатах
- Код: Выделить всё
sh patch.sh check <файл с раскладкой>
- Проверяет версию файла или его резервной копии
- Читает информацию из файла, если она отсутствует
- Парсит шаблон (ВНИМАНИЕ эта опреация может занимать от 5 до 10 минут при полном шаблоне)
- Копирует файл во временный и вносит в него изменения.
- Проверяет соответствует ли РАЗМЕР пропатченного файла исходному.
- Сообщает местоположение пропатченного файла
- Код: Выделить всё
sh patch.sh patch <файл с раскладкой>
Делает тоже что и check с файлом раскладки, только ещё и переписывает его на место оригинального предварительно делая резервную копию, если нужно.- Код: Выделить всё
sh patch.sh revert
Откатывает изменения из резервной копии.
В базовую комплектацию скрипта входит файл с шаблоном для русской раскладки, т.ч. можно сразу запустить
- Код: Выделить всё
sh patch.sh patch rus.json
если вас устраивает такая раскладка.
Инструкция по редактированию шаблона.
Если вас не устраивает русская раскладка или вы хотите другую раскладку то необходимо сначала подготовить шаблон. Для этого сначала нужно сгенерировать полный шаблон из оригинального файла
- Код: Выделить всё
sh patch.sh generate
Затем скопировав его на компьютер открыть его в любом редакторе, позволяющем читать и сохранять текстовые файлы в формате UTF-8 без BOM (Byte Order Mark), например Notepad++.
Изменить необходимым образом, сохранив с новым названием, записать его обратно в папку со скриптом и запустить
- Код: Выделить всё
sh patch.sh patch <имя файла>
ВНИМАНИЕ: Не используйте шаблон русской раскладки как основу для редактирования, только тот, который генерируется скриптом. В русском шаблоне отсутствуют неизменённые элементы для ускорения его разбора скриптом. Используйте его только как наглядный пример во что может превратится исходный шаблон.
Шаблон представляет собой обыкновенный
JSON файл.
Вот простой пример на котором мы рассмотрим его формат
- Код: Выделить всё
{
"layouts": {
"QWERTY": {
"0": {
"0": {
"WIDTH": "none",
"CLASS": "invisible",
"MAIN": {"TYPE": "C", "CHAR": "Q"},
"SEC": {"TYPE": "C", "CHAR": "["},
"EXT": ""
},
"1": {
"WIDTH": "normal",
"CLASS": "normal",
"MAIN": {"TYPE": "C", "CHAR": "1"},
"SEC": {"TYPE": "C", "CHAR": "!"},
"EXT": "SET0"
}
}
}
},
"sets": {
"SET0": {
"0": {"TYPE": "C", "CHAR": "1"},
"1": {"TYPE": "C", "CHAR": "!"},
"2": {"TYPE": "C", "CHAR": "¹"},
"3": {"TYPE": "C", "CHAR": "¼"},
"4": {"TYPE": "C", "CHAR": "½"},
"5": {"TYPE": "C", "CHAR": "¡"}
}
}
}
Есть два верхних уровня - это layouts и sets.
В первом описываются раскладки основной клавиатуры во втором наборы дополнительных клавиш.
layouts состоит из 3х подуровней QWERTY, QWERTZ и AZERTY. Они соответствуют трём закодированным в устройстве раскладкам.
Каждая раскладка состоит из 8 рядов клавиш. А именно: 0(нумерация идёт с 0) - цифровой ряд, 1-3 - буквенные ряды, 4 - стандартный нижний ряд, 5 - нижний ряд по умолчанию (в принципе совпадает с 4), 6 - нижний ряд для ввода урла (в браузере), 7 - нижний ряд для ввода email.
Каждый ряд состоит из 12 клавиш.
В приведённом примере описываются первые две клавиши, первого ряда раскладки QWERTY.
Каждая клавиша определяется несколькими параметрами:
- WIDTH - относительная ширина клавиши. Вообще ширина подбирается автоматом под размер экрана, но мы можем задать её относительную ширину.
- none - отсутствие параметра для ширины. Система считает такую клавишу короткой.
- short - короткая клавиша. Примерно в 2 раза короче стандартной.
- normal - стандартная ширина.
- long - двойной размер клавиши
- spacebar - очень длинная клавиша. Используется для пробела
- CLASS - класс клавиши
- normal - обычная клавиша
- invisible - невидимая клавиша
- none - отсутствие клавиши
- spacebar - используется для пробела.
- EXT - название набора доп. символов, который открывается по удержанию клавиши. Если набора нет, то пустая строка ("")
- MAIN и SEC - основной и дополнительный символы. Они состоят из двух значений:
- TYPE - тип символа:
- C - печатный символ
- S - спец клавиша (шифт, enter, backspase и т.д.)
- V - строковая клавиша (например смайлы, .com и т.д.)
- CHAR - собственно символ.
- Для S и V это специальные цифровые константы в шестнадцатеричном виде
- для C - это обыкновенный UTF-8 символ.
В приведённом примере мы видим что первая клавиша в первом ряду QWERTY раскладки это невидимая, короткая (без ширины) клавиша, на которую назначена буква Q как основной символ и [ как дополнительный. Вторая - стандартная клавиша нормальной ширины с символами 1 и ! соответственно и ссылкой на набор дополнительных клавиш SET0.
Можно полностью удалить клавишу из раскладки. Для этого достаточно присвоить параметрам WIDTH и CLASS значения "none", параметр EXT задать пустой строкой (""), упараметров MAIN и SEC задать TYPE: "C" и CHAR: "" (пустая строка).
sets состоит из 65ти (0-64) набора расширенных символов. Каждый набор состоит из нескольких символов. Символ описывается только как TYPE и CHAR, которые по описанию аналогичны тем же параметрам у клавиш.
В данном примере SET0 состоит из 5ти символов: 1, !, ¹, ¼, ½ и ¡.
ЗАМЕЧАНИЕ! По правилам формата символ \ и " нужно экранировать, поэтому они должны быть записаны как "\\" и "\"" соответственно.
ОГРАНИЧЕНИЯ! Нельзя увеличивать количество символов в наборе. Т.е. конечно это можно сделать, но скрипт не даст вставить большее количество символов и прочтёт только то количество, какое было в оригинальном файле. С другой стороны уменьшать количество можно записав вместо символа пустую строку (""). Так же не будут учтены символы после 12ти и ряды после 8ми. Это ограничение обусловлено тем, что нельзя менять размер данных в бинарном файле, только содержимое.