zoukankan      html  css  js  c++  java
  • input子系统

    1、分层

    设备驱动层:

    本层要驱动开发者自己实现,可参考drivers/input/keyboard/key.c
    

    1.结构体:

    核心层:

    内核已帮我们完成,在drivers/input/input.c
    

    1.结构体:

    事件处理层:

    针对不同的类型,内核分别提供了三个事件处理:
    0-31       joystick  joydev.c 
    32----63   mouse     mousedev.c
    64----95   event     evdev.c
    

    1.结构体:

    2、步骤流程:

    1.定义input_dev结构

    方法1:
    struct input_dev dev;
    
    方法2:
    struct input_dev *dev ;
    struct input_dev __must_check *input_allocate_device(void);
    

    2.初始化

    1. 支持什么事件

        set_bit(EV_KEY,input_dev.evbit);
    

    2、支持什么子事件

        set_bit(BTN_0,input_dev.keybit));
    

    3、设置事件参数

    3.注册:

    int __must_check input_register_device(struct input_dev *);
    

    4.在需要的地方上报事件

    static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)  
    
    例如:
     input_report_key(&input_dev,BTN_0,0);
     input_report_key(&input_dev,BTN_0,1);
     input_sync(&input_dev);
    

    5.释放:

    void input_unregister_device(struct input_dev *);
    

    3、实例:

    源码下载

    4、源码追踪:

    更多细节见xmind思维导图。
    
  • 相关阅读:
    十一周总结
    第十周课程总结
    第九周课程总结&实验报告
    第八周课程总结&实验报告
    第七周&实验报告五
    第六周&Java实验报告四
    课程总结
    第十四周课程总结
    第十三周总结
    十二周课程总结
  • 原文地址:https://www.cnblogs.com/xxg1992/p/6636376.html
Copyright © 2011-2022 走看看