For the goal I was working towards of enabling a custom keyboard and allowing spell checking, etc. in another language within Office 2010 products, I used a custom keyboard created from the Microsoft tool and the Office 2010 Proofing Tools (which are available from the volume license/MSDN sites). First addressed is how to install the proofing tools, and at the end there's a short section on a custom keyboard.
The Proofing Tools 2010 is simple to install. However, because of some trickiness around several default keyboards that are enabled by default I would recommend editing the config.xml to restrict the installation to only the languages you need (in this example Russian is selected). To install the proofing tools and enable the config.xml file the following command line can be used (%~dp0 variable to set the source directory):
"%~dp0Proofing Tools 2010 32-bit\Setup.exe" /config "%~dp0Proofing Tools 2010 32-bit\ProofKit.WW\config.xml"
To install Sp1 for the proofing tools as well:
"%~dp0proofingtoolskit2010sp1-kb2460053-x86-fullfile-en-us.exe" /quiet /norestart
Below are the contents of a sample config.xml file. Lines that are changed from the default value are indented to the left and are without the comment indication of '<!--'. Note, that all the languages are marked as absent except the one that is required:
<Configuration Product="Proofkit">
<Display Level="none" CompletionNotice="no" SuppressModal="yes" AcceptEula="yes" />
<!-- <Logging Type="standard" Path="%temp%" Template="Microsoft Office Proofkit Setup(*).txt" /> -->
<!-- <USERNAME Value="Customer" /> -->
<!-- <COMPANYNAME Value="MyCompany" /> -->
<!-- <INSTALLLOCATION Value="%programfiles%\Microsoft Office" /> -->
<!-- <LIS CACHEACTION="CacheOnly" /> -->
<!-- <LIS SOURCELIST="\\server1\share\Office;\\server2\share\Office" /> -->
<!-- <DistributionPoint Location="\\server\share\Office" /> -->
<OptionState Id="IMEMain_1028" State="absent" Children="force" />
<OptionState Id="IMEMain_1041" State="absent" Children="force" />
<OptionState Id="IMEMain_1042" State="absent" Children="force" />
<OptionState Id="IMEMain_2052" State="absent" Children="force" />
<OptionState Id="ProofingTools_1025" State="absent" Children="force" />
<OptionState Id="ProofingTools_1026" State="absent" Children="force" />
<OptionState Id="ProofingTools_2052" State="absent" Children="force" />
<OptionState Id="ProofingTools_3076" State="absent" Children="force" />
<OptionState Id="ProofingTools_1028" State="absent" Children="force" />
<OptionState Id="ProofingTools_1050" State="absent" Children="force" />
<OptionState Id="ProofingTools_1029" State="absent" Children="force" />
<OptionState Id="ProofingTools_1030" State="absent" Children="force" />
<OptionState Id="ProofingTools_1043" State="absent" Children="force" />
<OptionState Id="ProofingTools_1033" State="absent" Children="force" />
<OptionState Id="ProofingTools_1061" State="absent" Children="force" />
<OptionState Id="ProofingTools_1035" State="absent" Children="force" />
<OptionState Id="ProofingTools_1036" State="absent" Children="force" />
<OptionState Id="ProofingTools_1031" State="absent" Children="force" />
<OptionState Id="ProofingTools_1032" State="absent" Children="force" />
<OptionState Id="ProofingTools_1037" State="absent" Children="force" />
<OptionState Id="ProofingTools_1081" State="absent" Children="force" />
<OptionState Id="ProofingTools_1038" State="absent" Children="force" />
<OptionState Id="ProofingTools_1040" State="absent" Children="force" />
<OptionState Id="ProofingTools_1041" State="absent" Children="force" />
<OptionState Id="ProofingTools_1087" State="absent" Children="force" />
<OptionState Id="ProofingTools_1042" State="absent" Children="force" />
<OptionState Id="ProofingTools_1062" State="absent" Children="force" />
<OptionState Id="ProofingTools_1063" State="absent" Children="force" />
<OptionState Id="ProofingTools_1044" State="absent" Children="force" />
<OptionState Id="ProofingTools_1045" State="absent" Children="force" />
<OptionState Id="ProofingTools_1046" State="absent" Children="force" />
<OptionState Id="ProofingTools_2070" State="absent" Children="force" />
<OptionState Id="ProofingTools_1048" State="absent" Children="force" />
<OptionState Id="ProofingTools_2074" State="absent" Children="force" />
<OptionState Id="ProofingTools_1051" State="absent" Children="force" />
<OptionState Id="ProofingTools_1060" State="absent" Children="force" />
<OptionState Id="ProofingTools_3082" State="absent" Children="force" />
<OptionState Id="ProofingTools_1053" State="absent" Children="force" />
<OptionState Id="ProofingTools_1054" State="absent" Children="force" />
<OptionState Id="ProofingTools_1055" State="absent" Children="force" />
<OptionState Id="ProofingTools_1058" State="absent" Children="force" />
<OptionState Id="ProofingTools_1027" State="absent" Children="force" />
<OptionState Id="ProofingTools_1056" State="absent" Children="force" />
<OptionState Id="ProofingTools_1069" State="absent" Children="force" />
<OptionState Id="ProofingTools_1094" State="absent" Children="force" />
<OptionState Id="ProofingTools_1095" State="absent" Children="force" />
<OptionState Id="ProofingTools_1097" State="absent" Children="force" />
<OptionState Id="ProofingTools_1099" State="absent" Children="force" />
<OptionState Id="ProofingTools_1102" State="absent" Children="force" />
<OptionState Id="ProofingTools_1110" State="absent" Children="force" />
<OptionState Id="ProofingTools_2068" State="absent" Children="force" />
<OptionState Id="ProofingTools_1098" State="absent" Children="force" />
<Setting Id="SETUP_REBOOT" Value="Never" />
<!-- <Command Path="%windir%\system32\msiexec.exe" Args="/i \\server\share\my.msi" QuietArg="/q" ChainPosition="after" Execute="install" /> -->
</Configuration>
Another several command lines I used was removing the additional default keyboards that are added from the 'Run' key. I didn't get a chance to test whether this was still needed after editing the config.xml file to install only the necessary language.":
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "IME14 CHS Setup" /f
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "IME14 CHT Setup" /f
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "IME14 JPN Setup" /f
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "IME14 KOR Setup" /f
On a final note, if you need to enable a specific keyboard, this can be installed using the resulting .msi from the Microsoft tool used to create keyboards which will also enable it for the account that runs the installation:
msiexec /i "%~keyboard.msi" /quiet /norestart
To enable a keyboard for other profiles, the following two command lines can be run on each profile:
Ex. Enables the default keyboard for a specific language
reg add "HKCU\Keyboard Layout\Preload" /v 2 /t REG_SZ /d 00000419 /f
Ex. Substitues a specific keyboard within a specific language as the one to use
reg add "HKCU\Keyboard Layout\Substitutes" /v 00000419 /t REG_SZ /d a0000419 /f
View inventory records anonymously contributed by opt-in users of the K1000 Systems Management Appliance.