input 子系统


----------------------------------------------------------------------------------------------------------------

----------------关于  事件类型,代码,已经报告的值

初始化的时候:

button_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT(EV_SYN);

//set_bit(EV_KEY, button_dev->evbit)//支持EV_KEY事件
set_bit(KEY_1,   button_dev->keybit);
set_bit(KEY_2,   button_dev->keybit);
set_bit(KEY_3,   button_dev->keybit);
set_bit(KEY_4,   button_dev->keybit);
set_bit(KEY_5,   button_dev->keybit);

set_bit(KEY_6,   button_dev->keybit);


在按键中断函数中

input_report_key(button_dev, KEY_1, 0);

input_report_key(button_dev, KEY_1, 1);


KEY_1只是一个逻辑值,自己定义的值。当应用程序去读的时候就发送出去,具体有什么含义自己定义。

struct input_event ev_key;

buttons_fd = open("/dev/event0", O_RDWR);

read(buttons_fd,&ev_key,sizeof(struct input_event));

printf("type:%d,code:%d,value:%d\n", ev_key.type,ev_key.code-1,ev_key.value);

结果如果读取就会打印 其中type就是事件类型EV_KEY,value表示按下还是弹起0或者1,code代表哪一个按键比如KEY_1。





------------------------------------------------------------------------------------------------

--------------初始化

button_dev = input_allocate_device();
if (!button_dev) {
printk(KERN_ERR "Unable to allocate the input device !!\n");
return -ENOMEM;
}
button_dev->name = "s3c2440_button";
button_dev->id.bustype = BUS_RS232;
  button_dev->id.vendor = 0xDEAD;
  button_dev->id.product = 0xBEEF;
  button_dev->id.version = 0x0100;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值