輸入子系統是基於字元裝置驅動封裝出來的框架,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...