none
Generate the italian keyboard layout RRS feed

  • Question

  • Hi all,

    i'm inserting on the WinCE600 image the support for the italian keyboard layout.

    I generated the cpp files and reg file by the kbdgen and the ita XP dll, i generated the c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DEVICELAYOUTS\PS2_AT\00000410\ and c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\INPUTLANGS\0410\ directories and relative project files cloning and modifying the 0409 structure.

    I rebuilt the image, the obj and kbdit_lib.lib files are generated but i miss the next step(s) to generate kbdit.dll.

    What i miss??

    Thanks


    SteMMo
    Thursday, May 19, 2011 7:48 AM

All replies

  • use a source file like the following (you need to change the path probably, this was used in a BSP source tree):

    TARGETNAME=kbdit

    TARGETTYPE=DYNLINK
    RELEASETYPE=PLATFORM
    SYNCHRONIZE_DRAIN=1

    DLLENTRY=_DllMainCRTStartup

    DEFFILE=..\..\DEVICELAYOUTS\PS2_AT\00000410\kbdit.def

    SOURCELIBS=

    TARGETLIBS=\
        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\kbdit_lib.lib \
        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\InputLang_0410.lib \
        $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\NumPadRmp.lib \
        $(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib

    SOURCES=

     


    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com
    Friday, May 20, 2011 10:05 AM
  • Do you consider it as file 'sources' into the c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DLL\KBDNOPIT\ directory?

    I cloned the file sources from c:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DLL\KBDNOPUS\ and it turned in:

    DOSYSGEN=1
    
    SYNCHRONIZE_DRAIN=1
    
    DEFFILE=$(_COMMONOAKROOT)\inc\KbdIT.def
    
    TARGETNAME=KbdNopIT_lib
    TARGETTYPE=LIBRARY
    TARGETDEFNAME=KbdNopIT
    
    WINCETARGETFILE0=$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\$(TARGETDEFNAME).def
    
    
    SOURCELIBS=\
      $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\Nop_KbdCommon.lib	\
      $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\Nop_PddList.lib	\
      $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\LayoutManager.lib	\
      $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\kbdit_lib.lib \
      $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\NumPadRmp.lib \
      $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\InputLang_0410.lib \
    
    
    WINCETARGETFILES=dummy
    
    SOURCES=
    

    SteMMo
    Friday, May 20, 2011 11:03 AM
  • In my BSP I have a folder which contains the file generated by kbdgen, a 'dummy' folder to link kbdit.dll and the .reg and .bib files. You can download it from

     

    it's partially working: the '\' and other chars are at the correct place for an italian keyboard but pressing the italian specific chars like 'à' and others you see nothing on the screen. Hope it helps anyway...

    ftp://generic-user:g3n3r1c1234@downloads.eurotech.com/KBDIT.zip
    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com
    Friday, May 20, 2011 11:33 AM
  • I put some files under PLATFORM folder, especially InputLang, DeviceLayout:

     
    BUILD: [00:0000000005:PROGC ] Computing include file dependencies:
    BUILD: [00:0000000006:PROGC ] Checking for SDK include directory: C:\WINCE600\sdk\CE\inc.
    BUILD: [00:0000000007:PROGC ] Scan C:\WINCE600\public\common\oak\drivers\keybd\InputLangs\0410\
    BUILD: [00:0000000008:PROGC ] Saving C:\WINCE600\public\common\Build.dat.
    BUILD: [00:0000000011:PROGC ] Building COMPILE Pass in C:\WINCE600\public\common\oak\drivers\keybd\InputLangs\0410\ directory.
    BUILD: [01:0000000021:PROGC ] Compiling .\IL_0410.cpp
    BUILD: [00:0000000026:PROGC ] Building LIB Pass in C:\WINCE600\public\common\oak\drivers\keybd\InputLangs\0410\ directory.
    BUILD: [01:0000000036:PROGC ] Linking C:\WINCE600\public\COMMON\oak\lib\ARMV4I\retail\InputLang_0410.lib
    BUILD: [00:0000000038:PROGC ] Saving C:\WINCE600\public\common\Build.dat.
    BUILD: [00:0000000040:PROGC ] Done.
     

     When i compile the driver KbdIT in the BSP I see the warn (?):

    BUILD: [00:0000000056:WARNN ] C:\WINCE600\PLATFORM\IMX25XS14\src\DRIVERS\KEYBD\KBDIT\: 
    Missing source file: C:\WINCE600\OSDesigns\iMx25Si14Design\iMx25Si14Design\Wince600\IMX25XS14_ARMV4I\cesysgen\oak\lib\ARMV4I\retail\InputLang_0410.lib.
    
     
    So the driver expects to find the lib on a different directory, but since the US keyboard compilation is working, i guess there is someone that copies the inputlang us lib files from one to the other dir.
    SteMMo
    Monday, May 30, 2011 1:18 PM
  • The C:\WINCE600\public\common\oak\drivers\keybd\InputLangs\0410 directory has been placed there by you, hasn't it? it's not part of the PB installation

    Have you modified the sources file in the DLL folder? The one I gave you links to $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\InputLang_0410.lib which, in your environment, will expand to C:\WINCE600\platform\IMX25XS14\lib\ARMV4I\retail\InputLang_0410.lib


    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com
    Monday, May 30, 2011 2:57 PM
  • The C:\WINCE600\public\common\oak\drivers\keybd\InputLangs\0410 directory has been placed there by you, hasn't it? it's not part of the PB installation

    Yes, correct. I'm trying to clone the architecture done for other keyboards. 

    Have you modified the sources file in the DLL folder?

    Yes, I added a new folder: KBDNOPIT, that is almost empty, only a sources file that builds KbdNopIT_lib library (cloned from KbdNopUs).

    The one I gave you links to $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\InputLang_0410.lib which, in your environment, will expand to C:\WINCE600\platform\IMX25XS14\lib\ARMV4I\retail\InputLang_0410.lib

    Yes, but i'd like to insert it into the standard compilation such as the other ones.

    SteMMo
    Tuesday, May 31, 2011 9:02 AM
  • I need to explain the situation.

    I'd like to add to my image the files to have the support for USB keyboard on both italian and english flavours.

    Reading the platform.bib file i saw that

    kbdmouse.dll $(_FLATRELEASEDIR)\KbdNopUs.dll NK SHK

    rename the KbdNopUs driver to kbdmouse: it means that only a layout is handled for USB keyboard ???


    SteMMo
    Wednesday, June 1, 2011 7:20 AM
  • KbdNopUS.dll is not a USB driver, it is a basic driver for a keyboard that supports USA keyboard layout.   If this is the only KbdNop*.dll that you include in your OS, then yes it only supports USA keyboards.   But, you can include others, and you will then need to add Layout Manager registry settings to tell the system about the other layouts that you are including.
    Bruce Eitman (eMVP)
    Senior Engineer
    Bruce.Eitman AT Eurotech DOT com
    My BLOG http://geekswithblogs.net/bruceeitman

    Eurotech Inc.
    www.Eurotech.com
    Wednesday, June 1, 2011 1:07 PM
    Moderator
  • In the image I only see the kbdmouse.dll, that is the KbdNopUS renamed by the platform.bib file.

    I could add the KbdNopIt.dll file but how the system can point to it? Must it be renamed in any way?

    BTW i have a compiling error due (i guess) to a misaligned library path.

     

    I added the registry items as follow (cloned from the US keyboard items):

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\00000410]
      "Layout File"="kbdit.dll"
      "Layout Text"="Italiano (Italia)"
      "PS2_AT"="kbdit.dll"
    
    [HKEY_CURRENT_USER\Keyboard Layout\Preload\1]
      @="00000410"
    
    and now i see an icon near the tray area that allow me to select US or ITA layout (of course ITA doesn't work). But here the kbdit.dll is declared ?!?!?
    SteMMo
    Friday, June 3, 2011 8:37 AM
  • You will notice in your reply that your Italian keyboard is named KbdNopIt.dll but you have told the system, via the registry, that the driver is named kbdit.dll.
    Bruce Eitman (eMVP)
    Senior Engineer
    Bruce.Eitman AT Eurotech DOT com
    My BLOG http://geekswithblogs.net/bruceeitman

    Eurotech Inc.
    www.Eurotech.com
    Friday, June 3, 2011 12:31 PM
    Moderator
  • Yes, that's because my guess was that 2 drivers are needed. Taking a look to the US entries in platform.reg i saw that are defined two drivers/dlls:

    [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD]
      ...
      "Keyboard Layout"="00000409"
      "DriverName"="KbdUs.dll"
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\00000409]
      "Layout File"="KbdUs.dll"
      "Layout Text"="US-Keypad"
      "KPPLayout"="KbdUs.dll"
    
    [HKEY_CURRENT_USER\Keyboard Layout\Preload\4]
      @="00000409"
    
    
    ;SM - For USB keyboard - see Vinoth answer
    #define DRIVERS_DIR $(_PUBLICROOT)\common\oak\drivers
    #include "$(DRIVERS_DIR)\keybd\keybd.reg"
    #include "$(DRIVERS_DIR)\keybd\LayMgr.reg"
    ;SM
    

    The first (kbdus.dll) for both the DEVICEMAP\KEYBD and layouts\00000409 keys, the second one for a couple of .reg files needed for USB keyboard support: in that ones I have kbdmouse.dll (that is the KbdNopUs.dll renamed).

    So, i have to rename my KbdNopIt.dll into kbdit.dll, according with the registry settings for 00000410 items?

     


    SteMMo
    Friday, June 3, 2011 2:08 PM