linux键盘模拟程序,linux下模拟键盘的几种方法
1、使用GTK中的GdkEvent
GdkEvent *event;
event = gdk_event_new (GDK_KEY_PRESS); //按键按下
event->key.send_event = TRUE;
event->key.keyval = GDK_1;
event->key.window = window;
gtk_main_do_event (event);
gdk_event_free (event);
event = gdk_event_new (GDK_KEY_RELEASE); //按键弹起
event->key.send_event = TRUE;
event->key.keyval = GDK_1;
event->key.window = window;
gtk_main_do_event (event);
gdk_event_free (event);
这种方法并不适合所有情况,例如编辑框显示不了字符,按键消息倒是能收到,不知道是不是我的程序有问题,欢迎大家指正。
2、使用Xlib
#include
#include
Display *disp = XOpenDisplay (NULL);
keysym = XK_1;
//True为按下,False为弹起
XTestFakeKeyEvent (disp, XKeysymToKeycode (disp, keysym), True, CurrentTime);
XTestFakeKeyEvent (disp, XKeysymToKeycode (disp, keysym), False, CurrentTime);
XCloseDisplay (disp);
编译的时候要加上-lXtst选项,这种情况依赖于XLib。
3、直接写键盘设备
#include
/* open keyboard */
fd_kb = open ("/dev/input/event0", O_RDWR);
struct input_event event;
event.code = KEY_1; event.type = EV_KEY; event.value = 1; //1表示按下,0表示释放,2表示长按 gettimeofday (&event.time, 0); if (write (fd_kb, &event, sizeof (event)) != sizeof (event)) { printf ("write /dev/input/event0 failed/n"); } event.value = 0; if (write (fd_kb, &event, sizeof (event)) != sizeof (event)) { printf ("write /dev/input/event0 failed/n"); }这种方法是最通用的,不管底层用的是X还是DFB,都可以用,推荐适用这种方法。以上三种方法都在debian下验证通过。
linux键盘模拟程序,linux下模拟键盘的几种方法相关推荐
- Linux下进程通信的八种方法
Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared memory),信号量 ...
- linux系统调用劫持隐藏进程,linux 下隐藏进程的一种方法及遇到的坑
前言 1.本文所用到的工具在 https://github.com/gianlucaborello/libprocesshider 可以下载 2.思路就是利用 LD_PRELOAD 来实现系统函数的劫 ...
- linux删除test文件夹,Linux删除目录下的文件的几种方法
Linux删除目录下的文件的几种方法 删除当前目录下的文件 1.rm -f * #最经典的方法,删除当前目录下的所有类型的文件 2.find . -type f -delete或find . -typ ...
- linux删除目录或文件命令行,Linux删除目录下的文件的10种方法小结
看到了一遍文章,便突发奇想的想起Linux中删除目录下的所有文件的方法:整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.rm -f * #最经典的方法,删除当前目录下的所有类型的文 ...
- linux存储安装教程,在Linux下安装Pngquant的三种方法:从存储库,源代码及使用Cargo安装...
本文介绍在Linux操作系统下安装Pngquant的三种方法,即从存储库.从源代码及使用Cargo安装,可用在Arch Linux.Debian.Ubuntu.Linux Mint.Fedora.op ...
- linux中使用文本工具截取ip 的几种方法
linux中使用文本工具截取ip 的几种方法 1,使用awk工具 [root@mycentos data]# ifconfig ens33 ens33: flags=4163<UP,BROADC ...
- 在Linux中查找和删除重复文件的4种方法
大神教你在Linux中查找和删除重复文件的4种方法 在本教程中,您将学习如何使用rdfind和fdupes命令行工具以及称为DupeGuru和FSlint的GUI工具在Linux中查找和删除重复文件. ...
- linux如何把用户加组内,在Linux中将用户添加到特定组的四种方法
在Linux中将用户添加到特定组的四种方法 Linux组是用于管理Linux中用户帐户的组织单位. 对于Linux系统中的每个用户和组,它都有唯一的数字标识号. 它称为用户ID(UID)和组ID(GI ...
- Java selenium操作下拉滚动条的几种方法
数据采集中,经常遇到动态加载的数据,我们经常使用selenium模拟浏览器操作,需要多次下拉刷新页面才能采集到所有的数据,就此总结了几种selenium操作下拉滚动条的几种方法 我这里演示的是Java ...
- winxp一键锁定计算机,WinXP下锁定计算机的3种方法
WinXP下锁定计算机的3种方法 2009-12-08 04:53:11 脚本之家 这两个按钮的设置方式共有3种: 1.不使用欢迎屏幕(此时亦不能使用快速用户切换). 2.仅使用欢迎屏幕. 3.既使用 ...
最新文章
- zabbix nginx php postgresql,debian10安装zabbix4.2+nginx+postgresql
- 二进制代码查看器Binary Viewer下载教程
- CodeForces - 17E Palisection(回文自动机/Palindrome Series优化dp)
- 解决Establishing SSL connection without servers identity verification is not recommended问题
- CentOS 安装最新版本 Git
- delphi dispose释放内存的方法
- windows 防火墙疑难解答程序_Win8系统设置允许程序通过防火墙的方法
- 微信小程序中rpx与rem单位使用
- 接口测试工具SoapUI(一)安装和破解
- 计算机操作系统-2-处理器管理
- 阿里云商标注册申请智能、顾问和安心区别及选择攻略
- 颠覆传统股票证券市场的可能是ICO代币(TOKEN)
- 数据全生命周期管理,华为FusionData一个方案搞定
- 教程篇(7.0) 03. FortiGate安全 防火墙策略 ❀ Fortinet 网络安全专家 NSE 4
- 篡改计算机网络,基于TCP协议的网络数据实时篡改.doc
- 数据结构学习(考研408)
- Python pygame 坦克大战
- 7月第3周回顾:裁员潮袭卷IT人 雅虎服“软”愿被收购
- C语言 进阶版三子棋小游戏
- 软件测试面试题:优惠券发布后测试场景图和设计?