当前位置: 技术问答>linux和unix
请教达人:如何不改内核在linux的应用程序层实现键盘拦截功能。
来源: 互联网 发布时间:2016-09-01
本文导语: 现已有一个linux下的基于FB的图形程序(无源码),我的程序是配合这个程序工作的。 现需要拦截某个系统按键,以激活我的程序,操作完成后再把输入焦点还给原FB的图形程序。 我尝试把8259的IMR中键盘中断关掉,...
现已有一个linux下的基于FB的图形程序(无源码),我的程序是配合这个程序工作的。
现需要拦截某个系统按键,以激活我的程序,操作完成后再把输入焦点还给原FB的图形程序。
我尝试把8259的IMR中键盘中断关掉,然后用我的程序去轮询访问8042取按键再向linux模拟按键。但发现键盘中断怎么也关不掉。
但如果把IMR的第0位实时时钟关掉,系统会死,说明代码是起作用的。
google了一天,也没有一个好的方案。我对linux不熟,请各位老师不吝赐教,谢谢~~
现需要拦截某个系统按键,以激活我的程序,操作完成后再把输入焦点还给原FB的图形程序。
我尝试把8259的IMR中键盘中断关掉,然后用我的程序去轮询访问8042取按键再向linux模拟按键。但发现键盘中断怎么也关不掉。
但如果把IMR的第0位实时时钟关掉,系统会死,说明代码是起作用的。
google了一天,也没有一个好的方案。我对linux不熟,请各位老师不吝赐教,谢谢~~
|
这个应该是不需要修改内核的。
键盘驱动部分做好之后会有一个键盘的设备,
打开该设备即可获取键盘输入。
你是想在原有的应用程序之前拦截到键盘消息,但又不能让FB程序获取键盘事件。
我的想法是这样的,在你的程序里面用独占的方式打开键盘设备(这个我也不确定是否可以,是否需要驱动支持??),
系统起来之后你的程序便首先运行,独占键盘设备,等你的程序启动完之后,再释放键盘设备,
然后再去运行FB程序,以使FB程序能获取顺利打开键盘设备。
以上只是我的个人想法,不知道是否正确,欢迎指正。
键盘驱动部分做好之后会有一个键盘的设备,
打开该设备即可获取键盘输入。
你是想在原有的应用程序之前拦截到键盘消息,但又不能让FB程序获取键盘事件。
我的想法是这样的,在你的程序里面用独占的方式打开键盘设备(这个我也不确定是否可以,是否需要驱动支持??),
系统起来之后你的程序便首先运行,独占键盘设备,等你的程序启动完之后,再释放键盘设备,
然后再去运行FB程序,以使FB程序能获取顺利打开键盘设备。
以上只是我的个人想法,不知道是否正确,欢迎指正。
|
虽然不懂看看这个
http://hi.baidu.com/%D7%D3%B7%E1/blog/item/d48574a82c0ee0b3ca130cdd.html
http://hi.baidu.com/%D7%D3%B7%E1/blog/item/d48574a82c0ee0b3ca130cdd.html
|
问题的关健是你的程序是守护进程。没占有终端的。所以无法使用采用改动tty的属性来获取按健。估计从用户层解决这个问题比较难了……………………