Keyboard layout installation on Windows Vista

Discussion in 'Windows Vista Drivers' started by JacquesF, Aug 6, 2008.

  1. JacquesF

    JacquesF Guest

    For years, we have been developing specialized keyboard layouts for our

    Once the layouts are copied to the System32 directory and we modify the
    system registry to make the system activate them. We make these
    modifications are made using an intelligent program, because the registry
    entries related to keyboards can vary from one user to another, depending on
    the languages configured through Control Panel, Regional Settings, Keyboard
    and languages, etc...

    Everything was working well on all versions of Windows until Windows XP. If
    fails on Windows Vista in the following way:

    On Vista, the keyboard layout is active, works fine, shows up properly in
    the language toolbar, but if you go in Control Panel, only Microsoft provided
    keyboard layouts show up, and if the configured "current" keyboard layout is
    not a Microsoft provided keyboard layout, No keyboard layout is highlighted
    as being the current one. Furthermore, if that is the only keyboard layout
    defined, the Control Panel app seems to "almost" freeze.

    The problems seems to be related to the key in the registry defining the
    keyboard layout, which was added at some point, to provide MUI support:
    [KHLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\<ident>]
    (where <ident> is the Id of the keyboard layout):

    this key now contains the following Value:
    Keyboard Display Name
    whose contents is of the form:

    We have traced this to be a resource number in a dll, where the name of the
    keyboard layout is stored in the user's language (since Vista stores such
    info in the registry in English, and uses the DLL to localize the

    We tried creating our own DLL to store the resource, and then to add a
    similarly formatted string in the keyboard layout description in the
    registry, but this does not seem to work very well. The name is sometimes
    displayed, sometimes not, and if you try to add a new layout, then you never
    see non-Microsoft layouts displayed.

    I should add that most users of our software use a french version of
    Windows, but not all of them; some are using the English version, but we
    want our solution to work on both.

    Is there a proper way of doing this, that will work on Vista, and be
    compatible with Vista's Control Panel?
    JacquesF, Aug 6, 2008
    1. Advertisements

  2. JacquesF

    Pavel A. Guest

    Have you seen the MS Keyboard Layout Creator?
    it builds the installer automatically,
    for all Windows versions.

    Pavel A., Aug 6, 2008
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.