Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41735
  • 博文数量: 12
  • 博客积分: 480
  • 博客等级: 下士
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-27 21:29
文章分类

全部博文(12)

文章存档

2011年(3)

2010年(9)

我的朋友

分类: LINUX

2010-05-06 15:03:10

linux2.6输入子系统

1.头文件

#include 

#include 

#include 

#include 

#include 

#include 

2.定义一个个输入子系统指针

static struct input_dev *omap_7279key;

static int omap3evm_keymap[] = {

    KEY(3, 3, KEY_KBDILLUMDOWN),

    KEY(1, 2, KEY_RIGHT),

    KEY(2, 0, KEY_LEFT),

    KEY(3, 1, KEY_UP),

    KEY(0, 2, KEY_DOWN),

    KEY(1, 0, KEY_HOME),

    KEY(2, 1, KEY_BACK),

    KEY(1, 3, KEY_ENTER),

    KEY(2, 2, KEY_VOLUMEUP),

    KEY(1, 1, KEY_VOLUMEDOWN),

    KEY(0, 0, KEY_END),

    0

};

3.初始化和注册输入子系统

omap_7279key = input_allocate_device();

if (!omap_7279key) {

kfree(omap_7279key);

return -ENOMEM;

}  /*这里是给输入子系统分配内存*/

       /* setup input device */

omap_7279->name = "Ds7279 keyboard";//输入子系统名字

set_bit(EV_KEY, omap_7279key->evbit);//设置输入子系统支持按键事件。

// set_bit(KEY(1, 0, KEY_HOME)& KEYNUM_MASK,omap_7279key->keybit);

for(i=0;i<10;i++)

set_bit(omap3evm_keymap[i]& KEYNUM_MASK,omap_7279key->keybit);

/*初始化键盘定义,这里keybit是由若干个long型变量组成的数组*/

input_register_device(omap_7279key);

/*注册input设备*/

4.在中断或者需要发中事件报告加放报告函数

input_report_key(omap_7279key,omap3evm_keymap[2]& (KEYNUM_MASK | KEY_PERSISTENT),1);//发送报告

udelay(10);

input_report_key(omap_7279key,omap3evm_keymap[2]& (KEYNUM_MASK | KEY_PERSISTENT),0);//KEY(3, 1, KEY_UP)

input_sync(omap_7279key);//同步,表示一个报告完成

5.注销输入设备.

input_unregister_device(omap_7279key);

kfree(omap_7279key);

阅读(499) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~