代码改变世界

3. TextInput –Feature phone

2012-11-05 10:36  lee++  阅读(237)  评论(0)    收藏  举报

1. SapWidgetFtInputRom.c 定义常量等宏

    SapWidgetFtInput.h/.c 是输入法给App调用的接口

    SapWidgetTextInput –> 对外App的接口     TextInputWidget 外部统一接口

    FtInput –> 对内的

    模式:笔画、BPMF(台湾输入法)、英语、拼音、韩语(Hangul)、符号

2. T9  是源文件;XT9 是库

3. Hw: 手写  HG: 韩文  EG: 英文(联想)   AB: 字母(单字母输入)   Sb: 滚动条  SB: 符号  Kp: 全键盘

    Keyboard: 定义区域   Keypad: 真正处理的代码

4. 窗口句柄 + widgetId –> SapWidgetTextInput

5. T9.c  XT9.c  T9Ex1.c  FtInput.c   FtKeyInputEx.c    Ti.c  Udb.c

6. App –> SapWidgetFtInput –> SapWidgetFtInputEx –> SapWidgetFtInputPY –> T9  T9Ex1–> T9库

7. Ti 管理编辑界面(文本显示)

   Ti 会调SapWidgetFtInput 的draw 函数画文本

    Udb:也是调那几种输入法 <-> Ex

   Exit : 内存释放

    PopupS: 输入非法字符

    ExS:  ****

    Rom.c  -> Enter,Exit,Handler

8. 输入单个字母 AB.c

  -> FtKey Input StartTimer   有timerID

  Ex.c   App将某一个Widget激活,输入法收到ActiveEvent,将输入法由standby –> execute 状态

添加单词:Udb状态 

添加新短语

9. 所有事件都必须经过SapWidgetFtInput.c 的SapWidgetHandlerFtInput函数

    A. 确定App是否将事件给到输入法,就在此打断点

   B. 根据输入法状态进入相应状态的Handler

10.SapWidgetFtInput  CreateDefaultInput

11.XT9 支持Qwerty 键盘输入

    CBP8.0 用的是XT9

    sendEvent2App 是同步,需等App的返回,才继续执行

    PostEvent2App 是异步

  PostEventTop2App 更优先得到处理

12. FtKeyInputEx.c  KeyHandler 是按键Handler 

                                各种输入法的Handler,再事件分发到各输入法

        IFtKeyInputPYHandlerEvent –> PY 的主Handler

                                                    -》PY 里还有一些子状态的Handler

    库文件位置 2_SapMid /Cai /T9

    PY 回调Ex的PYBrf 的CM(ChangeMode)   Ct:Context control

    ModeSwitch

13. _FeatureTextInputNewKeypadConcept 主要是两个

     (1)long press # 号键 可以选择 PY/STR、Eng/ENG/eng、ABC/Abc/abc

     (2)长按* 号键,弹出writing options 框(根据当前不同模式,有不同的选项菜单)

14. Feature_Hangul 韩文

15. 输入法为Active状态,输入法先收到Event,如果输入法不处理,再传给App,App收到事件后,对事件做处理,Deactive 一个框,Active下一个框

16. PY:拼音 stroke:笔画  EG:英语  NB:数字(NS)  AB:字母  HG:朝鲜文  SB:符号 SS:笔画  NA:未定义  Iniword:Indonesia word  Decimal:十进制

handwriting  Keypad:键盘  keyboard

#:Pound    *:star     返回:sto   ;:semicolon     BPMF:注音   coordinate:坐标

17. SapWidgetInputModeType = SapWidgetFtInputModeType

_eTextInputModeNone = _eFtInputModeNA;

ModePinYin= ModePY  .....

InputType: 手写,键盘,虚拟键盘

InputMode: 拼音,英语,数字....

18. 每个控件都有大量的属性,事件和方法,供程序人员使用

生命周期四个状态:standby 非激活,execute: 执行,UDB:添加单词,exit:退出

每个状态都有CT/TI 子控件

ct:主管控制 Ti:专职显示

Ct 和 Ti 分别有各自的一套数据结构和事件处理函数,有一套各自的事件处理流程

每个状态由enter/handler/exit 组成(exit除外)

enter:状态入口函数

handler: 状态事件处理函数

exit: 状态出口函数

 

19.控件的三项主要内容:属性,事件和方法

FtInputStandbyEnter ,Exit,Handler

FtKeyInputExEnter,Exit,Handler

FtKeyInputExUdbEnter,Exit,Handler

FtInputExitProc

widgetFtInputRom.c ->sFtInputStateData() 

20. SB

SapWidgetHandlerFtInput ->FtKeyInputExHandler -> FtKeyInputExKeyHandler ->FtKeyInputExEGKeyHandler -> FtInputSendEvent -> IFtKeyInputEGHandlerEvent -> FtKeyInputEGHandlerKeyEvents -> FtKeyInputExEGBrf -> FtKeyInputExCtInit -> FtKeyInputExSBInit