Switch to English Домой Поиск Список участников Вопросы и ответы Зарегистрироваться Войти  
Windows Embedded CE
русская раскладка клавиатуры в WINCE6.0

Автор темы: maximus   Начата: 12-05-2008 03:15    Ответов: 26
 Форум "Встраиваемые операционные системы Microsoft" >> Embedded OS >> Windows Embedded CE >> русская раскладка клавиатуры в WINCE6.0
 Printable Version    << Предыдущая тема   Следующая тема >>
  Пт, 05 дек 2008, 03:15
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
русская раскладка клавиатуры в WINCE6.0
Добрый день господа.
У меня возникла проблема с добавлением русской раскладки клавиатуры в WINCE 6.0. В свойствах моего ос дизайна, в разделе Locales я добавил русский, тоесть сейчас у меня там 2 галочки - английский(США) и русский. В разделе codepages у меня выбраны 437 (OEM United States), 866 (OEM - Russian), 1251 (Ansi - Cyrilic), 1252 (Ansi - Latin 1). После запуска прошивки, я открываю клавиатуру, и там где где находится кнопка переключения раскладки я вижу какие-то иероглифы. Когда я нажимаю на эту кнопку, то на всех клавишах клавиатуры появляются иероглифы. Я думал что это неверная кодировка установлена, захожу панель управления->Язык и региональные стандарты, открывается диалоговое окно и тут же выдается сообщение об ошибке "Application CTLPNL.ENE encountered a serious error and must shut down". Лог из терминала

Exception 'Raised Exception' (-1): Thread-Id=04a5000a(pth=8489093c), Proc-Id=04a2000a(pprc=848905dc) 'CTLPNL.EXE', VM-active=04a2000a(pprc=848905dc) 'CTLPNL.EXE'
PC=4002f1ec(coredll.dll+0x0001f1ec) RA=8011548c(kernel.dll+0x0000648c) SP=0007fa54, BVA=00000000

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


  
  Вс, 07 дек 2008, 07:01
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
создаются каталоги c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\INPUTLANGS\0419 и c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DEVICELAYOUTS\PS2_AT\00000419 с русской раскладкой, собирается kbdru.dll и добавляется в проект. Сложного там ничего нет. Вот если SIP панель русскую захотите, тогда да - придется свой Bitmap рисовать и текст родной панели переписывать.

  
  Вс, 07 дек 2008, 08:18
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
Re: русская раскладка клавиатуры в WINCE6.0
просмотрел я по заданным путям. нет у меня каталогов 0419 и 00000419. Есть 0401, 0409, 040D, 0411, 0412, 041E, 0439, 0446, 0447, 0449, 044A, 044B, 044E. И файлик у меня создается kbdus.dll. Правда default locale в свойствах ос дизайна стоит, Английский (США). Странно почему у меня не создаются. Или может это вручную надо делать?

  
  Пн, 08 дек 2008, 10:18
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
Вручную, но на базе раскладок от больших Windows. В MSDN описано как. Ссылку так сразу не кину. Но она тут на форуме пробегала при предыдущем обсуждении, только найти я ее чего-то не могу.

  
  Пн, 08 дек 2008, 10:31
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
О - вроде нашел http://msdn.microsoft.com/en-us/library/aa924326.aspx

  
  Пн, 08 дек 2008, 10:57
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
Re: русская раскладка клавиатуры в WINCE6.0
Сгенерировал файлы с помошью kbdgen.exe, добавил по указанным путям. Библиотеки собираются. Но создать kbdru.dll не получается. Там еще есть каталоги \public\common\oak\drivers\keybd\dll\ в котором находятся папки kbd8042xxxx и kbdnopxxx. Я создал там kbd8042ru и kbdnopru, все сделал по аналогии. начали билдится библиотеки с таким же названием. Но опять же - нет никаких dll. Где добавляется код для создания dll из этих библиотек? Что я только не пробовал - ни в какую. И главное как потом сказать ядру чтобы использовало именно kbdru.dll.
Там есть один подозрительный файлик в каталоге \public\common\oak\catalog\keybmouse.pbcxml. Добавил в него содержимое
  <Item Id="Item:MS:8042KeyboardMouseRussian">
    <Title>#MS:Common:8042KeyboardMouseRussian:Title</Title>
    <Description>#MS:Common:8042KeyboardMouseRussianBig Smileescription</Description>
    <HelpLink Action="WceHelpCollection">pb.catalogitem.8042KeyboardMouseRussian</HelpLink>
    <CecImportGuid>6563ad44-e71c-11d4-b892-0050fc049781</CecImportGuid>
    <Module>Kbd8042Ru.dll</Module>
    <Module>kbdru.dll</Module>
    <CloneModule>
      <Module>kbdus</Module>
      <DepTree>common</DepTree>
    </CloneModule>
    <ChooseOneGroup>true</ChooseOneGroup>
    <Location>#MS:CommonBig SmileeviceDrivers_InputDevices_KeyboardMouse:Location</Location>
    <SourceCode>
      <Title>$(_WINCEROOT)\public\common\oak\DRIVERS\KEYBD\DLL\KBD8042RU</Title>
      <Path>$(_WINCEROOT)\public\common\oak\DRIVERS\KEYBD\DLL\KBD8042RU</Path>
    </SourceCode>
  </Item>

