linux鍵盤按鍵驅動

2021-10-11 10:59:59 字數 2009 閱讀 6694

1.先來介紹以下幾個結構體使用和函式,下面**中會用到

1)input_dev驅動裝置結構體中常用成員如下:

struct input_dev
2.然後開始寫**1)向核心申請input_dev結構體

2)設定input_dev的成員

3)註冊input_dev 驅動裝置

4)初始化定時器和中斷

5)寫中斷服務函式

6)寫定時器超時函式

7)在出口函式中 釋放中斷函式,刪除定時器,解除安裝釋放驅動

具體**如下(都加了注釋):

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include struct input_dev *buttons_dev;            //  定義乙個input_dev結構體  

static struct ping_desc *buttons_id; //儲存dev_id,在定時器中用

static struct timer_list buttons_timer; //定時器結構體

struct ping_desc;

// key1 -> l

// key2 -> s

// key3 -> 空格

// key4 -> enter

static struct ping_desc buttons_desc[5]=

, ,

,,};

/*5. 寫中斷服務函式*/

static irqreturn_t buttons_irq (int irq, void *dev_id) //中斷服務函式

/*6.寫定時器超時函式*/

void buttons_timer_function(unsigned long i)

else //低電平,按下

}static int buttons_init(void) //入口函式

static int buttons_exit(void) //出口函式

module_init(buttons_init);

module_exit(buttons_exit);

module_license("gpl v2");

3.測試執行:掛載鍵盤驅動後, 如下圖,可以通過  ls -l /dev/event*   命令檢視已掛載的裝置節點:

上一節輸入子系統裡分析到:輸入子系統的主裝置號為13,其中event驅動本身的此裝置號是從64開始的,如上圖,核心啟動時,會載入自帶觸控螢幕驅動,所以我們的鍵盤驅動的次裝置號=64+1

3.1測試執行有兩種,一種是直接開啟/dev/tyy1,第二種是使用exec命令)

方法1:

cat /dev/tty1     //tty1:lcd終端,就會通過tty_io.c來訪問鍵盤驅動,然後列印在tty1終端上

方法2:

exec 03.2 除錯:

若測試不成功,板子又在qt下進行的:

1)可以使用vi命令,在記事本中按按鍵試

2)或者刪除/etc/init.d/rcs 裡面有關qt自啟動的命令,然後重啟

若板子沒在qt下進行,也無法測試成功:

1)可以使用hexdump命令來除錯**

)

Linux驅動 按鍵驅動

開發板 tiny6410 核心版本 linux2.6.38 要想寫出案件驅動 需要複習的知識 1 混雜裝置的使用原理 2 系統呼叫驅動函式的原理 3 中斷處理機制 4 阻塞性裝置驅動的書寫規範 1 混雜裝置的註冊和使用比較簡單,以前也複習過,這裡不再複習 3 中斷處理機制 也有部落格內容中斷處理機制...

驅動中實現模擬鍵盤按鍵

標 題 驅動中實現模擬鍵盤按鍵 作 者 luocong 在ring3中實現模擬鍵盤按鍵有n n種方式,比如sendinput keybd event 但在驅動中要怎麼模擬呢?1 寫埠 define defi8042 data port puchar 0x60 define defi8042 ctrl...

驅動中實現模擬鍵盤按鍵

標 題 驅動中實現模擬鍵盤按鍵 作 者 luocong 在ring3中實現模擬鍵盤按鍵有n n種方式,比如sendinput keybd event 但在驅動中要怎麼模擬呢?1 寫埠 define defi8042 data port puchar 0x60 define defi8042 ctrl...