门户网站如何制作,开发工具都有哪些,番禺区大石做网站,中文网站建设模板下载(꒪ꇴ꒪ ),hello我是祐言博客主页#xff1a;C语言基础,Linux基础,软件配置领域博主#x1f30d;快上#x1f698;#xff0c;一起学习#xff01;送给读者的一句鸡汤#x1f914;#xff1a;集中起来的意志可以击穿顽石!作者水平很有限#xff0c;如果发现错误#x…(꒪ꇴ꒪ ),hello我是祐言博客主页C语言基础,Linux基础,软件配置领域博主快上一起学习送给读者的一句鸡汤集中起来的意志可以击穿顽石!作者水平很有限如果发现错误可在评论区指正感谢 Linux输入子系统是内核中的一个重要组成部分负责处理和管理输入设备的驱动和事件。它允许用户空间应用程序与输入设备进行交互从而实现用户与计算机之间的交互和控制。 一、设备驱动 输入子系统提供了与输入设备通信的驱动程序。这些驱动程序负责与硬件设备进行交互接收输入事件并将其传递给输入子系统处理。例如当用户按下键盘上的一个按键键盘的硬件驱动程序会生成一个表示该按键事件的数据然后将其传递给输入子系统。
struct input_dev *input_dev;
input_dev input_allocate_device();
// set up input_dev details
input_dev-name my_input;
input_dev-id.bustype BUS_HOST;
// register input device
if (input_register_device(input_dev))printk(KERN_ERR Failed to register input device\n);上述代码示例中首先分配了一个输入设备的内存空间然后设置输入设备的相关属性如设备名和设备类型。最后用input_register_device()函数将设备注册到输入子系统。
二、输入事件处理 输入子系统接收来自驱动程序的输入事件这些事件可以是按键、鼠标移动、点击、触摸等。输入子系统将这些事件进行解析和处理转换为通用的输入事件数据格式供用户空间应用程序使用。
// read input event
struct input_event ev;
int fd open(/dev/input/event0, O_RDONLY);
read(fd, ev, sizeof(struct input_event));
printf(Event: time %ld.%06ld, type %d , code %d , value %d\n, ev.time.tv_sec, ev.time.tv_usec, ev.type, ev.code, ev.value);
close(fd);上述代码示例中首先打开输入设备文件然后读取输入事件。最后输出输入事件的时间、类型、代码和值。
三、输入设备文件 在Linux系统中每个输入设备都会映射为一个特定的文件通常位于/dev/input目录下。用户空间应用程序可以通过读取这些文件来获取输入事件。
ls /dev/input你可以通过运行上述命令列出你的Linux系统中的所有输入设备文件。 其中 event0代表触摸屏其余的暂时用不到如果你想打开触摸屏那么下面是一个示例代码
#include stdio.h
#include stdlib.h
#include errno.h
#include fcntl.h
#include unistd.h
#include linux/input.h#define TOUCH_DEV /dev/input/event0int main(int argc, char *argv[])
{// 1. 打开触摸屏设备int touch_fd open(TOUCH_DEV, O_RDONLY);if (touch_fd 0){perror(open touch fail);exit(errno);}// 2. 读取输入设备产生的信息struct input_event ev; // 定义输入事件结构体变量int x 0, y 0;while (1){read(touch_fd, ev, sizeof(ev)); // 读取输入事件产生的信息存储到ev结构体中if (ev.type EV_ABS) // 判定是否是绝对事件{if (ev.code ABS_X) // X轴事件x ev.value * 800 / 1024; // 事件的值转换为屏幕坐标if (ev.code ABS_Y) // Y轴事件y ev.value * 480 / 600; // 事件的值转换为屏幕坐标}else if (ev.type EV_KEY ev.code BTN_TOUCH) // 是否是一个键盘事件BTN_TOUCH表示按压按下动作{if (ev.value 0) // 默认为0如果非0说明屏幕有按下的操作printf(松开\n);elseprintf(按下\n);}printf((%d, %d)\n, x, y); // 打印触摸屏坐标if (x 400)printf(屏幕右半边\n);elseprintf(屏幕左半边\n);}// 关闭触摸屏设备文件close(touch_fd);return 0;
}四、应用程序接口 输入子系统提供了一组API供用户空间应用程序使用使得应用程序可以监听输入设备、读取输入事件、以及对输入事件进行相应的处理。 示例
// example of using input subsystem API
#include linux/input.h
int fd open(/dev/input/event0, O_RDONLY);
struct input_event ev;
while (1) {read(fd, ev, sizeof(struct input_event));if (ev.type EV_KEY ev.value 0 ev.value 2)printf((%ld.%06ld) key %d %s\n, ev.time.tv_sec, ev.time.tv_usec, ev.code, (ev.value 0) ? release : ((ev.value 1) ? press : auto repeat));
}
close(fd);这个示例中应用程序通过输入子系统API监听键盘事件并输出键盘按下、释放和自动重复的事件。
五、总结 通过输入子系统Linux系统可以支持多种类型的输入设备包括键盘、鼠标、触摸屏、游戏手柄等为用户提供了灵活、统一的输入体验。输入子系统的设计使得用户可以方便地开发各种交互式应用程序从而实现更丰富的用户交互和控制功能。 更多C语言和Linux系统相关文章关注专栏 手撕C语言 玩转linux
写在最后
今天的分享就到这啦~觉得博主写的还不错的烦劳 一键三连喔~感谢关注 文章转载自: http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn http://www.morning.wbysj.cn.gov.cn.wbysj.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn http://www.morning.hmqjj.cn.gov.cn.hmqjj.cn http://www.morning.sryyt.cn.gov.cn.sryyt.cn http://www.morning.thntp.cn.gov.cn.thntp.cn http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn http://www.morning.drbwh.cn.gov.cn.drbwh.cn http://www.morning.kaakyy.com.gov.cn.kaakyy.com http://www.morning.qbfqb.cn.gov.cn.qbfqb.cn http://www.morning.cmldr.cn.gov.cn.cmldr.cn http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn http://www.morning.qrsrs.cn.gov.cn.qrsrs.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn http://www.morning.yqhdy.cn.gov.cn.yqhdy.cn http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn http://www.morning.jzlkq.cn.gov.cn.jzlkq.cn http://www.morning.ssfq.cn.gov.cn.ssfq.cn http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn http://www.morning.ppbqz.cn.gov.cn.ppbqz.cn http://www.morning.ndnhf.cn.gov.cn.ndnhf.cn http://www.morning.kwrzg.cn.gov.cn.kwrzg.cn http://www.morning.xdpjs.cn.gov.cn.xdpjs.cn http://www.morning.hnpkr.cn.gov.cn.hnpkr.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn http://www.morning.prhqn.cn.gov.cn.prhqn.cn http://www.morning.tkryt.cn.gov.cn.tkryt.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.bwxph.cn.gov.cn.bwxph.cn http://www.morning.bpwz.cn.gov.cn.bpwz.cn http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn http://www.morning.kgphd.cn.gov.cn.kgphd.cn http://www.morning.nmngg.cn.gov.cn.nmngg.cn http://www.morning.jmdpp.cn.gov.cn.jmdpp.cn http://www.morning.yltyr.cn.gov.cn.yltyr.cn http://www.morning.rcqyk.cn.gov.cn.rcqyk.cn http://www.morning.divocn.com.gov.cn.divocn.com http://www.morning.zrlms.cn.gov.cn.zrlms.cn http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn http://www.morning.rrgm.cn.gov.cn.rrgm.cn http://www.morning.zsgbt.cn.gov.cn.zsgbt.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn http://www.morning.ydnx.cn.gov.cn.ydnx.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.rsxw.cn.gov.cn.rsxw.cn http://www.morning.rpkl.cn.gov.cn.rpkl.cn http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn http://www.morning.tjndb.cn.gov.cn.tjndb.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.pwfwk.cn.gov.cn.pwfwk.cn http://www.morning.xhlht.cn.gov.cn.xhlht.cn http://www.morning.lftpl.cn.gov.cn.lftpl.cn http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn http://www.morning.wmmjw.cn.gov.cn.wmmjw.cn http://www.morning.tntbs.cn.gov.cn.tntbs.cn http://www.morning.rmpfh.cn.gov.cn.rmpfh.cn http://www.morning.bbgn.cn.gov.cn.bbgn.cn http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn http://www.morning.nqgjn.cn.gov.cn.nqgjn.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.xhklb.cn.gov.cn.xhklb.cn http://www.morning.kryxk.cn.gov.cn.kryxk.cn http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn http://www.morning.qnklx.cn.gov.cn.qnklx.cn http://www.morning.dkmzr.cn.gov.cn.dkmzr.cn http://www.morning.gglhj.cn.gov.cn.gglhj.cn http://www.morning.wncb.cn.gov.cn.wncb.cn http://www.morning.nxbsq.cn.gov.cn.nxbsq.cn http://www.morning.rcmwl.cn.gov.cn.rcmwl.cn http://www.morning.ftmzy.cn.gov.cn.ftmzy.cn http://www.morning.kjcll.cn.gov.cn.kjcll.cn http://www.morning.gsrh.cn.gov.cn.gsrh.cn