Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yappy2000d/keypad-scan

一個高效的4×4鍵盤掃描函式庫。
https://github.com/yappy2000d/keypad-scan

Last synced: about 7 hours ago
JSON representation

一個高效的4×4鍵盤掃描函式庫。

Awesome Lists containing this project

README

        

# 4×4 鍵盤掃描函式庫
一個高效且輕量的4×4鍵盤掃描函式庫。

## 特點

- 提供更高效的按鍵掃描方法:
+ 未按下按鍵時,執行速度為傳統方式的400%。
+ 在按下按鍵時,執行速度為傳統方式的200%。
- ~~每個函數皆有提供精簡的函數別名,方便使用。~~

## 使用方式

1. 將檔案放在與主程式相同的目錄,並在程式碼中加入語句:

```c
#include "keypadlib.c"
```

2. 預設情況下,這個函式庫使用P2作為鍵盤的接腳。如果你想使用其他接腳,請在`#include`語句之前使用`#define`來定義`KEY_PORT`。

3. 按鍵順序的計算方式:Row * 4 + Column。預設對應到:"0123456789ABCDEF",共16個字元。如果想更改按鍵順序,可以使用`setKeyCodes()`函數。

使用的更多細節請參見[範例](/example/)。

## 定義
- `KEY_PORT`:鍵盤的接腳,預設為P2。
- `Byte`:`unsigned char`的別名。

## 函數

以下是這個函式庫提供的主要函數:

- `void key_setKeys(char *newKeyCodes)`: 用於更改按鍵順序。

> 範例:更改按鍵順序
> ```c
> char KeyCodes[] = "FEDCBA0987654321";
> key_setKeys(KeyCodes);
> ```

- `Byte key_scan(void)`: 讀取按鍵,回傳1~16,分別對應到16個按鍵,若無按鍵按下則回傳`KEY_NULL`。

> 範例:持續等待,直到任一個按鍵被按下
> ```c
> while(!key_scan());
> /* continue */
> ```

- `char key_check(void)`: 回傳當前壓著的按鍵,若無按鍵按下則回傳`KEY_NULL`。

> 範例:檢查A鍵是否被按下。
> ```c
> if(key_check() == 'A') {
> /* more codes here */
> }
> ```

- `char key_getChar(void)`: 讀取按鍵,並等待直到按鍵放開後,再回傳。

> 範例:輸入一個字元並將其存入變數「key」中。
> ```c
> char ch = key_getChar();
> ```

- `char key_waitFor(char c)`: 持續等待直到特定鍵被釋放。

> 範例:等待直到「=」被按下,之後將其發送出去。
> ```c
> char ch = key_until('=');
> uart_putch(ch);
> ```

- `Byte key_getByte(void)`: 讀取一個Byte(按兩字鍵盤,分別為高低各四個位元)
- `unsigned int key_getWord`: 讀取一個Word。
- `unsigned int key_getInt(void)`: 輸入任一個十進位數字,按下任一非數字鍵,回傳一個int(int的最大範圍為65536)。

## 作者

- 作者:LSweetSour
- 最後編輯:2023/11/27
- 授權方式:MIT License

## 其他事項
如有任何問題或建議,請聯繫作者。