Linux长按按键如何检测,按键驱动分析【初识input子系统】

#include

#include

#include

#include

#include

#include

#include

#include

//#include

#include

#include

#define SCAN_INTERVAL        (50) /* ms */

//#define HINGE_SCAN_INTERVAL    (150) /* ms */

static unsigned char mgc270btn_keycode[1] = {KEY_ENTER};

struct mgc270btn {

unsigned char keycode[ARRAY_SIZE(mgc270btn_keycode)];

struct input_dev *input;

char phys[32];

spinlock_t lock;

struct timer_list timer;

};

//#define KB_DISCHARGE_DELAY    10

//#define KB_ACTIVATE_DELAY    10

static inline int mgc270btn_get_status(void)

{

return ((GPLR0 & 0x01));//取得当前按键的状态

}

/*

* The MagicARM270 Button only generates interrupts when it is pressed.

* When it is pressed, we enable a timer which then scans the

* button to detect when the it is released.

*/

/*

* MagicARM270 button interrupt handler.

*/

/* Scan the hardware button and push any changes up through the input layer */

static void mgc270btn_scankeypad(struct mgc270btn *mgc270btn_data, struct pt_regs *regs)

{

/*

struct    pt_regs:

* This struct defines the way the registers are stored on the

* stack during a system call. Note that sizeof(struct pt_regs)

* has to be a multiple of 8.

*/

unsigned long flags;

unsigned int num_pressed = 0;

unsigned int p

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值