Все равно не билдится. Где же это может быть?

  
  Вт, 09 дек 2008, 10:49
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
сказать вот так:
в .reg
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\00000419]
    "Layout File"="kbdru.dll"
    "Layout Text"="Russian"
    "PS2_AT"="kbdru.dll"

[HKEY_CURRENT_USER\Keyboard Layout\Preload\2]
    @="00000419"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\00000409]
    "Layout File"="kbdus.dll"
    "Layout Text"="US"
    "PS2_AT"="kbdus.dll"

[HKEY_CURRENT_USER\Keyboard Layout\Preload\1]
    @="00000409"

[HKEY_CURRENT_USER\Keyboard Layout\Preload]
    @="00000409"

в .bib
kbdru.dll       $(_FLATRELEASEDIR)\kbdru.dll                      NK     SHK

Это если русская раскладка вторая.

Я собирал временно переделав c:\WINCE600\PUBLIC\COMMON\CESYSGEN\makefile
добавив там везде 0419 и kbdru по аналогии с 0409 и kbdus.
после того как kbdru.dll собран makefile можно вернуть на место (и нужно, потому что он иногда обновляется с update-ами)
Может это и не самое правильное решение, но все прошло...


  
  Вт, 09 дек 2008, 02:51
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
Re: русская раскладка клавиатуры в WINCE6.0
Спасибо большое. Вчера, тоесть сегодня в 4 часа ночи я тоже дошел до этого решения, правда почему-то у меня не билдилось. Будем пробовать. На свежую голову должно получиться.

  
  Вт, 09 дек 2008, 03:08
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
Непременно получится Smile Я давно это делал, поэтому тоже подзабыл все нюансы.


  
  Вт, 09 дек 2008, 07:07
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
Re: русская раскладка клавиатуры в WINCE6.0
ДА, сбилдить kbdru.dll мне удалось. Спасибо большое. Добавил в проект, добавил записи в реестре platform.reg. и platform.bib.  Все проверил в рабочем каталоге. Потом проверил на устройстве, файлы kbdus.dll и kbdru.dll присутствуют. Но при старте после нажатия на клавиатуре на au по прежнему на кнопках появляются непонятные иероглифы. Обязательно ли заходить в язык и региональные стандарты и там что-то менять, чтобы на клавиатуре появились нормальные русские буквы, или по умолчанию все должно получиться. Просто я не могу зайти туда и что-то поменять, так как у меня возникает ошибка. Файлы которые я генерировал kbdgen.exe нормальные, я сверял с файлами из пакета русификации от Кварта. Их содержимое совпадает. Я конечно понимаю что задаю дурацкий вопрос, но в чем может быть причина?

  
  Вт, 09 дек 2008, 07:52
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
Ха ! Так это Вы про SIP панель - это вторая серия Smile . Kbdru.dll- это только ввод с физической клавиатуры подключенной к устройству. В трее должен появится переключатель клавиатур и ввод с физической клавиатуры должен заработать.
SIP-панелей (экранных клавиатур) в CE6.0 предопределенных две. Большая и маленькая. Большая SIP for Large Screen ( в катологе c:\WINCE600\PUBLIC\COMMON\SDK\SAMPLES\LARGEKB\) совершенно не расчитанна на переключение языков и я ее не использовал. Маленькая SIP for Small Screen ( c:\WINCE600\PUBLIC\COMMON\SDK\SAMPLES\MSIM\) получше и языки позволяет переключать. Но русского там нет. Рисунок клавиатуры c:\WINCE600\PUBLIC\COMMON\SDK\SAMPLES\MSIM\RESOURCE\keybd.bmp Его Вы и видите, когда вызываете экранную клавиатуру. Где-то в ресурсах .res ( не помню уже где - не важно) японский, корейский,китайский и еще какаие-то неруские языки. Эти ресурсы подключаются по createmui для многоязыковых интерфейсов (и если у Вас такой проект то и эти ресурсы придется править). Битмап этот придется перерисовать и текст панели c:\WINCE600\PUBLIC\COMMON\SDK\SAMPLES\MSIM\im.cpp  переписать. У меня тоже не хватило терпения на перерисовку Smile и я взял этот битмап с PDA на Windows Mobile. Он правда тоже покоцан ( тоже видать терпения не хватило Smile нет маленькой клавиатуры с жестами ), но текст панели все равно править , и этот метод ввода можно исключить.

  
  Вт, 09 дек 2008, 11:58
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
Нашел(вспомнил) где лежат ресурсы для многоязычного интерфейса Windows для SIP-панели.
c:\WINCE600\PUBLIC\COMMON\OAK\LIB\(<CPUID>Wink\RETAIL(DEBUG)\0419\msim.res
Как видно, несмотря на 0419, русский язык внутри отсутствует. Переведен только диалог настройки SIP панели.

соответственно, если собираете многоязычный интерфейс Windows - этот(эти) файлы надо тоже править, иначе через createmui не соберется.

Если интерфейс Windows одноязычный, то достаточно просто собрать новый msim.dll и включить в проект

  
  Ср, 10 дек 2008, 03:43
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
Re: русская раскладка клавиатуры в WINCE6.0
Спасибо. я вчера тоже нашел что это msim.res. Только вот msim.dll собирается у меня из msim.res, который находится в каталоге \PUBLIC\COMMON\OAK\LIB\ARMV4I\RETAIL\0409. В этот каталог msim.res не собирается, а записывается как готовый файл при установе PLatform Builder. Я по дате проверял. Затем он копируется в такой-же каталог где собираются все файлы для прошивки\0409\ и оттуда уже билится msim.dll. Но мне не понятно почему у меня берется msim.res из каталога 0409 а не из 0419. В любом случае картинка находящаяся в ресурсе совершенно одинаковая что в каталоге 0409 что в 0419. Я изменил keybd.bmp в каталоге MSIM\RESOURCES. Перекомпилил, получил msim.res, а затем его подложил в каталог куда копируются файлы перед созданием прошивки\0409\ и пересобрал проект. Пересобралась msim.dll. И на устройстве на клавиатуре я увидел свои изменения. Такс, у меня 2 вопроса.
1. Почему у меня msim.res берется из каталога 0409?
2. Нарисовать то русские буквы на картинке клавиатуры я смогу, там используется всего 2 картинки для обычной клавиатуры и при нажатой кнопке shift. Но вот что нужно для того чтобы при нажатии на мою рисованую клавиатуру печатались русские буквы? Нужен ли для этого файл kbdru.dll который я так мучительно собирал, или достаточно отредактировать im.cpp для поддержки руссой кодировки?

  
  Ср, 10 дек 2008, 04:28
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0

1) Потому что язык интерфеса Windows английский. Был бы русский, собиралось бы из 0419.
2) я уже отвечал - kbdru.dll только для реальной клавиатуры, подключенной к устройству. Используются все картинки и переключаются методы ввода в панели управления, диалог панели управления и возможных вариантов ввода можно посмотреть в ресурсах, если не включаете Control Panel. "Мучительно править" Вы будете im.cpp - там надо каждой кнопке сопоставить Unicode русских букв, а kbdru.dll - так..., для разминки Smile , мы просто не поняли друг друга... я кстати честно написал в первом своем посте про SIP-панель.

  
  Ср, 10 дек 2008, 11:47
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
Re: русская раскладка клавиатуры в WINCE6.0
Русские символы дизайнер нарисовал, причем очень красиво. Все скомпилировал. Выглядит супер, только появилась инверсия цвета, фон стал черным а сами буквы белыми. Странно, при просмотре ресурсов и msim.dll в Visual Studio все выглядит нормально. Да и параметры msim.bmp совпадают с оригиналом. Ну вобщем ладно, и так выглядит хорошо. Завтра буду переписывать таблицу UTF

  
  Ср, 24 дек 2008, 06:41
