linux下如何编写模拟用户键盘操作的程序?

zmjdx 2008-05-15 05:18:14
假设当前系统已经运行某个程序,它接收用户的某些键盘操作,执行相应的功能.现在我想写一个程序来模拟这些键盘操作,来控制前面程序的运行.请各位给予提示,有示例代码最好:)谢谢!
...全文
146 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmjdx 2008-05-26
  • 打赏
  • 举报
回复
谢谢大家,看来要学的东西还真多.
cheliver 2008-05-22
  • 打赏
  • 举报
回复
shell 的here document应该可以实现

ftp -i -n ip<<here
user abc abc
put aaa
here
martinbj2008 2008-05-16
  • 打赏
  • 举报
回复
写一个内核模块,模拟input设备, 打开其在/dev下对应的设备节点, 然后向里面写数据,就可以。
cceczjxy 2008-05-16
  • 打赏
  • 举报
回复
如果是一般的终端程序,通过管道及输入重定向,自己构造字符也能实现简单的模拟功能。
如果是希望能真实的模拟键盘,那学习操作系统原理,内核编程,驱动编写等等,如果你能顺利的自己写个
键盘驱动程序的话,再会过头来看,会发现这个问题就不是问题了。
zmjdx 2008-05-16
  • 打赏
  • 举报
回复
楼上,你说的比较基础是什么?
chenzhixin 2008-05-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/chenzhixin/archive/2008/03/12/2173530.aspx

//其中0表示释放,1按键按下,2表示一直按下
//0 for EV_KEY for release, 1 for keypress and 2 for autorepeat.
void simulate_key(int fd,int value)
{
struct input_event event;

event.type = EV_KEY;
//event.code = KEY_0;//要模拟成什么按键
event.value = value;//是按下还是释放按键或者重复
gettimeofday(&event.time,0);

if(write(fd,&event,sizeof(event)) < 0){
dprintk("simulate key error~~~\n");
return ;
}
}
过客猫2022 2008-05-16
  • 打赏
  • 举报
回复
关注
yiyakiller 2008-05-16
  • 打赏
  • 举报
回复
标准输入文件描述符是0,也就是说,是不是可以考虑用 select(0+1, &rfds, NULL, NULL, &tv);来监测描述符0,是否有键盘动作
x86 2008-05-16
  • 打赏
  • 举报
回复
也许expect能满足你的需求
cceczjxy 2008-05-15
  • 打赏
  • 举报
回复
这个比较麻烦,如果仅仅想玩玩,那网上有这样的的工具例子,如果想深入,那就从比较基础的开始学吧。
dxing_1983 2008-05-15
  • 打赏
  • 举报
回复
可以参考MurphyPinyin 的源代码
网上有下的

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