手机按键的一些处理iCode iScanCode
symbian手机的按键处理还是有一些情况:
1.OfferKeyEventL( const TKeyEvent& aKeyEvent,
TEventCode aEventCode )
这个是截获键盘处理事件的方法,aKeyEvent提供iCode,iScanCode
TInt isCode = aKeyEvent.iScanCode;
TInt keyCode = aKeyEvent.iCode;
TEventCode 提供的处理按键的类型:EEventKey,EEventKeyUp,EEventKeyDown
TKeyResponse CAknExListSettingContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
{
if ( aType != EEventKey ) // aType的值可以是EEventKey,EEventKeyUp,EEventKeyDown,一般事件不需要处理这些,因为EEventKeyDown都是游戏里面用到,比方说按下去不动发射什么。。。
{
return EKeyWasNotConsumed;
}TChar charCode(aKeyEvent.iCode);switch ( charCode ) // The code of key event is...
{
case EKeyLeftArrow: // Left key. 对照表在epoc32\include\E32KEYS.H ,carbide里面可以找的到
case EKeyRightArrow: // Right Key.
// 相关处理
break;
default:
{
break;
}}d
return EKeyWasConsumed;
}
——————–分隔线—————————
标题: 带完整键盘的S60第三版设备上的按键映射
KIS000351
设备, 软件 版本: S60 3rd Edition
说明:
在一些S60第三版手机上有完整的键盘,其中一些键值只有通过FEP模式下编辑框才能获得
创建日期: July 7, 2006
详细描述:
在Nokia E61以及E70等带全键盘的机器上运行的程序时,如果要捕捉CCoeControl派生类下的按键事件时,在FEP模式下的编辑框中是无法获取同样键值的(通过TKeyEvent::iCode)。
这是因为QWERTY键盘的映射是依赖于当前的语言和输入模式的。例如,在Nokia E61上,CCoeControl派生类在数字键盘被按下时总是获得1,2,3。。。。而只有在FEP模式下的编辑框中(如CEikEdwin)它才能获取字母键”r”,”t”,。。。等。
注意scan codes(TKeyEvent::iScanCode)是不会受当前语言或输入模式影响的。
案例重现:
解决方案:
应用程序在处理文本输入时,应该使用表示准的Avkon编辑框控件。
————————————————–分隔线————————-
iScanCode保存的是键被按下或弹起的值,iCode保存的是一次完整按键事件对应的值.
来自http://discussion.forum.nokia.com/forum/showthread.php?p=434118不解何意
没有评论▼