目前在看键盘驱动,不过其中有几个地方看的不太明白
希望各位大师帮忙解答一下:
1.在中断处理线程中irq = IRQ_KEYPAD;查了一下#define IRQ_KEYPAD 32,此处是系统规定好的,还是?另外就是这个IRQ_KEYPAD是如何和物理上实际的中断对应起来的?键盘中断是单独的一个中断,还是用的某一个普通的外部中断?
2.键盘的各个键值是怎么传给应用层的?怎么实现的哪个键对应的哪个值啊?
我大致想了一下过程不知道对不对,我认识是首先有按键按下就会产生中断,之后中断处理程序中,判断具体是哪个键被按下了,把这个键对应的键值,发给了应用程序。不知道我的想法对不对,我也没在程序中找到用哪个函数往上发的键值,还请各位大师帮忙讲解。
3.如果我想通过按某个键,实现对键盘的锁定,之后再按那个键对键盘进行解锁,或是更复杂点像目前有的手机那样通过组合键实现,该如何做?
4.再借此处问个关于触摸屏的问题,如何实现按某个键实现对触摸屏的锁定啊?都有什么方法,那种方法比较好?
5 个解决方案
#1
呵呵,自己顶一下
问题太简单了吗?
问题太简单了吗?
#2
mark一下
#3
1。键盘有专门的中断,
2、最终调用CALLBACK函数将参数传回给系统,应用程序获取KEYDOWN消息,
// Finally! Send the key down.
(*v_pfnKeybdEventCallback)(vkDown|vkOther, KeyStateFlags);
4、
1、在按键驱动跟TP驱动里面创建一个同名事件,
2、在按键的KEYBDMDD中获取锁屏按键是否按下, 如果按下则发锁屏事件给TP驱动,
3、TP驱动中创建一个线程专门等待按键驱动发出来的锁屏事件,收到锁屏事件后,调用。
DdsiTouchPanelPowerHandler(BOOL bOff)
{
RETAILMSG(TS_DBGON, (TEXT("::: DdsiTouchPanelPowerHandler()\r\n")));
if (bOff)
{
TSP_PowerOff();
}
else
{
TSP_PowerOn();
}
}
2、最终调用CALLBACK函数将参数传回给系统,应用程序获取KEYDOWN消息,
// Finally! Send the key down.
(*v_pfnKeybdEventCallback)(vkDown|vkOther, KeyStateFlags);
4、
1、在按键驱动跟TP驱动里面创建一个同名事件,
2、在按键的KEYBDMDD中获取锁屏按键是否按下, 如果按下则发锁屏事件给TP驱动,
3、TP驱动中创建一个线程专门等待按键驱动发出来的锁屏事件,收到锁屏事件后,调用。
DdsiTouchPanelPowerHandler(BOOL bOff)
{
RETAILMSG(TS_DBGON, (TEXT("::: DdsiTouchPanelPowerHandler()\r\n")));
if (bOff)
{
TSP_PowerOff();
}
else
{
TSP_PowerOn();
}
}
#4
把硬件原理图贴出来看看。
#5
1、键盘有一个固定的中断,可以通过寄存器配置关掉它
2、往上传键值可以用 v_pfnKeybdEvent()也可以用keybd_event()
3、锁键盘可以通过不往上发键值的方式
4、锁触屏可以关触屏中断
2、往上传键值可以用 v_pfnKeybdEvent()也可以用keybd_event()
3、锁键盘可以通过不往上发键值的方式
4、锁触屏可以关触屏中断
#1
呵呵,自己顶一下
问题太简单了吗?
问题太简单了吗?
#2
mark一下
#3
1。键盘有专门的中断,
2、最终调用CALLBACK函数将参数传回给系统,应用程序获取KEYDOWN消息,
// Finally! Send the key down.
(*v_pfnKeybdEventCallback)(vkDown|vkOther, KeyStateFlags);
4、
1、在按键驱动跟TP驱动里面创建一个同名事件,
2、在按键的KEYBDMDD中获取锁屏按键是否按下, 如果按下则发锁屏事件给TP驱动,
3、TP驱动中创建一个线程专门等待按键驱动发出来的锁屏事件,收到锁屏事件后,调用。
DdsiTouchPanelPowerHandler(BOOL bOff)
{
RETAILMSG(TS_DBGON, (TEXT("::: DdsiTouchPanelPowerHandler()\r\n")));
if (bOff)
{
TSP_PowerOff();
}
else
{
TSP_PowerOn();
}
}
2、最终调用CALLBACK函数将参数传回给系统,应用程序获取KEYDOWN消息,
// Finally! Send the key down.
(*v_pfnKeybdEventCallback)(vkDown|vkOther, KeyStateFlags);
4、
1、在按键驱动跟TP驱动里面创建一个同名事件,
2、在按键的KEYBDMDD中获取锁屏按键是否按下, 如果按下则发锁屏事件给TP驱动,
3、TP驱动中创建一个线程专门等待按键驱动发出来的锁屏事件,收到锁屏事件后,调用。
DdsiTouchPanelPowerHandler(BOOL bOff)
{
RETAILMSG(TS_DBGON, (TEXT("::: DdsiTouchPanelPowerHandler()\r\n")));
if (bOff)
{
TSP_PowerOff();
}
else
{
TSP_PowerOn();
}
}
#4
把硬件原理图贴出来看看。
#5
1、键盘有一个固定的中断,可以通过寄存器配置关掉它
2、往上传键值可以用 v_pfnKeybdEvent()也可以用keybd_event()
3、锁键盘可以通过不往上发键值的方式
4、锁触屏可以关触屏中断
2、往上传键值可以用 v_pfnKeybdEvent()也可以用keybd_event()
3、锁键盘可以通过不往上发键值的方式
4、锁触屏可以关触屏中断