Android应用程序键盘(Keyboard)消息处理机制分析(5)
16lz
2021-01-23
Step 19. EventHub.openPlatformInput
这个函数定义在frameworks/base/libs/ui/EventHub.cpp文件中:
- boolEventHub::openPlatformInput(void)
- {
- ......
- res=scanDir(device_path);
- if(res<0){
- LOGE("scandirfailedfor%s\n",device_path);
- }
- returntrue;
- }
这个函数主要是扫描device_path目录下的设备文件,然后打开它们,这里的变量device_path定义在frameworks/base/libs/ui/EventHub.cpp文件开始的地方:
- staticconstchar*device_path="/dev/input";
在设备目录/dev/input中,一般有三个设备文件存在,分别是event0、mice和mouse0设备文件,其中,键盘事件就包含在event0设备文件中了。 Step 20.EventHub.scanDir
这个函数定义在frameworks/base/libs/ui/EventHub.cpp文件中:
- intEventHub::scanDir(constchar*dirname)
- {
- chardevname[PATH_MAX];
- char*filename;
- DIR*dir;
- structdirent*de;
- dir=opendir(dirname);
- if(dir==NULL)
- return-1;
- strcpy(devname,dirname);
- filename=devname+strlen(devname);
- *filename++='/';
- while((de=readdir(dir))){
- if(de->d_name[0]=='.'&&
- (de->d_name[1]=='\0'||
- (de->d_name[1]=='.'&&de->d_name[2]=='\0')))
- continue;
- strcpy(filename,de->d_name);
- openDevice(devname);
- }
- closedir(dir);
- return0;
- }
根据上面一步的分析,这个函数主要就是调用openDevice函数来分别打开/dev/input/event0、/dev/input/mice和/dev/input/mouse0三个设备文件了。
更多相关文章
- Android设备电量监控
- Android Studio 指定签名证书文件
- android文件管理器--文件操作
- android中Bitmap图像处理 修改图片大小以及保存时的文件大小
- Android 读取配置文件的内容
- 文件上传
- android文件上传到服务器
- wzplayer for android V1.5.3 (新增YUV文件播放)