Thursday, October 25, 2007

Add Persian(Farsi) Keyboard Layout Manually

This step is useful if you can't add your languyage and keyboard by windows input languages in Regional Settings

1- Install Additional files for complex script and right to left languages
2- Get and put kbdfa.dll in system32 folder (It's farsi keyboard layout)
3- Open windows\inf\intl.inf and add the following settings
3-1-
[Locales]
00000429 = %Farsi% ,720 ,11,,0409:00000409,0429:00000429,0429:00000401
3-2- Enter after same entries
[00000429]
;
; Farsi (Iran)
;
DelReg = FontSubs.Registry.Remove,FileSystem.Registry.FE
AddReg = NLS.Registry.Farsi
AddReg = NLS.Setlang.0429,Font.CP1256.Substitutes

3-3- Enter after same entries (On my windows, It's only entry about this keyboard layout in that file)
[NLS.Registry.Farsi]
HKLM,System\CurrentControlSet\Control\NLS\Codepage, ACP,,1256
HKLM,System\CurrentControlSet\Control\NLS\Codepage,OEMCP,,720
HKLM,System\CurrentControlSet\Control\NLS\Codepage,MACCP,,10004
HKLM,"Software\Microsoft\Windows NT\CurrentVersion\FontMapper","DEFAULT",0x00010001,178
3-4-
[KBD.LGFiles.Install.Arabic]
kbdfa.dll ; Farsi

[KBD.LGFiles.Remove.Arabic]
kbdfa.dll ; Farsi

3-5-
[Strings]
Farsi = "Farsi"
KLT_124 = "Farsi"

4- Add below registry entries
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language Groups]
"d"="1"
d is equal to 13 for arabic group which can be find in intl.inf file.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"10000"="c_10000.nls"
"1256"="c_1256.nls"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale]
"00000429"="d"
These are farsi lang id and arabic lang group id

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\\00000429]
"Layout File"="KBDFA.DLL"
"Layout Text"="Farsi"
"Layout Display Name"="@%SystemRoot%\system32\input.dll,-5124"

No comments: