矩陣鍵盤配置方法

文檔說明

本文檔以SC806-CN-00(8909平臺)爲例,結合實際的原理圖,說明矩陣鍵盤配置方法。

2. 原理圖

下面是一個鍵盤的原理圖,4*5的矩陣鍵盤,行號爲ROW0-3,列號爲COL0-4。
在這裏插入圖片描述
嗯,鍵盤圖畫的很漂亮。

3. 相關文檔

OK,我們開始看看相關的文檔:
kernel/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
kernel/Documentation/devicetree/bindings/input/matrix-keymap.txt
打開gpio-matrix-keypad.txt:
在這裏插入圖片描述
把example這部分內容,原樣copy到 kernel/arch/arm/boot/dts/qcom/sc806-evk/msm8909-mtp.dtsi
修改:
debounce-delay-ms = <200>
col-scan-delay-us = <200>
上述兩個值,根據實際按鍵效果自行調整,避免誤判和錯判。

matrix-keymap.txt 對 linux,keymap做了解釋:
在這裏插入圖片描述
以某個值爲例:
在這裏插入圖片描述

4. 如何確定keymap

以原理圖的KEY8爲例,是由ROW3*COL0交叉而成,行號:0x03;列號:0x00
那麼鍵值是多少呢?
在這裏插入圖片描述
KEY8對應”←”功能鍵,查詢kernel/include/uapi/linux/input.h,裏面列出了所有鍵值。
在這裏插入圖片描述
到這裏,我們確定了KEY8的鍵值是105,換算成16進制0x69。
那麼KEY8在keymap中對應的值就是:0x03000069,鍵值不夠16bit高位用0補齊。
現在我們寫下里程碑的第一個keymap值:
linux,keymap = <0x03000069 //105 KEY_LEFT

用同樣的辦法,參考原理圖,計算出其他按鍵對應的keymap值。
keymap值的排列順序無所謂,可以按照個人喜好,只要和實際電路圖相符即可。
在這裏插入圖片描述

5. 確定行號列號對應的GPIO管腳

這一步很簡單,根據原理圖找出行和列對應的GPIO管腳,注意是GPIO號,不是模塊的管腳編號。

在這裏插入圖片描述
把上圖的信息整理並順序填入 kernel/arch/arm/boot/dts/qcom/sc806-evk/msm8909-mtp.dtsi
在這裏插入圖片描述

6. 打開編譯選項

在 kernel/arch/arm/configs/la0920_defconfig 和 kernel/arch/arm/configs/la0920_user_defconfig中增加編譯選項:
CONFIG_KEYBOARD_MATRIX=y

本文檔所涉及的修改點,見下面百度鏈接:
鏈接:https://pan.baidu.com/s/1w8muLo29SpTUDR4oLFXi1Q
提取碼:9w4n

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章