您现在的位置: 论文网 >> 计算机论文 >> 计算机应用论文 >> 基于Linux内核的键盘模拟实现论文

基于Linux内核的键盘模拟实现

作者:未知
出处:论文网
时间:2007-05-15

附图     键盘驱动原理图


4.1  handle_scancode函数
handle_scancode函数是键盘驱动程序中的一个入口函数(参见文件/usr/src/linux/drives/char/keyboard.c):
void handle_scancode(unsigned char scancode, int down);
这里通过替换原始的handle_scancode()函数来实现纪录所有的scancode。即将原始的值保存,把新的值注册进去,从而实现所需要的功能,最后再调用回到原始值的情况下。当此新的功能函数完成后,我们就可以记录下键盘上的正确的击键行为了(其中可以包括一些特殊的key,如ctrl, alt,shift,print screen等等)。
4.2  put_queue函数
handle_scancode()函数会调用put_queue函数,用来将字符放入tty_queue。
put_queue函数在内核中定义如下:
void put_queue(int ch)
{
wake_up(&keypress_wait);
if (tty) {
tty_insert_flip_char(tty, ch, 0);
con_schedule_flip(tty);    }}
4.3  receive_buf函数
底层tty驱动调用receive_buf()这个函数用来发送硬件设备接收处理的字符。参见/usr/src/linux/drivers/char/n_tty.c:
static void n_tty_receive_buf(struct tty_struct *tty, const
unsigned char *cp, char *fp, int count)
参数cp是一个指向设备接收的输入字符的buffer的指针。参数fp是一个指向一个标记字节指针的指针。在具体的实现中,先保存原始的tty receive_buf()函数,然后重置ldisc.receive_buf到自定义的new_receive_buf()函数来记录用户的输入。
例如:要记录在终端tty1设备上的输入。
int fd = open("/dev/tty1", O_RDONLY, 0);
struct file *file = fget(fd);
struct tty_struct *tty = file->private_data;
//保存原始的receive_buf()函数
old_receive_buf = tty->ldisc.receive_buf;
//替换成新的new_receive_buf函数
tty->ldisc.receive_buf = new_receive_buf;   
//新的new_receive_buf函数
void new_receive_buf(struct tty_struct *tty, const unsigned char *cp, char *fp, int count)
{   
logging(tty, cp, count);    
//纪录用户击键
/* 调用回原来的receive_buf */
(*old_receive_buf)(tty, cp, fp, count);
}
4.4  tty_read函数
当一个进程需要通过sys_read()函数来读取一个tty终端的输入字符时,tty_read函数就会被调用。参见文件/usr/src/linux/drives/char/tty_io.c:
static ssize_t tty_read(struct file * file, char * buf, size_t count,
loff_t *ppos)

5  结束语
目前,利用勾子函数实现基于Linux内核的键盘模拟的这种方法使用非常灵活,同时也可以跨平台进行移植,可通过tty和pts来记录下本地和远程会话的所有击键动作,并且也支持一些特殊的按键。当然,要使键盘模拟更灵活,下一步还需要更多的改进,例如增加多种不同日志记录模式的支持等。

上一页 [1] [2]

论文搜索
关键字:Linux 内核 键盘 模拟实现
最新计算机应用论文
基于网络信息安全技术管理的计算机应用研究
浅析人工智能体系建设
抖音短视频平台视频推荐模式研究
应用电子技术中可编程控制器的应用探讨
用友NC信息系统的实施应用实践研究
基于校园一卡通数据系统的学生行为分析研究
云环境下基于蚁群算法的动态容错技术研究
自拍图像中的记忆痕迹
抖音短视频用户使用动机研究
基于创新扩散理论的Vlog传播
热门计算机应用论文
学生成绩管理系统的设计与实现
浅析计算机病毒及防范的措施
学籍管理系统软件
对计算科学与计算机发展的思考
计算机应用型人才的培养模式研究
物资管理信息系统开发
计算机信息管理在第三方物流中的应用
嵌入式系统数字图像采集接口电路设计
基于B/S体系结构开发应用系统
项目管理在软件中的应用