You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
6.2 KiB

  1. # ใƒ‡ใƒใƒƒใ‚ฐใฎ FAQ
  2. <!---
  3. original document: 0.12.45:docs/faq_debug.md
  4. git diff 0.12.45 HEAD -- docs/faq_debug.md | cat
  5. -->
  6. ใ“ใฎใƒšใƒผใ‚ธใฏใ€ใ‚ญใƒผใƒœใƒผใƒ‰ใฎใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐใซใคใ„ใฆใฎๆง˜ใ€…ใชไธ€่ˆฌ็š„ใช่ณชๅ•ใ‚’่ชฌๆ˜Žใ—ใพใ™ใ€‚
  7. ## ใƒ‡ใƒใƒƒใ‚ฐ :id=debugging
  8. `rules.mk` ใธ `CONSOLE_ENABLE = yes` ใฎ่จญๅฎšใ‚’ใ™ใ‚‹ใจใ‚ญใƒผใƒœใƒผใƒ‰ใฏใƒ‡ใƒใƒƒใ‚ฐๆƒ…ๅ ฑใ‚’ๅ‡บๅŠ›ใ—ใพใ™ใ€‚ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎๅ‡บๅŠ›ใฏ้žๅธธใซ้™ใ‚‰ใ‚ŒใŸใ‚‚ใฎใงใ™ใŒใ€ใƒ‡ใƒใƒƒใ‚ฐใƒขใƒผใƒ‰ใ‚’ใ‚ชใƒณใซใ™ใ‚‹ใ“ใจใงใƒ‡ใƒใƒƒใ‚ฐๆƒ…ๅ ฑใฎ้‡ใ‚’ๅข—ใ‚„ใ™ใ“ใจใŒๅ‡บๆฅใพใ™ใ€‚ใ‚ญใƒผใƒžใƒƒใƒ—ใฎ `DEBUG` ใ‚ญใƒผใ‚ณใƒผใƒ‰ใ‚’ไฝฟ็”จใ™ใ‚‹ใ‹ใ€ใƒ‡ใƒใƒƒใ‚ฐใƒขใƒผใƒ‰ใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹[ใ‚ณใƒžใƒณใƒ‰](ja/feature_command.md)ๆฉŸ่ƒฝใ‚’ไฝฟ็”จใ™ใ‚‹ใ‹ใ€ไปฅไธ‹ใฎใ‚ณใƒผใƒ‰ใ‚’ใ‚ญใƒผใƒžใƒƒใƒ—ใซ่ฟฝๅŠ ใ—ใพใ™ใ€‚
  9. ```c
  10. void keyboard_post_init_user(void) {
  11. // ๅธŒๆœ›ใ™ใ‚‹ๅ‹•ไฝœใซๅˆใ‚ใ›ใฆๅ€คใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บใ—ใพใ™
  12. debug_enable=true;
  13. debug_matrix=true;
  14. //debug_keyboard=true;
  15. //debug_mouse=true;
  16. }
  17. ```
  18. ## ใƒ‡ใƒใƒƒใ‚ฐใƒ„ใƒผใƒซ
  19. ใ‚ญใƒผใƒœใƒผใƒ‰ใฎใƒ‡ใƒใƒƒใ‚ฐใซไฝฟใˆใ‚‹ใƒ„ใƒผใƒซใฏ2ใคใ‚ใ‚Šใพใ™ใ€‚
  20. ### QMK Toolbox ใ‚’ไฝฟใฃใŸใƒ‡ใƒใƒƒใ‚ฐ
  21. ไบ’ๆ›ๆ€งใฎใ‚ใ‚‹็’ฐๅขƒใงใฏใ€[QMK Toolbox](https://github.com/qmk/qmk_toolbox) ใ‚’ไฝฟใ†ใ“ใจใงใ‚ญใƒผใƒœใƒผใƒ‰ใ‹ใ‚‰ใฎใƒ‡ใƒใƒƒใ‚ฐใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’่กจ็คบใงใใพใ™ใ€‚
  22. ### hid_listen ใ‚’ไฝฟใฃใŸใƒ‡ใƒใƒƒใ‚ฐ
  23. ใ‚ฟใƒผใƒŸใƒŠใƒซใƒ™ใƒผใ‚นใฎๆ–นๆณ•ใŒใŠๅฅฝใฟใงใ™ใ‹๏ผŸPJRC ใŒๆไพ›ใ™ใ‚‹ [hid_listen](https://www.pjrc.com/teensy/hid_listen.html) ใ‚‚ใƒ‡ใƒใƒƒใ‚ฐใƒกใƒƒใ‚ปใƒผใ‚ธใฎ่กจ็คบใซไฝฟ็”จใงใใพใ™ใ€‚ใƒ“ใƒซใƒ‰ๆธˆใฟใฎๅฎŸ่กŒใƒ•ใ‚กใ‚คใƒซใฏ Windowsใ€Linuxใ€MacOS ็”จใŒ็”จๆ„ใ•ใ‚Œใฆใ„ใพใ™ใ€‚
  24. ## ็‹ฌ่‡ชใฎใƒ‡ใƒใƒƒใ‚ฐใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’้€ไฟกใ™ใ‚‹
  25. [ใ‚ซใ‚นใ‚ฟใƒ ใ‚ณใƒผใƒ‰](ja/custom_quantum_functions.md)ๅ†…ใ‹ใ‚‰ใƒ‡ใƒใƒƒใ‚ฐใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅ‡บๅŠ›ใ™ใ‚‹ใจไพฟๅˆฉใชๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚ใใ‚Œใฏใจใฆใ‚‚็ฐกๅ˜ใงใ™ใ€‚ใƒ•ใ‚กใ‚คใƒซใฎๅ…ˆ้ ญใซ `print.h` ใฎใ‚คใƒณใ‚ฏใƒซใƒผใƒ‰ใ‚’่ฟฝๅŠ ใ—ใพใ™:
  26. ```c
  27. #include "print.h"
  28. ```
  29. ใใฎๅพŒใฏใ€ใ„ใใคใ‹ใฎ็•ฐใชใฃใŸ print ้–ขๆ•ฐใ‚’ไฝฟ็”จใ™ใ‚‹ใ“ใจใŒๅ‡บๆฅใพใ™:
  30. * `print("string")`: ใ‚ทใƒณใƒ—ใƒซใชๆ–‡ๅญ—ๅˆ—ใ‚’ๅ‡บๅŠ›ใ—ใพใ™
  31. * `uprintf("%s string", var)`: ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ•ใ‚ŒใŸๆ–‡ๅญ—ๅˆ—ใ‚’ๅ‡บๅŠ›ใ—ใพใ™
  32. * `dprint("string")` ใƒ‡ใƒใƒƒใ‚ฐใƒขใƒผใƒ‰ใŒๆœ‰ๅŠนใชๅ ดๅˆใฎใฟใ€ใ‚ทใƒณใƒ—ใƒซใชๆ–‡ๅญ—ๅˆ—ใ‚’ๅ‡บๅŠ›ใ—ใพใ™
  33. * `dprintf("%s string", var)`: ใƒ‡ใƒใƒƒใ‚ฐใƒขใƒผใƒ‰ใŒๆœ‰ๅŠนใชๅ ดๅˆใฎใฟใ€ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใ•ใ‚ŒใŸๆ–‡ๅญ—ๅˆ—ใ‚’ๅ‡บๅŠ›ใ—ใพใ™
  34. ## ใƒ‡ใƒใƒƒใ‚ฐใฎไพ‹
  35. ไปฅไธ‹ใฏ็พๅฎŸไธ–็•ŒใงใฎๅฎŸ้š›ใฎใƒ‡ใƒใƒƒใ‚ฐๆ‰‹ๆณ•ใฎไพ‹ใ‚’้›†ใ‚ใŸใ‚‚ใฎใงใ™ใ€‚
  36. ### ใƒžใƒˆใƒชใƒƒใ‚ฏใ‚นไธŠใฎใฉใฎๅ ดๆ‰€ใงใ‚ญใƒผๆŠผไธ‹ใŒ่ตทใ“ใฃใŸใ‹๏ผŸ
  37. ็งปๆคใ™ใ‚‹ๅ ดๅˆใ‚„ใ€PCB ใฎๅ•้กŒใ‚’่จบๆ–ญใ™ใ‚‹ๅ ดๅˆใ€ใ‚ญใƒผๅ…ฅๅŠ›ใŒๆญฃใ—ใใ‚นใ‚ญใƒฃใƒณใ•ใ‚Œใฆใ„ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’็ขบ่ชใ™ใ‚‹ใ“ใจใŒๅฝน็ซ‹ใคๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใฎๆ‰‹ๆณ•ใงใฎใƒญใ‚ฎใƒณใ‚ฐใ‚’ๆœ‰ๅŠนๅŒ–ใ™ใ‚‹ใซใฏใ€`keymap.c` ใธไปฅไธ‹ใฎใ‚ณใƒผใƒ‰ใ‚’่ฟฝๅŠ ใ—ใพใ™ใ€‚
  38. ```c
  39. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  40. // ใ‚ณใƒณใ‚ฝใƒผใƒซใŒๆœ‰ๅŠนๅŒ–ใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใ€ใƒžใƒˆใƒชใƒƒใ‚ฏใ‚นไธŠใฎไฝ็ฝฎใจใ‚ญใƒผๆŠผไธ‹็Šถๆ…‹ใ‚’ๅ‡บๅŠ›ใ—ใพใ™
  41. #ifdef CONSOLE_ENABLE
  42. 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);
  43. #endif
  44. return true;
  45. }
  46. ```
  47. ๅ‡บๅŠ›ไพ‹
  48. ```text
  49. Waiting for device:.......
  50. Listening:
  51. KL: kc: 169, col: 0, row: 0, pressed: 1
  52. KL: kc: 169, col: 0, row: 0, pressed: 0
  53. KL: kc: 174, col: 1, row: 0, pressed: 1
  54. KL: kc: 174, col: 1, row: 0, pressed: 0
  55. KL: kc: 172, col: 2, row: 0, pressed: 1
  56. KL: kc: 172, col: 2, row: 0, pressed: 0
  57. ```
  58. ### ใ‚ญใƒผใ‚นใ‚ญใƒฃใƒณใซใ‹ใ‹ใ‚‹ๆ™‚้–“ใฎๆธฌๅฎš
  59. ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใฎๅ•้กŒใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅ ดๅˆใ€ใ‚นใ‚คใƒƒใƒใƒžใƒˆใƒชใƒƒใ‚ฏใ‚นใ‚’ใ‚นใ‚ญใƒฃใƒณใ™ใ‚‹้ ปๅบฆใ‚’็Ÿฅใ‚‹ใ“ใจใŒๅฝน็ซ‹ใกใพใ™ใ€‚ใ“ใฎๆ‰‹ๆณ•ใงใฎใƒญใ‚ฎใƒณใ‚ฐใ‚’ๆœ‰ๅŠนๅŒ–ใ™ใ‚‹ใซใฏ `config.h` ใธไปฅไธ‹ใฎใ‚ณใƒผใƒ‰ใ‚’่ฟฝๅŠ ใ—ใพใ™ใ€‚
  60. ```c
  61. #define DEBUG_MATRIX_SCAN_RATE
  62. ```
  63. ๅ‡บๅŠ›ไพ‹
  64. ```text
  65. > matrix scan frequency: 315
  66. > matrix scan frequency: 313
  67. > matrix scan frequency: 316
  68. > matrix scan frequency: 316
  69. > matrix scan frequency: 316
  70. > matrix scan frequency: 316
  71. ```
  72. ## `hid_listen` ใŒใƒ‡ใƒใ‚คใ‚นใ‚’่ช่ญ˜ใงใใชใ„
  73. ใƒ‡ใƒใ‚คใ‚นใฎใƒ‡ใƒใƒƒใ‚ฐใ‚ณใƒณใ‚ฝใƒผใƒซใฎๆบ–ๅ‚™ใŒใงใใฆใ„ใชใ„ๅ ดๅˆใ€ไปฅไธ‹ใฎใ‚ˆใ†ใซ่กจ็คบใ•ใ‚Œใพใ™:
  74. ```
  75. Waiting for device:.........
  76. ```
  77. ใƒ‡ใƒใ‚คใ‚นใŒๆŽฅ็ถšใ•ใ‚Œใ‚‹ใจใ€*hid_listen* ใŒใƒ‡ใƒใ‚คใ‚นใ‚’่ฆ‹ใคใ‘ใ€ไปฅไธ‹ใฎใƒกใƒƒใ‚ปใƒผใ‚ธใŒ่กจ็คบใ•ใ‚Œใพใ™:
  78. ```
  79. Waiting for new device:.........................
  80. Listening:
  81. ```
  82. ใ“ใฎ 'Listening:' ใฎใƒกใƒƒใ‚ปใƒผใ‚ธใŒ่กจ็คบใ•ใ‚Œใชใ„ๅ ดๅˆใฏใ€[Makefile] ใ‚’ `CONSOLE_ENABLE=yes` ใซ่จญๅฎšใ—ใฆใƒ“ใƒซใƒ‰ใ—ใฆใฟใฆใใ ใ•ใ„
  83. Linux ใฎใ‚ˆใ†ใช OS ใงใƒ‡ใƒใ‚คใ‚นใซใ‚ขใ‚ฏใ‚ปใ‚นใ™ใ‚‹ใซใฏใ€็‰นๆจฉใŒๅฟ…่ฆใ‹ใ‚‚ใ—ใ‚Œใพใ›ใ‚“ใ€‚`sudo hid_listen` ใ‚’่ฉฆใ—ใฆใใ ใ•ใ„ใ€‚
  84. ๅคšใใฎ Linux ใƒ‡ใ‚ฃใ‚นใƒˆใƒชใƒ“ใƒฅใƒผใ‚ทใƒงใƒณใงใฏใ€ๆฌกใฎๅ†…ๅฎนใง `/etc/udev/rules.d/70-hid-listen.rules` ใจใ„ใ†ใƒ•ใ‚กใ‚คใƒซใ‚’ไฝœๆˆใ™ใ‚‹ใ“ใจใงใ€root ใจใ—ใฆ hid_listen ใ‚’ๅฎŸ่กŒใ™ใ‚‹ๅฟ…่ฆใŒใชใใชใ‚Šใพใ™:
  85. ```
  86. SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess"
  87. ```
  88. abcd ใจ def1 ใ‚’ใ‚ญใƒผใƒœใƒผใƒ‰ใฎใƒ™ใƒณใƒ€ใƒผใจใƒ—ใƒญใƒ€ใ‚ฏใƒˆ IDใซ็ฝฎใๆ›ใˆใฆใใ ใ•ใ„ใ€‚ๆ–‡ๅญ—ใฏๅฐๆ–‡ๅญ—ใงใชใ‘ใ‚Œใฐใชใ‚Šใพใ›ใ‚“ใ€‚`RUN{builtin}+="uaccess"` ใฎ้ƒจๅˆ†ใฏใ€ๅคใ„ใƒ‡ใ‚ฃใ‚นใƒˆใƒชใƒ“ใƒฅใƒผใ‚ทใƒงใƒณใงใฎใฟๅฟ…่ฆใงใ™ใ€‚
  89. ## ใ‚ณใƒณใ‚ฝใƒผใƒซใซใƒกใƒƒใ‚ปใƒผใ‚ธใŒ่กจ็คบใ•ใ‚Œใชใ„
  90. ไปฅไธ‹ใ‚’่ชฟในใฆใใ ใ•ใ„:
  91. - *hid_listen* ใŒใƒ‡ใƒใ‚คใ‚นใ‚’ๆคœๅ‡บใ™ใ‚‹ใ€‚ไธŠ่จ˜ใ‚’่ฆ‹ใฆใใ ใ•ใ„ใ€‚
  92. - **Magic**+d ใ‚’ไฝฟใฃใฆใƒ‡ใƒใƒƒใ‚ฐใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ใ€‚[ใƒžใ‚ธใƒƒใ‚ฏใ‚ณใƒžใƒณใƒ‰](https://github.com/tmk/tmk_keyboard#magic-commands)ใ‚’่ฆ‹ใฆใใ ใ•ใ„ใ€‚
  93. - `debug_enable=true` ใ‚’่จญๅฎšใ—ใพใ™ใ€‚[ใƒ‡ใƒใƒƒใ‚ฐ](#debugging)ใ‚’่ฆ‹ใฆใใ ใ•ใ„ใ€‚
  94. - ใƒ‡ใƒใƒƒใ‚ฐใƒ—ใƒชใƒณใƒˆใฎไปฃใ‚ใ‚Šใซ `print` ้–ขๆ•ฐใ‚’ไฝฟใฃใฆใฟใฆใใ ใ•ใ„ใ€‚**common/print.h** ใ‚’่ฆ‹ใฆใใ ใ•ใ„ใ€‚
  95. - ใ‚ณใƒณใ‚ฝใƒผใƒซๆฉŸ่ƒฝใ‚’ๆŒใคไป–ใฎใƒ‡ใƒใ‚คใ‚นใ‚’ๅˆ‡ๆ–ญใ—ใพใ™ใ€‚[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97) ใ‚’่ฆ‹ใฆใใ ใ•ใ„ใ€‚