红联Linux门户
Linux帮助

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

发布时间:2016-07-28 10:10:25来源:linux网站作者:简单并快乐着
input_set_capability和input_event以及input_sync函数实现Linux 输入设备驱动上报按键值方法:
 
input_report_key 函数貌似也有人用,这个demo 看看先!
 
static inline void input_report_key(struct input_dev *dev,unsigned int  
code, int value)  
{  
input_event(dev, EV_KEY, code, !!value);  
}  
 
input_report_key 调用input_event实现的!
 
在 linux/include/uapi/linux/input.h 里面有
#define KEY_VOLUMEDOWN          114
#define KEY_VOLUMEUP            115
#define KEY_BACK                158     /* AC Back */
#define KEY_FORWARD             159     /* AC Forward */
#define KEY_RECORD              167
#define KEY_CAMERA              212
#define KEY_SOUND               213
 
./hexdump /dev/input/eventx (x 为01,2,3...) 根据实际情况而定。
 
不过要注意Linux 上传按下信号,也要上传松开信号,否则Linux 系统会一直以为按键还在按下状态。
 
/*获取按键值*/
45     down = !s3c2410_gpio_getpin(button_irqs->pin);  //down: 1(按下),0(弹起)
46    if (!down) {
47    
48     /*报告事件*/
49     key_values = button_irqs->number;
50    //printk("====>rising key_values=%d\n",key_values);
51   if(key_values==0)
52       input_report_key(button_dev, KEY_1,0);
53  if(key_values==1)
54       input_report_key(button_dev, KEY_2,0);
55  if(key_values==2)
56       input_report_key(button_dev, KEY_3,0);
57  if(key_values==3)
58       input_report_key(button_dev, KEY_4,0);
59  if(key_values==4)
60       input_report_key(button_dev, KEY_5,0);
61  if(key_values==5)
62       input_report_key(button_dev, KEY_6,0);
63  /*报告结束*/
64 input_sync(button_dev);
65}
66  
67    else {
68     
69         key_values = button_irqs->number;
70        //printk("====>falling key_values=%d\n",key_values);
71   if(key_values==0)
72         input_report_key(button_dev, KEY_1,1);
73  if(key_values==1)
74         input_report_key(button_dev, KEY_2,1);
75  if(key_values==2)
76         input_report_key(button_dev, KEY_3,1);
77  if(key_values==3)
78         input_report_key(button_dev, KEY_4,1);
79  if(key_values==4)
80         input_report_key(button_dev, KEY_5,1);
81  if(key_values==5)
82         input_report_key(button_dev, KEY_6,1);
83input_sync(button_dev);
84
85 }
 
本文永久更新地址:http://www.linuxdiyf.com/linux/22776.html