Старичок
Доп. информация
|
Регистрация: 21.01.2009
Сообщений: 457
Сказал(а) спасибо: 124
Поблагодарили 2,108 раз(а) в 174 сообщениях
|
|
[Русификация] Установка дополнительной локализованной клавиатуры в Win CE
Теория в "Вопросах и Ответах"
1. Как в навигаторах реализована виртуальная клавиатура?
Большинство навигаторов (но не все!) имеют свою виртуальную клавиатуру. Ее размер 240х80 или 240х104 (с полоской сверху).
Клавиатура имеет две раскладки - английскую и еще какую то не русскую.
Именно на такие навигаторы производится установка клавиатур, описанных в этой теме.
Существуют навигаторы, в прошивку которых не добавлены компоненты, отвечающие за виртуальную клавиатуру.
Установить клавиатуру описанным в этой теме способом на них скорее всего не получится.
Проверить, есть ли в устройстве виртуальная клавиатура, можно запустив одну из утилит вызова клавиатуры. Например ToggleInputPanel.
Программы навигации имеют свою виртуальную клавиатуру. Не путайте клавиатуру программы и клавиатуру устройства.
2. Зачем нужна новая клавиатура?
а) нужен свой язык ввода
б) "родная" клавиатура слишком мелкая
в) нужно вводить слова на нескольких языках
г) нужна красивая клавиатура
3. Как она устроена?
Большинство из приведенных здесь клавиатур состоят всего из одного файла xxxx.dll.
Этот файл содержит уникальный идентификатор объекта, вроде этого 6ADC72B1-969C-4821-A300-FDF2A198BBA1, о котором я буду упоминать далее.
4. Как ее установить?
Для установки клавиатуры достаточно:
1) Разместить этот файл на навигаторе (желательно не на съемном носителе).
2) Далее необходимо рассказать Windows о новой клавиатуре. Это тоже просто:
Берется идентификатор объекта. В специальный раздел реестра под этим идентификатором заносятся значения:
2а) Название клавиатуры.
2б) Путь к иконке клавиатуры.
2в) Ссылка на исполняемый модуль (файл xxxx.dll).
2г) Тип объекта - панель ввода.
Собственно - все. Можно пользоваться.
Если устройство не сохраняет реестр, то после сброса устройства (ХР, Хард ресет, Hard reset) установку нужно повторить.
5. Что произойдет после установки с "родной" клавиатурой?
"Родная" клавиатура останется на своем месте, на нее можно будет переключиться.
6. Как переключиться на "новую" клавиатуру?
Активная клавиатура выбирается при вызове через панель задач (см. первую картинку - самая правая иконка) или через раздел Input Panel в Панели управления. Второй способ работает и без запуска Explorer-а (графической оболочки Windows)
7. Как сделать так, чтобы вызывалась сразу новая клавиатура?
Надо в ключ реестра HKCU\ControlPanel\Sip "DefaultIm" внести идентификатор новой клавиатуры и перезагрузить устройство.
К некоторым клавиатурам добавлена утилита установки новой клавиатуры "по умолчанию" без перезагрузки.
8. А хуже не будет?
Перечислю опасные места.
1) Нельзя указывать уже используемый идентификатор. Этим можно нарушить другой объект.
2) "Ковыряясь" в реестре можно стереть/изменить важные параметры.
И то и другое может привести к потере работавших до этого функций или даже нарушить загрузку устройства.
3) Если для установки клавиатуры используется скрипт, его надо адаптировать к своему устройству.
9. Что за важный параметр HKCU\ControlPanel\Sip "DefaultIm"?
Этот ключ реестра содержит информацию о клавиатуре по умолчанию. (Она же "Активная клавиатура" см. п.6, п.7)
Если вернуть его в прежнее значение (и при этом вы не трогали библиотеку и ключи настроек "родной клавиатуры"), то "родная клавиатура" обязана появиться когда это потребуется.
10. Как мне сделать Backup (резервную копию)?
Опишу, как мне кажется, самый простой способ:
10.1 Запускаем [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
10.2 В правой панели открываем карту памяти. (У меня это \MMC_Storage\)
10.3 Создаем папку с названием, напимер BackupKB. Входим в нее. (\MMC_Storage\BackupKB\)
10.4 В левой панели поднимаемся до корневой папки (\). (далее все действия проводим в левой панели)
10.5 Заходим \\Plugins --> REGISTRY (\\\REGISTRY\)
10.6 Заходим в HKCU\ControlPanel. Курсор ставим на Sip.
10.7 нажимаем Копировать/Перенести, и копируем в правую панель.
10.8 Заходим в HKCU\ControlPanel\Sip и открываем ключ "DefaultIm". Аккуратно переписываем на листочек странный 32-х разрядный код. Ключ закрываем без изменений!
10.9 Переходим в HKCR\CLSID\. Встаем на {выписанный ранее 32-х разрядный код}, и копируем его в правую панель.
10.10 Заходим в {32-х разрядный код}. Последовательно просматриваем значения ключей, и если обнаруживаем в любом из них имя файла, аккуратно переписываем его на листочек. (например \windows\msim.dll). Файлов может быть несколько. Ключи закрываем без изменений!
10.11 находим этот файл/файлы и копируем его/их в правую панель.
Все, теперь в папке BackupKB у вас резервная копия родной клавиатуры.
В ней должны быть файлы Sip.reg, {32-х разрядный код}.reg и файлы из п.11.11. При восстановлении надо проделать обратное копирование.
Утилиты вызова клавиатуры
И наконец сами клавиатуры. Номер присвоен в порядке поступления.
1 Micron
4 Cyrillic Keyboard
8 Qkeys
Распространенные ошибкиВ: Почему клавиатура не появилась в списке, и естественно выбрать ее нельзя?
О: Произошла ошибка при записи в реестр. Проверьте наличие и правильность внесенныех значений.
В: Почему клавиатура появилась в списке, но ее нельзя выбрать (выбор возвращается на стандартную)?
О: Изменения записались в реестр, но по указанному в нем пути нет библиотеки клавиатуры. Проверьте скопирована ли библиотека, правильно ли записан путь.
В: Новая клавиатура не установилась. Та что была раньше пропала. Что сейчас делать?
О: Об этом Вас предупреждали. Читайте "Как вернуть все обратно..."
Как вернуть все обратно...
Привожу способ восстановления устройства с клавиатурой CLSID 42429667-ae04-11d0-a4f8-00aa00a749b9, msim.dll. Буду считать, что ни одна клавиатура не работает.
Для начала советую попробовать [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
Не заработала? Тогда по пунктам:
1) Проверяем на месте ли библиотека стандартной клавиатуры: Чаще всего это \windows\msim.dll
2) Восстанавливаем все ключи стандартной клавиатуры - Запускаем скрипт со следующим кодом:
Код:
RegWriteString( "HKCU", "ControlPanel\Sip","DefaultIm","{42429667-ae04-11d0-a4f8-00aa00a749b9}")
RegWriteDWord( "HKCR", "CLSID\{42429667-ae04-11d0-a4f8-00aa00a749b9}", "KBMode", 00000005 )
RegWriteString( "HKCR", "CLSID\{42429667-ae04-11d0-a4f8-00aa00a749b9}", "", "Keyboard" )
RegWriteString( "HKCR", "CLSID\{42429667-ae04-11d0-a4f8-00aa00a749b9}\IsSIPInputMethod", "", "1" )
RegWriteString( "HKCR", "CLSID\{42429667-ae04-11d0-a4f8-00aa00a749b9}\DefaultIcon", "", "\windows\msim.dll,0" )
RegWriteString( "HKCR", "CLSID\{42429667-ae04-11d0-a4f8-00aa00a749b9}\InProcServer32", "", "windows\msim.dll" )
3) Перезагружаем устройство
|