maximus сейчас не в системе. Последяя активность: 10.02.2010 14:31:25 maximus

25 лучших
Присоединился 09-04-2007
Харьков
сообщений 88
Re: русская раскладка клавиатуры в WINCE6.0
Огромное спасибо. Все получилось. Клавиатура вышла супер. Если надо картинку с русскими и код могу выслать.

  
  Ср, 24 дек 2008, 09:31
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
Да да.. Я тоже что около 3 недель с этим возился Smile

  
  Чт, 12 мар 2009, 01:41
grigg сейчас не в системе. Последяя активность: 12.03.2009 14:30:20 grigg

Нет рейтинга
Присоединился 03-02-2009
сообщений 1
Re: русская раскладка клавиатуры в WINCE6.0
 maximus wrote:
Огромное спасибо. Все получилось. Клавиатура вышла супер. Если надо картинку с русскими и код могу выслать.


А было бы замечательно Smile
Можно?

  
  Пн, 08 фев 2010, 11:24
Novice сейчас не в системе. Последяя активность: 11.02.2010 17:00:53 Novice

500 лучших
Присоединился 02-05-2010
Тюмень
сообщений 4
Re: русская раскладка клавиатуры в WINCE6.0
Доброго времени суток:
Общая тема таже, но проблема следующая:
Сделал:
"создаются каталоги c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\INPUTLANGS\0419 и c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DEVICELAYOUTS\PS2_AT\00000419"

