linux input subsystem虚拟键盘和鼠标
-
2023-05-10 05:19:39
- 来源:未知
-
在手机上看
扫一扫立即进入手机端
1 event device
in /dev/input/event?
cat data from /dev/input/event? the data format is :
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
e.g :
xx xx xx xx yy yy yy yy tt tt cc cc vv vv vv vv
xx is usec
yy is sec
tt is type
cc is key code
vv is value, might be it means keyup or keydown
for mouse event, you can get the same message format
xx, yy is the same as keyboard
tt is EV_REL, it means the value feild is relative distance;
cc is REL_X or REL_Y
vv is the value of relative distance
2 register input_dev
/**************************
for virtual mouse
**/
static int vkm_vmouse_register(void)
{
struct input_dev *vmouse_dev;
vmouse_dev = input_allocate_device();
if (!vmouse_dev)
return -ENOMEM;
vmouse_dev->name = “VMouse “;
vmouse_dev->phys = “xxmouse/input1“;
vmouse_dev->id.bustype = BUS_HOST;
vmouse_dev->id.vendor = 0x0001;
vmouse_dev->id.product = 0x0002;
vmouse_dev->id.version = 0x0100;
vmouse_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL);
vmouse_dev->keybit[BIT_word(BTN_MOUSE)] =
BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_RIGHT);
vmouse_dev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y);
/* error check */
error = input_register_device(vmouse_dev);
if (error) {
input_free_device(vmouse_dev);
return error;
}
}
/**************************
for virtual keyboard
**/
static int vkm_vkbd_register(void)
{
int i, error;
struct input_dev *vkbd_dev;
vkbd_dev = input_allocate_device();
if (!vkbd_dev)
return -ENOMEM;
vkbd_dev->name = “VKBD Keyboard“;
vkbd_dev->phys = “atakbd/input0“;
vkbd_dev->id.bustype = BUS_HOST;
vkbd_dev->id.vendor = 0x0001;
vkbd_dev->id.product = 0x0001;
vkbd_dev->id.version = 0x0100;
vkbd_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
vkbd_dev->keycode = atakbd_keycode;
vkbd_dev->keycodesize = sizeof(unsigned char);
vkbd_dev->keycodemax = ARRAY_SIZE(atakbd_keycode);
for (i = 1; i < 0x72; i++) {
set_bit(atakbd_keycode[i], vkbd_dev->keybit);
}
/* error check */
error = input_register_device(vkbd_dev);
if (error) {
input_free_device(vkbd_dev);
return error;
}
return 0;
}
send keyboard event to input handler like this:
input_report_key(vkbd_dev,KEY_A,0);
input_sync(vkbd_dev);
and send mouse event to input handler like this:
input_report_rel(vmouse_dev, REL_X, 10);
input_report_rel(vmouse_dev, REL_Y, 10);
input_sync(vmouse_dev);
相关资讯
更多游戏推荐
-
恢复桌面图标(DesktopOK32位/64位)
中文|1.1M
-
起凡游戏对战平台+群雄逐鹿完整版
中文|1.67G
-
中泰资管手机版
中文|51.1M
-
易出图CAD批量打印
中文|7.8M
-
GPU-Z识别工具
中文|9.5M
-
少年得到张泉灵阅读课免费版
中文|105.6M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
转转大师PDF虚拟打印机
中文|36.7M
-
超级虚拟打印机FinePrint 11
中文|12M
-
EV虚拟摄像头app
中文|14.7M
-
pdffactory pro虚拟打印机
中文|11.2M
-
创高体育虚拟跑步软件
中文|43.7M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
xb21cn Windows Server 2022微软服务器版操作系统
中文|2.58G
-
宽带连接设置开机自动连接
中文|541KB
-
乐播投屏pc版
中文|49.5M
-
我的世界error422暗网版
中文|14.9M
-
TaskBuilder低代码开发工具
中文|124M
-
手机暴风影音播放器
中文|64.5M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
宽带连接设置开机自动连接
中文|541KB
-
java 6 update 45(JAVA运行环境)
中文|59.2M
-
订货宝订货平台
中文|52.4M
-
猿编程萌新客户端
中文|61.8M
-
qq登录器
中文|1.3M
-
西游记金钱豹表情包
中文|3.6M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
xb21cn Windows Server 2022微软服务器版操作系统
中文|2.58G
-
乐播投屏pc版
中文|49.5M
-
我的世界error422暗网版
中文|14.9M
-
TaskBuilder低代码开发工具
中文|124M
-
手机暴风影音播放器
中文|64.5M
-
3D车神计划手游
中文|23.0M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
宽带连接设置开机自动连接
中文|541KB
-
思科网络技术学院教程第四学期CCNA4广域网技术
中文|67.9M
-
思科网络技术学院CCNA中文教程
中文|62.3M
-
大番薯视频教程下载器
中文|283KB
-
每日瑜伽视频教程全集手机版
中文|66.7M
-
孕妇瑜伽教程
中文|44.1M
-
影视大全官方版最新手机版
中文|62.0M
-
kada故事HD版
中文|233.1M
-
屠龙霸业一刀满屏爆
中文|106M
-
荒野乱斗应用宝版本
中文|289.4M
-
蜡烛人解锁完整版(Candleman)
中文|745.2M
-
塔防之王
中文|36.63MB
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
动联青少儿官方版
中文|107.3M
-
美术宝点评
中文|18.3M
-
写拉松writeathon客户端
中文|12.3M
-
创成汇app
中文|61.8M
-
gps海拔表软件
中文|39.8M
-
cnki全球学术快报客户端pc最新版
中文|92.9M
-
宽带连接设置开机自动连接
中文|541KB
-
java 6 update 45(JAVA运行环境)
中文|59.2M
-
订货宝订货平台
中文|52.4M
-
猿编程萌新客户端
中文|61.8M
-
qq登录器
中文|1.3M
-
西游记金钱豹表情包
中文|3.6M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
音视频剪辑大师
中文|45.2M
-
视频配音软件免费版
中文|26.6M
-
企业萤石云视频监控(萤石商业智居)
中文|59.2M
-
优酷视频独播免费
中文|63.0M
-
腾讯视频播放器电脑版
中文|78.5M
-
剪意视频剪辑
中文|111.9M
-
xb21cn Windows Server 2022微软服务器版操作系统
中文|2.58G
-
音视频剪辑大师
中文|45.2M
-
视频配音软件免费版
中文|26.6M
-
企业萤石云视频监控(萤石商业智居)
中文|59.2M
-
优酷视频独播免费
中文|63.0M
-
腾讯视频播放器电脑版
中文|78.5M
-
国信金点通app
中文|88.5M
-
2345安全卫士电脑版
中文|95.5M
-
360安全浏览器13.1版本
中文|91.4M
-
2345安全卫士增强版PC电脑端(自带完整病毒库)
中文|314.9M
-
eset nod32安全套装
中文|101M
-
辐射安全防护手机版
中文|7.2M
-
国信金点通app
中文|88.5M
-
2345安全卫士电脑版
中文|95.5M
-
360安全浏览器13.1版本
中文|91.4M
-
2345安全卫士增强版PC电脑端(自带完整病毒库)
中文|314.9M
-
eset nod32安全套装
中文|101M
-
辐射安全防护手机版
中文|7.2M
-
zFrontier装备前线官方版
中文|39.7M
-
谷歌浏览器64位正式版(Google Chrome)
中文|88.8M
-
创高体育虚拟跑步软件
中文|43.7M
-
悦动圈跑步最新版
中文|285.6M
-
跑步记录助手app
中文|47.9M
-
跑步和撞击
中文|31.56MB
-
木卫六智能跑步机
中文|59.1M
-
A8体育正式版(热爱加8度软件)
中文|79.1M