嵌入式Linux上QT标准键盘输入的实现(2)

static int button_init(void)
          {
          ……
                 input_dev = input_allocate_device();//分配input设备
                 input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP);
                 // EV_KEY为要支持的键盘事件
                 for (i = 0; i < 255; i++)
                          set_bit(usb_kbd_keycode[i], input_dev->keybit);
                  //设置支持的键盘码,可根据实际情况注册
                  input_register_device(input_dev);//注册input设备

}

/*注销*/

static void __exit button_cleanup(void)
         {
         ……
                 input_unregister_device(input_dev);//注销input设备
         }

●     中断处理过程中完成键盘值的获取及input事件的递交

static irqreturn_t button_irq(int irq, void *dev_id, struct pt_regs *regs)
         {
         ……
                 input_report_key(input_dev, 59, 1); //模拟键盘码F1按下过程
                 input_report_key(input_dev, 59, 0);
                 input_sync(input_dev);
         }
         /*在内核include/linux/input.h中
         #define KEY_F1 59
         */

上面给出了简要的过程,大家在具体实现过程中多参考/driver/usb/input/usbkbd.c文件,及注意按键去抖等问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwssfz.html