展讯平台消息传递之键盘消息

本文介绍了在展讯平台上,键盘消息从驱动层到应用程序层的传递过程。通过中断注册回调函数,当键盘按键触发中断时,中断处理函数发送消息到上层。消息经过MMI的MMK_MSG.C中的MMK_DispatchExtSig函数处理,转化为MMI消息,并通过MMIDEFAULT_ConvertKeyCode函数将虚拟键盘值映射为实际物理键盘值,完成驱动到应用的键盘转换。
摘要由CSDN通过智能技术生成

    工作已经马上四个月了!该动动笔祭奠祭奠这些时光了~

    这两天有个新案子,在以前的手机基础上增加了三个侧键,要做成音乐手机的上一曲,下一曲,暂停键。我的工作倒是很简单,找几个意思差不多的虚拟键盘对应到相应的文件就OK了,但是上层是怎么把消息对应到正确的按键呢?

    在KEYPAD.C中有一个专为键盘而建立的进程KPDSVR,并规定了THREAD_ENTRY(KPDSVR)入口,在进程的初始化中,我们马上看到了注册进程以及进程的一些初始化,在初始化函数Init()中,除去常规的那些出错处理,做的最主要的一件事就是HAL_RegCallback(TB_KPD_INT, KPDSVR_Callback);向内核注册了一个CALLBACK函数KPDSVR_Callback,这个函数其实就是我们常见的中断处理函数,通过某种机制,在有键盘按下会发生中断(注意,我们现在用的是中断而不是轮询),中断后就由这个函数只做了一件事,向上面发送一个消息,告诉KPDSVR这个进程有哪个键盘,做了什么动作(不知道这可不可以理解为中断的上半部)。

    再往下看,竟然是个for(;;),情何以堪,和UC差不多?在for里面的第一句key_sig_ptr = (KPDSVR_SIG_T *)SCI_GetSignal(KPDSVR);原来中断里面的消息在这里被捕获了,在循环一遍后如果没有新的按键按下即消息队列中没有新的消息时

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值