目的:
在Windows CE作業系統中內建為United States 101 keyboard,在不支援的語系中我們將協助客戶自行產生其他語系的Keyboard Layout.
時間:90 分鐘
工具:
Keyboard Layout Generator tool (Kbdgen.exe) 利用此工具來擷取Windows XP的Keyboard Layout來產生Windows CE 輸入語系的Source Codes.
路徑:C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386\kbdgen.exe
Microsoft Keyboard Layout Creator(MSKLC.exe)利用此工具來驗証實作的Keyboard Layout是否正確.
網址:http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx
實作:
我們將利用Windows XP內建的Keyboard Layout來產生在Windows CE作業系統上所需要的Source Code.
1.在Windows XP作業系統上開啟regedit.exe工具,並將找到希臘文的路徑.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000408]
"Layout File"=”KBDHE.DLL”
PS:Layout Files中的值為Windows XP中所支援的檔案名稱,預設路徑在C:\Windows\System32之中.
2.利用Windows CE的Keyboard Layout Generator tool來產生Source Files.
A.開啟command line 工具並將路徑切換至C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386\
B.執行【kbdgen.exe "C:\WINDOWS\system32\kbdhe.dll" -o Kbdhe -i 00000408】
C.在執行目錄下會產生三個檔案
KbdheDL.cpp (Device layout)
KbdheIL.cpp (Input language)
Kbdhe.reg (registry files)
3.利用英文Keyboard Layout來建立希臘的Keyboard Layout.
A.請在C:\WINCE600\PUBLIC\COMMON\OAK\DRIVERS底下將KEYBD資料夾複製到%_TARGETPLATROOT%\SRC\DRIVERS下,利用記事本開啟Dirs檔案並加入Keybd目錄名稱到檔案.
※%_TARGETPLATROOT%路徑為C:\WINCE600\PLATFORM\DEVICEEMULATOR\
B.將目錄移至”%_TARGETPLATROOT%\SRC\DRIVERS\KEYBD\DEVICELAYOUTS\PS2_AT”除” 00000409”之外刪除其他所有目錄,並將”00000409”目錄名稱改為”00000408”。
C.開啟Dirs刪除所有內容只加入00000408文字,如下圖
D.刪除00000408目錄下的kbdus.cpp檔案並將上步驟2產生的KbdheDL.cpp複製到此並改名稱為”Kbdhe.cpp”
E.將kbdus.def檔案改名為kbdhe.def
F.利用記事本開啟kbdhe.def並作下列修改,修改完畢請存檔離開.
LIBRARY kbdhe
EXPORT
PS2_AT_00000408
IL_00000408
G.利用記事本開啟Sources並作下列修改,修改完畢請存檔離開
==============修改部分為粗體==============
TARGETDEFNAME=kbdhe
TARGETNAME=$(TARGETDEFNAME)_lib
TARGETTYPE=LIBRARY
DEFFILE=$(TARGETDEFNAME).def
WINCETARGETFILE0=$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\$(TARGETDEFNAME).def
PREPROCESSDEFFILE=1
RELEASETYPE=PLATFORM
WINCEOEM=1
SOURCES= \
Kbdhe.cpp \
==========================================
4.請再換目錄至%_TARGETPLATROOT%\SRC\DRIVERS\KEYBD\INPUTLANGS將目錄下除0409之外全部刪除並將0409改名稱0408.
A.開啟Dirs刪除其他目錄名稱只保留0408
B.刪除0408目錄中的檔案il_0409.cpp,複製步驟2.產生的KbdheIL.cpp到目錄並改名為il_0408.cpp
C.利用記事本開啟Sources並作下列修改,修改完畢請存檔離開
TARGETNAME=InputLang_0408
TARGETTYPE=LIBRARY
SOURCES= \
il_0408.cpp \
5.將目錄切換至%_TARGETPLATROOT%\SRC\DRIVERS\KEYBD\DLL將目錄下除KBD8042US之外全部刪除並將KBD8042US改名稱KBD8042HE.
A.開啟Dirs刪除KBD8042US之外的其他目錄名稱,並將KBD8042US改成KBD8042HE
B.開啟KBD8042HE目錄編輯Sources檔案並作下列修改,修改完畢請存檔離開
DOSYSGEN=1
SYNCHRONIZE_DRAIN=1
DEFFILE= $(_TARGETPLATROOT)\SRC\inc\Kbdhe.def
TARGETNAME=Kbd8042HE
TARGETTYPE=DYNLINK
TARGETDEFNAME=Kbd8042HE
DLLENTRY=DllMain
RELEASETYPE=PLATFORM
WINCEOEM=1
TARGETLIBS=\
$(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
$(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \
WINCETARGETFILE0=$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\$(TARGETDEFNAME).def
SOURCELIBS=\
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\PS2_8042_KbdCommon.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\LayoutManager.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\KeybdIst.lib \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\kbdhe_lib.lib \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\NumPadRmp.lib \
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\InputLang_0408.lib \
SOURCES=\
PDDList.cpp
6.在C:\WINCE600\PUBLIC\COMMON\OAK\INC目錄中拷貝kbdus.def到$(_TARGETPLATROOT)\SRC\INC\目錄之下, 並更名為kbdhe.def,利用記事本將kbdhe.def編輯,將內容修改如下:
IL_00000408
PS2_AT_00000408
*(_TARGETPLATROOT 路徑為C:\WINCE600\PLATFORM\DEVICEEMULATOR)
7.在PB中選擇「Build」-> 「Open release directory in build windows 」將目錄切換到C:\WINCE600\PLATFORM\DEVICEEMULATOR\SRC\DRIVERS\KEYBD 鍵入Build –c 去編輯Keyboard Layout 程式。
8.完成後Keyboard layout檔案會產生在C:\WINCE600\PLATFORM\DEVICEEMULATOR\target\ARMV4I\debug目錄下,請將Kbd8042HE.dll拷貝到C:\WINCE600\PLATFORM\DEVICEEMULATOR\FILES目錄。
9.設定Platform.reg檔案設定希臘鍵盤設定.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\00000408]
"Layout File"="Kbd8042HE.dll"
"Layout Text"="Greek Input Language"
"PS2_AT"="Kbd8042HE.dll"
[HKEY_CURRENT_USER\Keyboard Layout\Preload\2]
@="00000408"
10.設定Platform.bib 加入keyboard layout檔案到Run-time image 之中.
Kbd8042HE.dll $(_FLATRELEASEDIR)\Kbd8042HE.dll NK
11.Rebuild Windows CE Image.
12.利用Windows CE 6.0 模擬器來測試Keyboard Layout功能.
沒有留言:
張貼留言