linux輸入子系統

2021-06-18 15:31:05 字數 1673 閱讀 9889

輸入子系統是基於字元裝置驅動封裝出來的框架,drver那邊已經實現好的,只需要驅動程式員實現device就行。

驅動框架如下:

1. 分配乙個input_dev結構體 

static struct input_dev *buttons_dev;

buttons_dev = input_allocate_device();

2. 設定 

2.1 能產生哪類事件

set_bit(ev_key, buttons_dev->evbit);

set_bit(ev_rep, buttons_dev->evbit);

2.2 能產生這類操作裡的哪些事件: l,s,enter,left**** 

set_bit(key_l, buttons_dev->keybit);

3. 註冊

input_register_device(buttons_dev);

4. 硬體相關的操作

input_event(buttons_dev, ev_key, pindesc->key_val, 0);  //上報事件

input_sync(buttons_dev);   //同步事件

5.出口函式

input_unregister_device(buttons_dev);

input_free_device(buttons_dev);

下面是乙個用輸入子系統編寫按鍵驅動

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

struct pin_desc;

struct pin_desc pins_desc[4] = , ,

, ,};

static struct input_dev *buttons_dev;

static struct pin_desc *irq_pd;

static struct timer_list buttons_timer;

static irqreturn_t buttons_irq(int irq, void *dev_id)

static void buttons_timer_function(unsigned long data)

else

} static int buttons_init(void)

return 0; }

static void buttons_exit(void)

del_timer(&buttons_timer);

input_unregister_device(buttons_dev);

input_free_device(buttons_dev); }

module_init(buttons_init);

module_exit(buttons_exit);

module_license("gpl");

Linux輸入子系統

1.1.input子系統概述 輸入裝置 如按鍵,鍵盤,觸控螢幕,滑鼠等 是典型的字元裝置,其一般的工作機制是低層在按鍵,觸控等動作發生時產生乙個中斷 或驅動通過timer定時查詢 然後cpu通過spi,i2c或者外部儲存器匯流排讀取鍵值,座標等資料,放乙個緩衝區,字元裝置驅動管理該緩衝區,而驅動的r...

Linux輸入子系統

linux系統提供了input子系統,按鍵 觸控螢幕 鍵盤 滑鼠等輸入都可以利用input介面函式來實現裝置驅動,最重要的資料結構是struct input dev 在linux 核心中,input裝置用input dev 結構 體描述,使用input子系統實現輸入裝置驅動的時候,驅動的核心工作是向...

Linux輸入子系統

位址 linux輸入子系統 按鍵與觸控螢幕的裝置驅動,在linux系統中實現這類裝置驅動的方法是利用input子系統。linux系統提供了input子系統,按鍵 觸控螢幕 鍵盤 滑鼠等輸入都可以利用input介面函式來實現裝置驅動,按鍵和觸控螢幕裝置驅動都可以作為input裝置驅動而實現。在linu...