Показать сообщение отдельно
Старый 20.02.2009, 18:56   #1
ShivakiGPS
Старичок
 
Аватар для ShivakiGPS
Доп. информация
Хорошо [Русификация] Установка дополнительной локализованной клавиатуры в Win CE

В этой теме обсуждается возможность добавления панели ввода символов
(SIP, или виртуальной клавиатуры)
с нужной пользователю раскладкой.

В этой теме обсуждаются клавиатуры в виде файлов библиотек (.dll), соответствующим образом прикручиваемые к WinCE и вызываемые стандартными (для Windows) способами.
У кого экранной клавиатуры нет совсем (проверить можно [[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]>
Вас не устраивает раскладка "родной" виртуальной клавиатуры? Хотите изменить язык ввода? Хотите изменить вид/размер виртуальной клавиатуры?
Попробуем добавить новую!

Так это должно выглядеть:



Внимание! Это не простой запуск дополнительной программы. Работа с реестром и с папкой Windows всегда сопряжена с определенным риском. Пробуйте, если все осознаете.
Сделайте резервную копию ключа реестра HKCU\ControlPanel\Sip "DefaultIm"
Не изменяйте/удаляйте библиотеку "родной клавиатуры".
Не изменяйте/удаляйте ключи настроек "родной клавиатуры" в реестре.

В этой теме под термином "Клавиатура" подразумеваем экранную панель ввода - виртуальную клавиатуру. Исключительно - чтобы не писать длинных и англоязычных названий.

[[Ссылки могут видеть только зарегистрированные пользователи. ]]>

Теория в "Вопросах и Ответах"

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
Micron Для разрешения экрана 320х240 и выше CLSID\{47B3F64A-C3D0-4c6 2-BE0B-DA33BB186D0A}



[[Ссылки могут видеть только зарегистрированные пользователи. ]]>

2 Resco keyboard
Resco keyboard Для разрешения экрана 320х240 и выше



[[Ссылки могут видеть только зарегистрированные пользователи. ]]> Спасибо yurat2008!

3 Pocket RussKey
Pocket RussKey Для разрешения экрана 320х240 и выше CLSID\{6ADC72B1-969C-4821-A300-FDF2A198BBA1}



[[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]> Спасибо real_by1!
Список совместимости

4 Cyrillic Keyboard
Cyrillic Keyboard Для разрешения экрана 320х240 и выше CLSID\{BF10BE00-7477-11D5-B457-00C04F2444D6}



[[Ссылки могут видеть только зарегистрированные пользователи. ]]>

5 Ukrainian Keyboard
Ukrainian Keyboard Для разрешения экрана 320х240 и выше CLSID\{BF10BE01-7477-11D5-B457-00C04F2444D6}



[[Ссылки могут видеть только зарегистрированные пользователи. ]]> FuntPND!

6 MSH Keyboard
MSH Keyboard Для разрешения экрана 480х272, 480х234 и выше



[[Ссылки могут видеть только зарегистрированные пользователи. ]]> Спасибо PauS!

7 CEKeyboard
CEKeyboard от SeNS (smartqmid.ru) CLSID\{42429695-AE04-11D0-A4F8-00AA00A749B9}



[[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]> [[Ссылки могут видеть только зарегистрированные пользователи. ]]>

8 Qkeys
Клавиатура Qkeys Для разрешения экрана 320х240 и выше CLSID\{D79FF5E2-3F2D-4EDF-9DFA-8EDAE42024BB}


[[Ссылки могут видеть только зарегистрированные пользователи. ]]>

Распространенные ошибки
В: Почему клавиатура не появилась в списке, и естественно выбрать ее нельзя?
О: Произошла ошибка при записи в реестр. Проверьте наличие и правильность внесенныех значений.

В: Почему клавиатура появилась в списке, но ее нельзя выбрать (выбор возвращается на стандартную)?
О: Изменения записались в реестр, но по указанному в нем пути нет библиотеки клавиатуры. Проверьте скопирована ли библиотека, правильно ли записан путь.

В: Новая клавиатура не установилась. Та что была раньше пропала. Что сейчас делать?
О: Об этом Вас предупреждали. Читайте "Как вернуть все обратно..."

Как вернуть все обратно...

Привожу способ восстановления устройства с клавиатурой 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) Перезагружаем устройство
ShivakiGPS вне форума  
160 пользователя(ей) сказали cпасибо:
Показать/Скрыть список поблагодаривших
 
Время генерации страницы 0.04190 секунды с 12 запросами