(79)【按鍵】[獨立按鍵] - 1: 單擊,雙擊,三擊以及N擊
阿新 • • 發佈:2019-01-14
此按鍵程式的實現的功能是單個獨立按鍵的[單擊],[長按],[雙擊],[三擊]以及[多擊]。本文分為三個部分,
- 第一個部分是說[單擊],[長按]的程式;
- 第二部分是講[雙擊];
- 第三部分是講[三擊],[N擊];
一、 [單擊]、[長按]程式
1. 簡單介紹本按鍵程式的單擊和長按
首先說一下單擊,長按的響應情況,就是按多久算單擊或者長按,按下按鍵馬上返回有效鍵值,還是釋放之後返回有效鍵值等等,下面說下它在什麼情況下返回有效的【單擊】和【長按】。
首先看一張時序圖:
- 注:
T1:是單擊的按鍵消抖時長,這裡預設的是30ms,也可以根據需求自行定義;
T2:是單擊時,按鍵釋放的有效時間段,提前或者超過這個時間段釋放的按鍵都再是單擊了。提前釋放則是無效鍵值,超過後釋放則是長按。
T3:是長按時長,按鍵超過此時長,則為長按。這裡的預設值是3s,同樣可根據需求自行更改。
【單擊】:按鍵按下超過消抖時長T1(30ms),並且在T2時間段內釋放按鍵,按鍵一釋放,馬上返回有效按鍵值—【單擊】。
注意:單擊是釋放後,才返回有效按鍵值,不釋放時,是無效按鍵值。
【長按】:按鍵按下的時間超過預設的長按時長T3(3s) ,馬上返回有效按鍵值—【長按】;
注意:長按是隻要按下的時間超過預設的長按時長,馬上返回有效鍵值。但是,如果按鍵一直按著不釋放,則只返回一次有效按鍵值,不重複返回,直到釋放之後,才開始重新讀取鍵值。
2. 按鍵程式的架構
按鍵程式可以分為四個部分,
第一部分:判斷有無按鍵按下;
第二部分:按鍵是否有效(按鍵消抖);
第三部分:確定有效按鍵的種類(單擊還是長按);
第四部分:等待按鍵釋放。
3. 按鍵程式的原始碼以及註釋
以下是key.c 的原始碼:
1
- 原文地址:https://blog.csdn.net/pillarpeng/article/details/50963127