輸入子系統筆記

2021-06-25 08:01:31 字數 1483 閱讀 6786

輸入子系統筆記

現成的驅動程式:輸入子系統

input.c核心層

input_init函式中呼叫err =register_chrdev(input_major,"input", &input_fops); 在輸入子系統中我們不需要建立裝置號,輸入子系統已經為我們建立好了。

static const struct file_operationsinput_fops =

接下來的操作就和前面寫的按鍵驅動內飾我就不再過多的去 記錄了

/* 參考drivers\input\keyboard\gpio_keys.c */

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

structpin_desc,,,

,staticstruct input_dev *buttons_dev;

staticstruct pin_desc *irq_pd;

staticstruct timer_list buttons_timer;

staticirqreturn_t buttons_irq(int irq, void *dev_id)

/* 10ms後啟動定時器 */

irq_pd = (struct pin_desc *)dev_id;

mod_timer(&buttons_timer, jiffies+hz/100);

return irq_retval(irq_handled);

staticvoid buttons_timer_function(unsigned long data)

struct pin_desc * pindesc = irq_pd;

unsigned int pinval;

if (!pindesc)

return;

pinval =s3c2410_gpio_getpin(pindesc->pin);

if (pinval)

/* 鬆開 : 最後乙個引數: 0-鬆開, 1-按下 */

input_event(buttons_dev, ev_key,pindesc->key_val, 0);

input_sync(buttons_dev);

else

/* 按下 */

input_event(buttons_dev, ev_key,pindesc->key_val, 1);

input_sync(buttons_dev);

輸入子系統

驅動函式操作步驟 在初始化函式中 1.分配乙個input dev結構體 struct input dev buttons dev buttons dev input allocate device 2.設定 2.1 能產生哪類事件 set bit ev key,buttons dev evbit s...

Linux輸入子系統

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

Linux輸入子系統

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