генерировал файлы с помошью kbdgen.exe, добавил по указанным путям"

создал kbd8042rus и kbdnoprus, все сделал по аналогии с папками kbd8042xxxx и kbdnopxxx по пути \public\common\oak\drivers\keybd\dll\

добавил переделанный makefile  в
c:\WINCE600\PUBLIC\COMMON\CESYSGEN\makefile
добавив там везде 0419 и kbdrus по аналогии с 0409 и kbdus

при билде в билдлоге появляется: "NMAKE : fatal error U1073: don't know how to make 'D:\WINCE600\public\common\oak\lib\x86\retail\Kbd8042RUS.def'
Stop."

где его обучить создавать деффайлы?

  
  Пн, 08 фев 2010, 03:11
fil1111 сейчас не в системе. Последяя активность: 10.09.2010 10:51:32 fil1111

50 лучших
Присоединился 03-06-2007
сообщений 76
Re: русская раскладка клавиатуры в WINCE6.0
Я не создавал новых kbd8042ru и kbdnoprus.

Могу выложить все что касается kbdru.dll - все изменения и уже собранные dll для ARM и X86 - но боюсь это нарушит какой либо из пунктов лицензионного соглашения...

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

 Directory of C:\wince600\public\common\cesysgen
           122902 makefile

 Directory of C:\wince600\public\common\oak\Drivers\keybd\devicelayouts\ps2_at
              823 dirs

 Directory of C:\wince600\public\common\oak\Drivers\keybd\devicelayouts\ps2_at\00000419
            12886 kbdru.cpp
              663 kbdru.def
              845 makefile
             1142 sources

 Directory of C:\wince600\public\common\oak\Drivers\keybd\inputlangs
              741 dirs

 Directory of C:\wince600\public\common\oak\Drivers\keybd\inputlangs\0419
            26010 IL_0419.cpp
              845 makefile
              990 sources

Плюс вышеописанные добавления в reg и bib


  
 Страница 1 из 2 (Всего 27 записей) 1 2 >>
Форум "Встраиваемые операционные системы Microsoft" >> Embedded OS >> Windows Embedded CE >> русская раскладка клавиатуры в WINCE6.0

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

Работает под управлением Community Server :: Forums