diff options
Diffstat (limited to 'docs/zh-cn/api_docs.md')
-rw-r--r-- | docs/zh-cn/api_docs.md | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/docs/zh-cn/api_docs.md b/docs/zh-cn/api_docs.md new file mode 100644 index 000000000..a2df9ec20 --- /dev/null +++ b/docs/zh-cn/api_docs.md | |||
@@ -0,0 +1,73 @@ | |||
1 | # QMK API | ||
2 | |||
3 | <!--- | ||
4 | original document: 0.15.12:docs/api_docs.md | ||
5 | git diff 0.15.12 HEAD -- docs/api_docs.md | cat | ||
6 | --> | ||
7 | |||
8 | 本章节详述了QMK API的使用方法,若您是应用开发者,使用这套API可以实现[QMK](https://qmk.fm)键盘固件的编译支持。 | ||
9 | |||
10 | ## 总览 | ||
11 | |||
12 | 本服务提供了一套用于编译自定义键映射的异步API,通过POST方式发送JSON参数到API,定期检查执行状态,待固件编译完成后,即可下载生成的固件文件和固件的源文件(如果需要的话)。 | ||
13 | |||
14 | #### 荷载JSON参数示例: | ||
15 | |||
16 | ```json | ||
17 | { | ||
18 | "keyboard": "clueboard/66/rev2", | ||
19 | "keymap": "my_awesome_keymap", | ||
20 | "layout": "LAYOUT_all", | ||
21 | "layers": [ | ||
22 | ["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"], | ||
23 | ["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"], | ||
24 | ["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"] | ||
25 | ] | ||
26 | } | ||
27 | ``` | ||
28 | |||
29 | 如上可见,荷载参数里有用于生成固件文件的所有键盘信息。每一个层定义都包含了与键盘 `LAYOUT` 宏定义一致的QMK键码列表数据,若该键盘有多个支持的 `LAYOUT` 宏定义,也可以指定使用的是哪一个。 | ||
30 | |||
31 | ## 提交一个编译job | ||
32 | |||
33 | 若要将键映射配置编译成固件文件,仅需将JSON参数通过POST发送至 `/v1/compile` 节点。下面的示例中我们假设JSON荷载参数已存放在 `json_data` 文件中。 | ||
34 | |||
35 | ``` | ||
36 | $ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" https://api.qmk.fm/v1/compile | ||
37 | { | ||
38 | "enqueued": true, | ||
39 | "job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6" | ||
40 | } | ||
41 | ``` | ||
42 | |||
43 | ## 检查状态 | ||
44 | |||
45 | 键映射配置提交后,可以简单地通过 HTTP GET 请求来查询job状态: | ||
46 | |||
47 | ``` | ||
48 | $ curl https://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6 | ||
49 | { | ||
50 | "created_at": "Sat, 19 Aug 2017 21:39:12 GMT", | ||
51 | "enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT", | ||
52 | "id": "f5f9b992-73b4-479b-8236-df1deb37c163", | ||
53 | "status": "running", | ||
54 | "result": null | ||
55 | } | ||
56 | ``` | ||
57 | |||
58 | 这份信息告诉我们编译job已经提交到队列中且正在执行。job的状态有5种: | ||
59 | |||
60 | * **failed(失败)**: 编译服务出现问题。 | ||
61 | * **finished(完成)**: 编译已完成,`result` 字段中保存了编译结果。 | ||
62 | * **queued(排队中)**: 键映射job在等待可用的编译服务器。 | ||
63 | * **running(执行中)**: 编译进行中,应当很快就会结束。 | ||
64 | * **unknown(未知)**: 出现了较严重的错误,请给我们[提交一个bug](https://github.com/qmk/qmk_compiler/issues). | ||
65 | |||
66 | ## 确认编译产出 | ||
67 | |||
68 | 编译job完成后请查看 `result` 字段,该字段下保存了如下信息项的哈希表数据: | ||
69 | |||
70 | * `firmware_binary_url`: 用于刷写的固件文件URL列表 | ||
71 | * `firmware_keymap_url`: `keymap.c` 文件URL列表 | ||
72 | * `firmware_source_url`: 完整的固件源代码URL列表 | ||
73 | * `output`: 编译job的stdout及stderr输出信息,所有错误信息都会在这里。 | ||