Linux-模拟键盘输入

# include <string.h>

# include <stdio.h>

# include<sys/types.h>

# include<sys/stat.h>

# include<fcntl.h>

# include<linux/input.h>

# include<linux/uinput.h>

# include<stdio.h>

# include<sys/time.h>

# include <sys/types.h>

# include <unistd.h>

void simulate_key(int fd, int kval)

 {

     struct input_event event;

     event.type = EV_KEY;

     event.value = 1;

     event.code = kval;

     gettimeofday(&event.time, 0);

     write(fd, &event, sizeof(event)) ;

     event.type = EV_SYN;

     event.code = SYN_REPORT;

     event.value = 0;

     write(fd, &event, sizeof(event));

     memset(&event, 0, sizeof(event));

     gettimeofday(&event.time, NULL);

     event.type = EV_KEY;

     event.code = kval;

     event.value = 0;

     write(fd, &event, sizeof(event));

     event.type = EV_SYN;

     event.code = SYN_REPORT;

     event.value = 0;

     write(fd, &event, sizeof(event));

 }

 void simulate_mouse(int fd)

 {

     struct input_event event;

     memset(&event, 0, sizeof(event));

     gettimeofday(&event.time, NULL);

     event.type = EV_REL;

     event.code = REL_X;

     event.value = 10;

     write(fd, &event, sizeof(event));

     event.type = EV_REL;

     event.code = REL_Y;

     event.value = 10;

     write(fd, &event, sizeof(event));

     event.type = EV_SYN;

     event.code = SYN_REPORT;

     event.value = 0;

     write(fd, &event, sizeof(event));

 }

 int main()

 {

     int fd_kbd;

     int fd_mouse;

     fd_kbd = open("/dev/input/event4", O_RDWR);

     if(fd_kbd <= 0)

     {

         printf("error open keyboard:\n");

         return -1;

     }

     fd_mouse = open("/dev/input/event2", O_RDWR);

     if(fd_mouse <= 0)

     {

         printf("error open mouse\n");

         return -2;

     }

     int i = 0;

     for(i = 0; i< 10; i++)

     {

         simulate_key(fd_kbd, KEY_1 + i);

         simulate_mouse(fd_mouse);

         sleep(1);

     }

     close(fd_kbd);

 } 
时间: 2024-12-18 15:44:26

Linux-模拟键盘输入的相关文章

SendInput模拟键盘输入的问题

SendInput模拟键盘输入的问题 http://www.cnblogs.com/yedaoq/archive/2010/12/30/1922305.html 最近接触到这个函数,因此了解了一下,总结一下列在这. 我了解它的出发点是如何通过它向活动窗口输入字符,这是很多程序都有的功能(我猜Visual Assist X就用了这个功能). 根据MSDN,此函数模拟按键操作,将一些消息插入键盘或鼠标的输入流中,Windows对它进行处理,生成相应的WM_KEYDOWN或WM_KEYUP事件,这些事

用Delphi模拟键盘输入

在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的操作,我们能否通过编制程序来代替手工输入,而用程序来模拟键盘及鼠标的输入呢?答案是肯定的.这主要是通过两个API函数来实现的. 下面以Delphi为例来介绍一下如何实现这两个功能.模拟键盘我们用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数.大家不用担心,在delphi里调用api函数是很方便的事. 先介绍一

VB模拟键盘输入的N种方法

VB模拟键盘输入的N种方法http://bbs.csdn.net/topics/90509805hd378发表于: 2006-12-24 14:35:39用VB模拟键盘事件的N种方法 键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作.但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件.那么我们怎样才能用VB来写一个程

Android模拟键盘输入功能的实现

在做关于输入框的操作指引时,用动态的输入效果比用静态的图片指示效果会好很多,本文结合最近需要实现的一个搜索输入操作指引的功能介绍一下android平台模拟键盘输入的实现. 在android上不知道怎么录制gif的动态图,直接截图看一下效果吧,具体看demo就行啦. 实现起来很简单,开一个线程,通过sleep控制输入字符的间隔时间,封装一个模拟键盘输入的方法,最终代码是这样子的: public class TypeInActivity extends BaseActivity { @Overrid

【转】C# winform 加载网页 模拟键盘输入自动接入访问网络

[转]C# winform 加载网页 模拟键盘输入自动接入访问网络 声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html 转载请注明出处. 背景: 由于所在办公室网络限制,笔者每天都使用网络都要先连接无线网.如下图,输入授权用户信息登录后才能使用WIFI. 丧心病狂的是该网页Cookie 过期时间为24小时,所以每天重复以下动作:打开浏览器 -> 手动输入 工号密码.密码 -> 点击"登录"按钮.

模拟键盘输入

微软有个软键盘,可以通过命令行输入osk调出来. 有时候我们想自己模拟几个键盘按键,怎么办?其实Win32 API中有一个keybd_event可以模拟键盘按键的输入.以C#语言为例. 首先引用namesapce,并导入API. using System.Runtime.InteropServices; [DllImport("user32.dll")]private static extern void keybd_event(byte bVk, byte bScan, int dw

C# winform 模拟键盘输入自动接入访问网络

声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html 转载请注明出处. 背景: 由于所在办公室网络限制,笔者每天都使用网络都要先连接无线网.如下图,输入授权用户信息登录后才能使用WIFI. 丧心病狂的是该网页Cookie 过期时间为24小时,所以每天重复以下动作:打开浏览器 -> 手动输入 工号密码.密码 -> 点击"登录"按钮. 作为一个懒出天际的程序员,逃避这种重复劳动是必须滴~~ 解决方案:

vc+如何实现模拟键盘输入,自动输入文字(创世纪篇)

键盘对于每个操作电脑的人员来说是最熟悉不过的了.键盘上的按键可分为两类: 按下后会在电脑的输入窗口上出现对应字符的按键,如字母键和数字键等,我们称之为字符键:按下后虽然看不到字符但会产生控制作用的按键,如回车键.光标键等,我们称之为控制键. 对于vc+程序员来说,键盘上的每个按键都一样,无非是不同按键产生的键盘扫描码不同.在不同的操作系统下,键盘扫描码常常被转换为不同的编码以方便应用程序调用,比如在Windows系统下的ASCII码,在Windows系统下的虚拟键盘码等等. 有时我们希望能以程序

远程控制篇:用Delphi模拟键盘输入/鼠标点击

模拟键盘我们用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数. Keybd_event函数能触发一个按键事件,也就是会产生一个WM_KEYDOWN或WM_KEYUP消息,一般用这两个消息来模拟一 次按键(按键的过程是:按下,然后弹起),但是没有直接用这个函数方便.Keybd_event共有四个参数:第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab;第二个参数为扫描码,一般不用设置,用0代替就行;第三个参数为选项标志,如果为keydow

通过selenium模拟键盘输入链接整理

Press Enter key in Selenium script:http://my.oschina.net/u/855532/admin/new-blog selenium模拟键盘:http://blog.sina.com.cn/s/blog_670bfea2010197qh.html Selenium WebDriver 中鼠标和键盘事件分析及扩展:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/