当前位置: 技术问答>linux和unix
在keyboard.c的如下代码处修改下是不是就可以捕获每个按键了?
来源: 互联网 发布时间:2016-08-16
本文导语: 2.6.31内核,drivers/char/keyboard.c 在如下注释处追加类似echo的语句将value追加到磁盘某文件中是否就可以记录每个键值? 我是新手= =,欢迎各位拍砖,感觉keyboard里面东西很杂,尤其keycode处理函数,里面细节部分太多...
2.6.31内核,drivers/char/keyboard.c
在如下注释处追加类似echo的语句将value追加到磁盘某文件中是否就可以记录每个键值?
我是新手= =,欢迎各位拍砖,感觉keyboard里面东西很杂,尤其keycode处理函数,里面细节部分太多了,不想入门就看太仔细,梳理了结构后觉得要捕获键值就得在这里,不管是调用kbd_rawcode还是kbd_keycode,到最后基本都是把value原封不动地put_queue了(除了大于128时在keycode里有个分解再移位的操作),所以直接在这里把value记录到磁盘的一个文件上,应该就可以了吧?
以上推测同时还建立在每次重新启动的时候系统都会用源码重新编译一次驱动然后加载的假设上,不然修改这个应该也没用。。。。
额,说完了,等学长们指点了~
1313static void kbd_event(struct input_handle *handle, unsigned int event_type,
1314 unsigned int event_code, int value)
1315{
1316 /* We are called with interrupts disabled, just take the lock */
1317 spin_lock(&kbd_event_lock);
1318
1319 if (event_type == EV_MSC && event_code == MSC_RAW && HW_RAW(handle->dev))
1320 kbd_rawcode(value);
1321 if (event_type == EV_KEY)
1322 kbd_keycode(event_code, value, HW_RAW(handle->dev));
1323
1324 spin_unlock(&kbd_event_lock);
1325//======================在这里用echo将value写入磁盘某文件中?=============================
1326 tasklet_schedule(&keyboard_tasklet);
1327 do_poke_blanked_console = 1;
1328 schedule_console_callback();
1329}
在如下注释处追加类似echo的语句将value追加到磁盘某文件中是否就可以记录每个键值?
我是新手= =,欢迎各位拍砖,感觉keyboard里面东西很杂,尤其keycode处理函数,里面细节部分太多了,不想入门就看太仔细,梳理了结构后觉得要捕获键值就得在这里,不管是调用kbd_rawcode还是kbd_keycode,到最后基本都是把value原封不动地put_queue了(除了大于128时在keycode里有个分解再移位的操作),所以直接在这里把value记录到磁盘的一个文件上,应该就可以了吧?
以上推测同时还建立在每次重新启动的时候系统都会用源码重新编译一次驱动然后加载的假设上,不然修改这个应该也没用。。。。
额,说完了,等学长们指点了~
1313static void kbd_event(struct input_handle *handle, unsigned int event_type,
1314 unsigned int event_code, int value)
1315{
1316 /* We are called with interrupts disabled, just take the lock */
1317 spin_lock(&kbd_event_lock);
1318
1319 if (event_type == EV_MSC && event_code == MSC_RAW && HW_RAW(handle->dev))
1320 kbd_rawcode(value);
1321 if (event_type == EV_KEY)
1322 kbd_keycode(event_code, value, HW_RAW(handle->dev));
1323
1324 spin_unlock(&kbd_event_lock);
1325//======================在这里用echo将value写入磁盘某文件中?=============================
1326 tasklet_schedule(&keyboard_tasklet);
1327 do_poke_blanked_console = 1;
1328 schedule_console_callback();
1329}
|
这里你要用到struct file *fp=filp_open 等函数进行操作文件
echo 你试过?
echo 你试过?
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。