Thank you very much for this great guide, but please explain how can I change the layout and characters of the keyboard gif and the english_cn.kbd files?
first off all - we need source .smg files - you can download it from
http://www.filefactory.com/file/4e9c8d/ (unbranded 53P firmware) or begin flash the phone and plug out the cable when phone goes to MBM mode (Red screen on phone) if you use firmware different from 53P. Don't quit RSDLite tools - copy CG34,CG41,CG42 files first to work directory.
than we need Unicode font from ThreeSearch and other files - download it from there - http://www.filefactory.com/file/008717/ for latin localization you need only font. For another localization - that file includes Photoshop PSD template files where you can change symbols. (do not use english_cn.kbd from that archive - it's completely different for russian localization)
for latin localization don't use Russian_Firmware_Patch. This firmware patch have some keyboard layouts completely replaced with cyrillic alphabet. Latin localization don't need cyrillic characters.
for localization we need modify files from branding pack (CG34) and localizing pack (CG41+CG42)
1. Unpack CG34 with cramfsck tool.
IMPORTANT! Remember source size of CG34 file in BYTES!
2. Unpack CG41+CG42
IMPORTANT! Remember sizes of CG41 and CG42 files in BYTES!
CG41 and CG42 it is a two parts of one CRAMFS file.
You need merge them - unix operation 'cat CG41 CG42 > locale'
IMPORTANT! Remember size of file 'locale' in bytes after merge
unpack file 'locale' with cramfsck
CG34 - this is branding pack. We need only /icon/iconres.ezx file for localization purposes from them.
Now we need to unpack icons from that file. Use unpackIconRes.pl script patched for A1200 (donwload from - http://www.filefactory.com/file/e32d28/). Utilities for E680i/A780 won't work.
Then you need modify GIF files represented keyboards -
InputW_QWERTY_PRC.g.gif
InputW_QWERTY_PRC_CAP.g.gif
InputW_QWERTY_PRC_CAP_Shift.g.gif
InputW_QWERTY_PRC_Shift.g.gif
this keyboards directly linked to file english_cn.kbd from localization pack (CG41+CG42). One symbol place in gif file = one symbol in layout.
Symbols goes from left to right and from up to down side exclude special keys such as ENTER, SHIFT, CAPS, BACKSPACE, etc.
Layouts in english_cn.kz
Layout1=InputW_QWERTY_PRC.g.gif
Layout2=InputW_QWERTY_PRC_CAP.g.gif
Layout3=InputW_QWERTY_PRC_Shift.g.gif
Layout4=InputW_QWERTY_PRC_CAP_Shift.g.gif
etc.
modify Keyboard Gif files as you want (make it look like you computer keyboard - this is standart)
modify english_cn.kbd layouts with char codes (unicode must be in hex - 0x**** format)
Replace source keyboard gif files with your modified.
Build new iconres.ezx with 'buildicons' - this script calls to motoezxse.pl to build iconres.ezx.
but first you need build 'calchash.cpp' file - 'gcc calchash.cpp' operation.
do not use packIconRes.pl script. Missed some icons trouble still there.
Build CG34 with mkcramfs tool. Extend new CG34 file size to original CG34 size with 0xFF byte.
IMPORTANT! new CG34 size MUST BE exactly same as original CG34 file size!
2. Working with localization pack (CG41+CG42)
replace original Motorola font AMCSL.TTF with ThreeSearch's one. at /fonts
replace original english_cn.kbd at directory /inputmethods with your customized early english_cn.kbd.
Build 'newlocale' cramfs file with mkcramfs tool. Extend it to size of original 'locale' (merged file from CG41+CG42) size with 0xFF byte.
Split file 'newlocale' by two files - first file from begin of file to size of original CG41 file, second file - all what ends 'newlocale' file.
IMPORTANT! new file sizes MUST BE exactly same as original CG41 and CG42 file size!
That new three files (CG34,CG41,CG42) you can use when flashing the phone.
Thank you very much for this great guide, but please explain how can I change the layout and characters of the keyboard gif and the english_cn.kbd files?
Keyboard - is a picture with lines of characters, you need edit this picture - replacing some characters representation to new one. Use Photoshop or something else.
english_cn.kbd-
Every character representation have especial code - such as
..
O latin symbol have unicode code - 0x00D6. Look at the sample - calculate position in Keyboard - through all symbols excluding special keys. First symbol 1 than 2 and etc. Need us position is 41 - calculate in Layout string (it depends on keyboard name you edit, see it in my first post) of english_cn.kbd file, position number 41 and replace symbol or code to 0x00D6. Repeat for all characters you want replace.
Where do I get the unicodes for each character of different languages?
www.unicode.org or MacOS X have Special Characters utility which show the character and show it unicode number.
Don't know about Windows..
Thank you very much bOOster. I'll try it out when I have the time and if I had any problems I'll ask you.
You have made a great achievement here.
By the way, will that make the A1200 read SMS written in same unicode which you modified the keyboard with or that is a different story?
Can someone make a azerty keyboard and let it to download ?? ^^please
![]()
I love my Ming, he is still the one for me
Sorry again, also did you change the characters as changed when using the shift or caps buttons? and if so how did you do it?
Sorry for asking so many questions but what you did is so fascinating and compelling.
samkatta
1. CAPS and shift buttons keyboard it postfixed with _CAPS_ and _SHIFT_ postfixes such as
Layout4=InputW_QWERTY_PRC_CAP_Shift.g.gif - this is CAPS presses and SHIFT pressed keyboard
My recomendations about SHIFT and CAPS - take a look on you localized computer keyboard - and make keyboard for phone same in normal, SHIFT and CAPS modes. I think that computer keyboard layout maked for maximum pleasure in work.
2. Unicode is a standart for all languages. It make for compatibility. SMS display depends on font. UNICODE font is standart - it layout cannot be modified through all languages, hardware platforms, Operation systems an etc. if you follow UNICODE standart it warrants that you got same results on all systems where UNICODE supported.
for information - see GSM 03.40 standart have UCS2 flag - (UCS2 is a encoding format of UNICODE characters)
Hmm. In Russian locale i completely replace _CAPS_ symbols with russian symbols.