- # ใใใใฐใฎ FAQ
-
- <!---
- original document: 0.12.45:docs/faq_debug.md
- git diff 0.12.45 HEAD -- docs/faq_debug.md | cat
- -->
-
- ใใฎใใผใธใฏใใญใผใใผใใฎใใฉใใซใทใฅใผใใฃใณใฐใซใคใใฆใฎๆงใ
ใชไธ่ฌ็ใช่ณชๅใ่ชฌๆใใพใใ
-
- ## ใใใใฐ :id=debugging
-
- `rules.mk` ใธ `CONSOLE_ENABLE = yes` ใฎ่จญๅฎใใใใจใญใผใใผใใฏใใใใฐๆ
ๅ ฑใๅบๅใใพใใใใใฉใซใใฎๅบๅใฏ้ๅธธใซ้ใใใใใฎใงใใใใใใใฐใขใผใใใชใณใซใใใใจใงใใใใฐๆ
ๅ ฑใฎ้ใๅขใใใใจใๅบๆฅใพใใใญใผใใใใฎ `DEBUG` ใญใผใณใผใใไฝฟ็จใใใใใใใใฐใขใผใใๆๅนใซใใ[ใณใใณใ](ja/feature_command.md)ๆฉ่ฝใไฝฟ็จใใใใไปฅไธใฎใณใผใใใญใผใใใใซ่ฟฝๅ ใใพใใ
-
- ```c
- void keyboard_post_init_user(void) {
- // ๅธๆใใๅไฝใซๅใใใฆๅคใใซในใฟใใคใบใใพใ
- debug_enable=true;
- debug_matrix=true;
- //debug_keyboard=true;
- //debug_mouse=true;
- }
- ```
-
- ## ใใใใฐใใผใซ
-
- ใญใผใใผใใฎใใใใฐใซไฝฟใใใใผใซใฏ2ใคใใใพใใ
-
- ### QMK Toolbox ใไฝฟใฃใใใใใฐ
-
- ไบๆๆงใฎใใ็ฐๅขใงใฏใ[QMK Toolbox](https://github.com/qmk/qmk_toolbox) ใไฝฟใใใจใงใญใผใใผใใใใฎใใใใฐใกใใปใผใธใ่กจ็คบใงใใพใใ
-
- ### hid_listen ใไฝฟใฃใใใใใฐ
-
- ใฟใผใใใซใใผในใฎๆนๆณใใๅฅฝใฟใงใใ๏ผPJRC ใๆไพใใ [hid_listen](https://www.pjrc.com/teensy/hid_listen.html) ใใใใใฐใกใใปใผใธใฎ่กจ็คบใซไฝฟ็จใงใใพใใใใซใๆธใฟใฎๅฎ่กใใกใคใซใฏ WindowsใLinuxใMacOS ็จใ็จๆใใใฆใใพใใ
-
- ## ็ฌ่ชใฎใใใใฐใกใใปใผใธใ้ไฟกใใ
-
- [ใซในใฟใ ใณใผใ](ja/custom_quantum_functions.md)ๅ
ใใใใใใฐใกใใปใผใธใๅบๅใใใจไพฟๅฉใชๅ ดๅใใใใพใใใใใฏใจใฆใ็ฐกๅใงใใใใกใคใซใฎๅ
้ ญใซ `print.h` ใฎใคใณใฏใซใผใใ่ฟฝๅ ใใพใ:
-
- ```c
- #include "print.h"
- ```
-
- ใใฎๅพใฏใใใใคใใฎ็ฐใชใฃใ print ้ขๆฐใไฝฟ็จใใใใจใๅบๆฅใพใ:
-
- * `print("string")`: ใทใณใใซใชๆๅญๅใๅบๅใใพใ
- * `uprintf("%s string", var)`: ใใฉใผใใใใใใๆๅญๅใๅบๅใใพใ
- * `dprint("string")` ใใใใฐใขใผใใๆๅนใชๅ ดๅใฎใฟใใทใณใใซใชๆๅญๅใๅบๅใใพใ
- * `dprintf("%s string", var)`: ใใใใฐใขใผใใๆๅนใชๅ ดๅใฎใฟใใใฉใผใใใใใใๆๅญๅใๅบๅใใพใ
-
- ## ใใใใฐใฎไพ
-
- ไปฅไธใฏ็พๅฎไธ็ใงใฎๅฎ้ใฎใใใใฐๆๆณใฎไพใ้ใใใใฎใงใใ
-
- ### ใใใชใใฏในไธใฎใฉใฎๅ ดๆใงใญใผๆผไธใ่ตทใใฃใใ๏ผ
-
- ็งปๆคใใๅ ดๅใใPCB ใฎๅ้กใ่จบๆญใใๅ ดๅใใญใผๅ
ฅๅใๆญฃใใในใญใฃใณใใใฆใใใใฉใใใ็ขบ่ชใใใใจใๅฝน็ซใคๅ ดๅใใใใพใใใใฎๆๆณใงใฎใญใฎใณใฐใๆๅนๅใใใซใฏใ`keymap.c` ใธไปฅไธใฎใณใผใใ่ฟฝๅ ใใพใใ
-
- ```c
- bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- // ใณใณใฝใผใซใๆๅนๅใใใฆใใๅ ดๅใใใใชใใฏในไธใฎไฝ็ฝฎใจใญใผๆผไธ็ถๆ
ใๅบๅใใพใ
- #ifdef CONSOLE_ENABLE
- uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
- #endif
- return true;
- }
- ```
-
- ๅบๅไพ
- ```text
- Waiting for device:.......
- Listening:
- KL: kc: 169, col: 0, row: 0, pressed: 1
- KL: kc: 169, col: 0, row: 0, pressed: 0
- KL: kc: 174, col: 1, row: 0, pressed: 1
- KL: kc: 174, col: 1, row: 0, pressed: 0
- KL: kc: 172, col: 2, row: 0, pressed: 1
- KL: kc: 172, col: 2, row: 0, pressed: 0
- ```
-
- ### ใญใผในใญใฃใณใซใใใๆ้ใฎๆธฌๅฎ
-
- ใใใฉใผใใณในใฎๅ้กใใในใใใๅ ดๅใในใคใใใใใชใใฏในใในใญใฃใณใใ้ ปๅบฆใ็ฅใใใจใๅฝน็ซใกใพใใใใฎๆๆณใงใฎใญใฎใณใฐใๆๅนๅใใใซใฏ `config.h` ใธไปฅไธใฎใณใผใใ่ฟฝๅ ใใพใใ
-
- ```c
- #define DEBUG_MATRIX_SCAN_RATE
- ```
-
- ๅบๅไพ
- ```text
- > matrix scan frequency: 315
- > matrix scan frequency: 313
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- ```
-
- ## `hid_listen` ใใใใคในใ่ช่ญใงใใชใ
- ใใใคในใฎใใใใฐใณใณใฝใผใซใฎๆบๅใใงใใฆใใชใๅ ดๅใไปฅไธใฎใใใซ่กจ็คบใใใพใ:
-
- ```
- Waiting for device:.........
- ```
-
- ใใใคในใๆฅ็ถใใใใจใ*hid_listen* ใใใใคในใ่ฆใคใใไปฅไธใฎใกใใปใผใธใ่กจ็คบใใใพใ:
-
- ```
- Waiting for new device:.........................
- Listening:
- ```
-
- ใใฎ 'Listening:' ใฎใกใใปใผใธใ่กจ็คบใใใชใๅ ดๅใฏใ[Makefile] ใ `CONSOLE_ENABLE=yes` ใซ่จญๅฎใใฆใใซใใใฆใฟใฆใใ ใใ
-
- Linux ใฎใใใช OS ใงใใใคในใซใขใฏใปในใใใซใฏใ็นๆจฉใๅฟ
่ฆใใใใใพใใใ`sudo hid_listen` ใ่ฉฆใใฆใใ ใใใ
-
- ๅคใใฎ Linux ใใฃในใใชใใฅใผใทใงใณใงใฏใๆฌกใฎๅ
ๅฎนใง `/etc/udev/rules.d/70-hid-listen.rules` ใจใใใใกใคใซใไฝๆใใใใจใงใroot ใจใใฆ hid_listen ใๅฎ่กใใๅฟ
่ฆใใชใใชใใพใ:
-
- ```
- SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess"
- ```
-
- abcd ใจ def1 ใใญใผใใผใใฎใใณใใผใจใใญใใฏใ IDใซ็ฝฎใๆใใฆใใ ใใใๆๅญใฏๅฐๆๅญใงใชใใใฐใชใใพใใใ`RUN{builtin}+="uaccess"` ใฎ้จๅใฏใๅคใใใฃในใใชใใฅใผใทใงใณใงใฎใฟๅฟ
่ฆใงใใ
-
- ## ใณใณใฝใผใซใซใกใใปใผใธใ่กจ็คบใใใชใ
- ไปฅไธใ่ชฟในใฆใใ ใใ:
- - *hid_listen* ใใใใคในใๆคๅบใใใไธ่จใ่ฆใฆใใ ใใใ
- - **Magic**+d ใไฝฟใฃใฆใใใใฐใๆๅนใซใใใ[ใใธใใฏใณใใณใ](https://github.com/tmk/tmk_keyboard#magic-commands)ใ่ฆใฆใใ ใใใ
- - `debug_enable=true` ใ่จญๅฎใใพใใ[ใใใใฐ](#debugging)ใ่ฆใฆใใ ใใใ
- - ใใใใฐใใชใณใใฎไปฃใใใซ `print` ้ขๆฐใไฝฟใฃใฆใฟใฆใใ ใใใ**common/print.h** ใ่ฆใฆใใ ใใใ
- - ใณใณใฝใผใซๆฉ่ฝใๆใคไปใฎใใใคในใๅๆญใใพใใ[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97) ใ่ฆใฆใใ ใใใ
|