period是键盘哪个键

【period是键盘哪个键】1、键盘要留意防抖动
2、假如确认有键盘就input_report_key(&va->kb_dev,key_got,1);随后反复扫描仪,这一步很重要,反复扫描仪的時间要低于33ms 。
为何?看下input.c就知道,input.c的input_repeat_key会隔rep[REP_PERIOD]启用一次,可是如果我们在驱动器里释放出来了功能键,则input_repeat_period是键盘哪一个键key不容易再启用(此涵数前边有分辨) 。


period是键盘哪个键

文章插图
因而扫描仪的時间一定要低于rep[REP_PERIOD],不那样做得话,便会出現你原本想按一次功能键,結果多了好多个小尾巴 。
比如,你确认功能键后200ms再逐渐扫描仪是不是还按住,则input_repeat_key早已启用好几回了,因此 多了好多个小尾巴,那样就并不是只按住一次键盘了 。
3、千万别因手按键盘的反复時间的固定不动构思蒙蔽了程序流程的撰写 。只需驱动器特定了EV_REP,则驱动器顶层会自动启动所述的timer,本驱动器只需分辨功能键是不是伸出随后input_report_key(x,x,0);就可以!
drivers/input/keyboard/pxa27x_keypad.c
// 数组rep[[]有两个原素rep[REP_DELAY ]和rep[REP_PERIOD] 。这种值跟反复功能键相关 。例如一个键被按住
// 3秒逐渐算反复功能键,3秒以后每过一秒检验一次假如还被按住即使反复按住 。这一3秒便是rep[REP_DELAY ],
// 这一一秒便是rep[REP_PERIOD] 。
drivers/input/input.c 中涵数 int input_register_device(struct input_dev *dev)
init_timer(&dev->timer);
if (!dev->rep[REP_DELAY]&& !dev->rep[REP_PERIOD]){
//dev->timer.data=https://www.hedan60.com/shenghuo/(long) dev;
//dev->timer.function=input_repeat_key;
dev->rep[REP_DELAY]=250;
dev->rep[REP_PERIOD]=33;
}
dev->timer.data=https://www.hedan60.com/shenghuo/(long) dev;
dev->timer.function=input_repeat_key;