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

原创 2016年06月01日 13:50:35

          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 }

input子系统详解

Input子系统详解 一.Input子系统架构 Linux系统提供了input子系统,按键、触摸屏、键盘、鼠标等输入都可以利用input接口函数来实现设备驱动,下面是Input子系统架构: In...
  • ylyuanlu
  • ylyuanlu
  • 2011年08月20日 18:30
  • 18365

input子系统 KeyPad-Touch上报数据格式与机制

----------------------------------------------------------------------- 本文系本站原创,欢迎转载! 转载请注明出处:http...

mtk按键上报代码详解

input_report_key

linux input输入子系统分析《一》:初识input输入子系统

主要讲述本人在学习Linux内核input子系统的全部过程,如有分析不当,多谢指正。以下交流方式,文章欢迎转载,保留联系信息,以便交流。 邮箱:eabi010@gmail.com 主页:www.i...
  • ielife
  • ielife
  • 2012年07月29日 14:33
  • 10226

input 子系统架构总结

Linux输入子系统(Input Subsystem)         Linux 的输入子系统不仅支持鼠标、键盘等常规输入设备,而且还支持蜂鸣器、触摸屏等设备。本章将对 Linux 输 ...
  • lbmygf
  • lbmygf
  • 2012年03月21日 16:57
  • 20358

分析Power key的处理流程

http://blog.csdn.net/pillarbuaa/article/details/7634591orks/base/policy/src/com/android/internal/pol...
  • bmj
  • bmj
  • 2013年05月25日 10:34
  • 2120

linux输入子系统之按键驱动

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

键值从键盘到Linux内核传输过程分析

键值从键盘到Linux内核传输过程分析         这是一个以前没有了解过的一个盲区。         源于在制作一个带有特殊键的键盘,键盘厂商让挑选择殊键的实现方法。并举例说明了普通按键z在...
  • kangear
  • kangear
  • 2014年12月30日 14:39
  • 5546

linux键盘input_event浅析

input_event(mxckbd_dev, EV_KEY, mxckpd_keycodes[scancode], 0); void input_event(struct input_dev ...
  • tdstds
  • tdstds
  • 2014年01月23日 17:39
  • 9977

Android键值上报流程

一、介绍      在常用手机中,常用的键值有power,volume_up,volume_down,home,back,menu。其中power先跳过不管,它与唤醒睡眠流程相关,余下键值中volu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux 输入设备驱动上报按键值方法
举报原因:
原因补充:

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