linux 应用读取input按键驱动上报键值案例

原创 2016年07月13日 14:58:09
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
#include <limits.h>
#include <termios.h>
#include <errno.h>
#include <linux/input.h>
#include "log.h"

#define TOUCHKEY_TAG             "TouchkeyDemo "
#define TOUCHKEY_FILE            "/dev/input/event4"


int main(int argc, char **argv)
{
	int nFd;
	int nRet;
	struct input_event *sInputEvent;

	PL_LOGI(TOUCHKEY_TAG, " --> Make time: %s %s %s <-- ", __DATE__, __TIME__, "Tony.Huang");
	
	sInputEvent = malloc(sizeof(struct input_event));
	nFd = open(TOUCHKEY_FILE, O_RDWR);
	if(nFd < 0)
	{
		PL_LOGE(TOUCHKEY_TAG, "open file %s error.", TOUCHKEY_FILE);
		return -1;
	}
	else
	{
		PL_LOGI(TOUCHKEY_TAG, "open file %s success.", TOUCHKEY_FILE);
	}

	memset(sInputEvent, 0, sizeof(struct input_event));
	nRet = read(nFd, sInputEvent, sizeof(struct input_event));
	if(nRet < 0)
	{
		PL_LOGE(TOUCHKEY_TAG, "read file %s error.", TOUCHKEY_FILE);
		return nRet;
	}

	PL_LOGI(TOUCHKEY_TAG, "type: 0x%x ", sInputEvent->type);
	PL_LOGI(TOUCHKEY_TAG, "code: 0x%x ", sInputEvent->code);
	PL_LOGI(TOUCHKEY_TAG, "value: 0x%x", sInputEvent->value);

	free(sInputEvent);
	close(nFd);
	return 0;
}


Makefile 编译文件

CUR_TARGET=touchkeydemo

INCLUDES   += -I./
CUR_SRCS_THREAD:= touchkeydemo.c

touchkeydemo:
	$(CC) $(CUR_SRCS_THREAD) -o $(CUR_TARGET) -lpthread -ldl -lm

clean:
	rm -fv $(CUR_TARGET)



Linux应用程序之按键响应

Linux中的按键检测通过循环读取设备文件/dev/input/event[x](其中x可以为0,1,2…)设备文件获取按键事件,一般由主线程循环获取按键事件,然后通过消息队列通知其他子线程,从而做出...
  • liuyi_lab
  • liuyi_lab
  • 2016年12月31日 16:19
  • 973

linux下读取键盘扫描码

键盘扫描码有两种:   一个是make   code,也就是键被按下和按住不放时产生   另一种是break   code,在键被释放时产生。   每个键都有自己唯一的make   code和brea...
  • ma100
  • ma100
  • 2007年02月07日 14:19
  • 5089

Linux Input子系统浅析(二)-- 模拟tp上报键值

通过前一节的分析得到,linux Input子系统上传数据本质上是将input_dev的数据,上报给input_handler, 当用户读入event时,驱动层只需要利用copy_to_user将数...
  • xiaopangzi313
  • xiaopangzi313
  • 2016年08月31日 12:36
  • 1248

Android键值上报流程

一、介绍      在常用手机中,常用的键值有power,volume_up,volume_down,home,back,menu。其中power先跳过不管,它与唤醒睡眠流程相关,余下键值中volu...
  • u011630458
  • u011630458
  • 2014年03月27日 19:52
  • 5110

linux输入子系统之按键驱动

上一节中,我们讲解了Linux  input子系统的框架,到内核源码里详细分析了输入子系统的分离分层的框架等。 上一节文章链接:http://blog.csdn.net/lwj103862095/a...
  • lwj103862095
  • lwj103862095
  • 2014年01月01日 15:51
  • 16071

Linux 输入设备驱动上报按键值方法

input_set_capability和input_event以及input_sync函数实现Linux 输入设备驱动上报按键值方法...
  • lqxandroid2012
  • lqxandroid2012
  • 2016年06月01日 13:50
  • 2261

驱动程序通知应用程序读取数据的方法总结

mark一下,以后需要。 驱动程序如何通知应用程序读取数据?这是一个很多人都关心的问题。 在此之前,我一直是采用的应用程序主动查询的方式,即,应用程序定时发送IRP来读取驱动程...
  • yyylll62803112
  • yyylll62803112
  • 2014年03月20日 12:42
  • 1114

linux按键驱动

LINUX 按键驱动
  • wince_lover
  • wince_lover
  • 2016年03月22日 20:39
  • 1441

Linux下键盘键值对应input event下的code值表

最近做了gpio按键和USB键盘的工作,获取了按键code值。但不是很清楚键值对应的字符;查找内核源码,在kernel/include/uapi/linux/input.h文件中找到;对应如下: /...
  • cyf15238622067
  • cyf15238622067
  • 2017年11月03日 09:36
  • 610

Linux下非阻塞读取键值的实现

由于最近在Gstreamer下编写各种插件(如http,hls等),需要实现在点播过程中,可以随时监测键值从而实现退出、暂停的功能,而且监测键值是非阻塞的,不会影响到视频播放正常退出。     基于这...
  • u012892086
  • u012892086
  • 2013年11月23日 10:00
  • 1776
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 应用读取input按键驱动上报键值案例
举报原因:
原因补充:

(最多只允许输入30个字)