{"id":18863165,"url":"https://github.com/yappy2000d/keypad-scan","last_synced_at":"2026-02-10T19:30:16.395Z","repository":{"id":204948978,"uuid":"713041064","full_name":"yappy2000d/Keypad-Scan","owner":"yappy2000d","description":"一個高效的4×4鍵盤掃描函式庫。","archived":false,"fork":false,"pushed_at":"2023-11-27T03:27:37.000Z","size":47,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-30T21:18:24.691Z","etag":null,"topics":["8051","sdcc"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yappy2000d.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-01T18:05:39.000Z","updated_at":"2024-11-30T14:58:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"59ceb1ba-a039-487b-9650-43be7f166c50","html_url":"https://github.com/yappy2000d/Keypad-Scan","commit_stats":null,"previous_names":["yappy2000d/keypad-scan"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yappy2000d%2FKeypad-Scan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yappy2000d%2FKeypad-Scan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yappy2000d%2FKeypad-Scan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yappy2000d%2FKeypad-Scan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yappy2000d","download_url":"https://codeload.github.com/yappy2000d/Keypad-Scan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239808216,"owners_count":19700441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["8051","sdcc"],"created_at":"2024-11-08T04:36:49.362Z","updated_at":"2026-02-10T19:30:16.336Z","avatar_url":"https://github.com/yappy2000d.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 4×4 鍵盤掃描函式庫\n一個高效且輕量的4×4鍵盤掃描函式庫。\n\n## 特點\n\n- 提供更高效的按鍵掃描方法：\n    + 未按下按鍵時，執行速度為傳統方式的400%。\n    + 在按下按鍵時，執行速度為傳統方式的200%。\n- ~~每個函數皆有提供精簡的函數別名，方便使用。~~\n\n## 使用方式\n\n1. 將檔案放在與主程式相同的目錄，並在程式碼中加入語句：\n\n    ```c\n    #include \"keypadlib.c\"\n    ```\n\n2. 預設情況下，這個函式庫使用P2作為鍵盤的接腳。如果你想使用其他接腳，請在`#include`語句之前使用`#define`來定義`KEY_PORT`。\n\n3. 按鍵順序的計算方式：Row * 4 + Column。預設對應到：\"0123456789ABCDEF\"，共16個字元。如果想更改按鍵順序，可以使用`setKeyCodes()`函數。\n\n使用的更多細節請參見[範例](/example/)。\n\n## 定義\n- `KEY_PORT`：鍵盤的接腳，預設為P2。\n- `Byte`：`unsigned char`的別名。\n\n## 函數\n\n以下是這個函式庫提供的主要函數：\n\n- `void key_setKeys(char *newKeyCodes)`: 用於更改按鍵順序。  \n\n    \u003e 範例：更改按鍵順序\n    \u003e ```c\n    \u003e char KeyCodes[] = \"FEDCBA0987654321\";\n    \u003e key_setKeys(KeyCodes);\n    \u003e ```\n\n\n- `Byte key_scan(void)`: 讀取按鍵，回傳1~16，分別對應到16個按鍵，若無按鍵按下則回傳`KEY_NULL`。\n\n    \u003e 範例：持續等待，直到任一個按鍵被按下\n    \u003e ```c\n    \u003e while(!key_scan());\n    \u003e /* continue */\n    \u003e ```\n\n- `char key_check(void)`: 回傳當前壓著的按鍵，若無按鍵按下則回傳`KEY_NULL`。\n    \n    \u003e 範例：檢查A鍵是否被按下。\n    \u003e ```c\n    \u003e if(key_check() == 'A') {\n    \u003e     /* more codes here */\n    \u003e }\n    \u003e ```\n\n- `char key_getChar(void)`: 讀取按鍵，並等待直到按鍵放開後，再回傳。\n\n    \u003e 範例：輸入一個字元並將其存入變數「key」中。\n    \u003e ```c\n    \u003e char ch = key_getChar();\n    \u003e ```\n\n- `char key_waitFor(char c)`: 持續等待直到特定鍵被釋放。\n\n    \u003e 範例：等待直到「=」被按下，之後將其發送出去。\n    \u003e ```c\n    \u003e char ch = key_until('=');\n    \u003e uart_putch(ch);\n    \u003e ```\n\n- `Byte key_getByte(void)`: 讀取一個Byte（按兩字鍵盤，分別為高低各四個位元）\n- `unsigned int key_getWord`: 讀取一個Word。\n- `unsigned int key_getInt(void)`: 輸入任一個十進位數字，按下任一非數字鍵，回傳一個int（int的最大範圍為65536）。\n\n## 作者\n\n- 作者：LSweetSour\n- 最後編輯：2023/11/27\n- 授權方式：MIT License\n\n## 其他事項\n如有任何問題或建議，請聯繫作者。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyappy2000d%2Fkeypad-scan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyappy2000d%2Fkeypad-scan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyappy2000d%2Fkeypad-scan/lists"}