S3C2440 输入子系统编写驱动程序(键盘按键驱动)(十三)

本文详细介绍了一个简单的按键驱动程序开发过程,包括如何配置input_dev结构体、注册和注销设备、处理中断和服务函数等内容。

http://www.cnblogs.com/lifexy/p/7553861.html

输入子系统编写驱动程序(键盘按键驱动)

 

一、目的:

实现按键驱动,让开发板的4个按键代表键盘中的l键、s键、enter键、left-shift键。

 

二、介绍几个结构体和函数的使用:

2.1 input_dev驱动设备结构体中常用成员如下:

struct input_dev {

	void *private;

	const char *name;//设备名字
	const char *phys;//文件路径,比如 input/buttons
	const char *uniq;
	struct input_id id;
         //表示支持哪类事件,常用有以下几种事件(可以多选)
	unsigned long evbit[NBITS(EV_MAX)];  
	unsigned long keybit[NBITS(KEY_MAX)];//存放支持的键盘键值  键盘变量定义在:include/linux/input.h,比如:KEY_L(按键L)
	unsigned long relbit[NBITS(REL_MAX)];//存放支持的相对坐标值
	unsigned long absbit[NBITS(ABS_MAX)];//存放支持的绝对坐标值
	unsigned long mscbit[NBITS(MSC_MAX)];//存放支持的其他事件,也就是功能
	unsigned long ledbit[NBITS(LED_MAX)];//存放支持的各种状态的LED
	unsigned long sndbit[NBITS(SND_MAX)];//存放支持的各种声音
	unsigned long ffbit[NBITS(FF_MAX)];//存放支持的受力设备
	unsigned long swbit[NBITS(SW_MAX)];//存放支持的开关功能

};

2.2 函数如下:

struct input_dev *input_allocate_device(void)	//想内核中申请一个input_dev设备,然后返回这个设备


void input_unregister_device(struct input_dev *dev)	//卸载/sys/class/input目录下的input_dev这个类设备,一般在驱动出口函数写


void input_free_device(struct input_dev *dev)	//释放input_dev这个结构体,一般在驱动出口函数写


set_bit(nr,p);	//设置某个结构体成员p里面的某位等于nr,支持这个功能
/* 比如:
set_bit(EV_KEY, buttons_dev->evbit);	//设置input_dev结构体buttons_dev->evbit支持EV_KEY
set_bit(KEY_S, buttons_dev->keybit);	//设置input_dev结构体buttons_dev->keybit支持按键“s”
*/


void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)//上报事件
inp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值