KMKfw / kmk_firmware

Clackety Keyboards Powered by Python
https://kmkfw.zulipchat.com
Other
1.34k stars 462 forks source link

boot.py issues #812

Closed kdkiser closed 1 year ago

kdkiser commented 1 year ago

Describe the bug I built a split dactyl using two Raspberry Pi Picos, running CircuitPython 8.1.0 and a version of KMK from 26 May 2023 on a Win10 PC, everything proceeded as normal until I attempted to modify boot.py. I used the example code from boot.md

`import board

from kmk.bootcfg import bootcfg

bootcfg( sense=board.GP12, # column source=board.GP21, # row midi=False, mouse=False, usb_id=('KMK Keyboards', 'Dactyl Manuform'), )`

which produces the following output

` Press any key to enter the REPL. Use CTRL-D to reload. soft reboot

Auto-reload is on. Simply save files over USB to run them or enter REPL to disable. code.py output: Starting Traceback (most recent call last): File "code.py", line 153, in File "kmk/kmk_keyboard.py", line 472, in go File "kmk/kmk_keyboard.py", line 495, in _init File "kmk/kmk_keyboard.py", line 321, in _init_hid File "kmk/hid.py", line 287, in init File "kmk/hid.py", line 100, in init File "kmk/hid.py", line 296, in hid_send KeyError: 2

Code done running.

Press any key to enter the REPL. Use CTRL-D to reload. `

To Reproduce Steps to reproduce the behavior: I have been able to successfully replicate the error by: 1) Flashing the latest version of CircuitPython 2) Utilize the latest git version of KMK 3) Verify split keyboard is working with only code.py 4) Modify boot.py (and only boot.py, no other changes) 5) Unplug the USB cable to the keyboard and reconnect

Expected behavior I expected the keyboard to function as normal without mounting the USB storage, however the keyboard throws an error at start.

Debug output With debug enabled, I see the following: `28717 kmk.keys: F10: Key(code=67, has_modifiers=None) 28723 kmk.keys: F11: Key(code=68, has_modifiers=None) 28729 kmk.keys: F12: Key(code=69, has_modifiers=None) 28738 kmk.keys: PSCR: Key(code=70, has_modifiers=None) 28746 kmk.keys: SLCK: Key(code=71, has_modifiers=None) 28754 kmk.keys: PAUS: Key(code=72, has_modifiers=None) 28760 kmk.keys: INS: Key(code=73, has_modifiers=None) 28762 kmk.keyboard: Initialising KMKKeyboard 28763 kmk.keyboard: unicode_mode=0 28764 kmk.hid: use 6KRO Traceback (most recent call last): File "code.py", line 153, in File "kmk/kmk_keyboard.py", line 472, in go File "kmk/kmk_keyboard.py", line 495, in _init File "kmk/kmk_keyboard.py", line 321, in _init_hid File "kmk/hid.py", line 287, in init File "kmk/hid.py", line 100, in init File "kmk/hid.py", line 296, in hid_send KeyError: 2

Code done running.

Press any key to enter the REPL. Use CTRL-D to reload. `

Additional context To remedy the situation I was able to implement the example provided with a version of KMK from 01 APR 2023. I did try to modify the boot.py to contain only but the issue persisted. The April version that I was able to successfully use did not have the NKRO code. `import board

from kmk.bootcfg import bootcfg

bootcfg( sense=board.GP12, # column source=board.GP21, # row )` code.txt