qmk_firmware/ja/faq_debug.md

132 lines
6.2 KiB
Markdown
Raw Normal View History

# ใƒ‡ใƒใƒƒใ‚ฐใฎ 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) ใ‚’่ฆ‹ใฆใใ ใ•ใ„ใ€‚